HubSpot synchronization choices
Read provider field labels and separate Wallkit mapping selectors. This catalog does not save field mappings, send member values or change Wallkit membership.
| Task | Operation |
|---|---|
| Read mapping choices | Read choices |
Example clients and synthetic values follow response conventions.
Read synchronization choices
GET /api/v1/integrations/hubspot/sync-fields
Read provider field labels and separate Wallkit mapping selectors. This catalog does not save field mappings, send member values or change Wallkit membership.
Before you call
Use an existing active member and valid resource with custom token and resource headers. Shared guards reject inactive callers and locked/suspended relationships. See credential transport.
Ordinary member ACL permits this action. The initializer checks that the hubspot settings object exists; the adapter takes its api_key value as an OAuth2 token. Object presence does not prove a usable token. Use the existing selected integration context; configured Firebase resolution follows the API context.
Request
No request body or action-specific query parameters.
| Name | Location | Type / requirement | Meaning |
|---|---|---|---|
| resource | header | resource public key; required | Selects existing resource integration. |
| token | header | authorized member session token; required | Resolved caller identity; the prerequisite role requirements still apply. |
Result
HTTP 200 with provider contact-property labels and independent Wallkit selectors. Provider fields come from a synchronous contactProperties all request. Missing response data becomes an empty provider collection. No explicit local catalog cache or pagination loop is used.
| Field | Type / presence | Meaning |
|---|---|---|
| hubspot | map of provider property name to provider label; empty [] possible | Contact property choices such as firstname; no values or saved mapping pairs included. Provider names/types are not normalized to a universal schema. |
| wallkit | sorted array of selector strings | Dynamic model-derived and explicit mapping choices such as User.email; not current values or a universal response schema. Duplicate selectors may remain. |
Example: Inspect provider and Wallkit choices
curl "${WALLKIT_API_BASE}/api/v1/integrations/hubspot/sync-fields" \
-H "resource: ${RESOURCE_KEY}" \
-H "token: ${USER_TOKEN}"
const response = await fetch(`${process.env.WALLKIT_API_BASE}/api/v1/integrations/hubspot/sync-fields`, {
method: "GET", headers: { "resource": process.env.RESOURCE_KEY, "token": process.env.USER_TOKEN }
});
console.log(response.status, await response.json());
import os, json
from urllib.request import Request, urlopen
from urllib.error import HTTPError
request = Request(os.environ["WALLKIT_API_BASE"] + "/api/v1/integrations/hubspot/sync-fields",
headers={"resource": os.environ["RESOURCE_KEY"], "token": os.environ["USER_TOKEN"]}, method="GET")
try:
with urlopen(request) as response:
print(response.status, json.load(response))
except HTTPError as error:
print(error.code, json.load(error))
Synthetic HTTP 200 excerpt:
{
"hubspot": {
"firstname": "First name"
},
"wallkit": [
"User.email"
]
}
The Wallkit selector list is excerpted. Choose meaningful pairs through existing integration configuration; this call does not apply them.
Consequential alternate
Synthetic HTTP 200 excerpt when provider response data is absent:
{
"hubspot": [],
"wallkit": [
"User.email"
]
}
Wallkit selector choices can still exist while the provider catalog is empty. This is not proof of healthy provider configuration.
Recovery
| HTTP status | Code / shape | Cause | Next action |
|---|---|---|---|
| 500 | integration_error / Hobspot integration not configurated | hubspot settings object missing; literal message uses Hobspot. | Ask owner to inspect selected resource’s existing configuration. |
| Shared failure | No stable action-specific provider error shape | Adapter initialization or provider contact-property request throws; no local action catch. | Check the reported condition and existing configured OAuth-token value with the owner. |
Next task
Use the existing integration configuration process to choose mappings. For a separate member preference task, see Mailchimp preferences; these field choices do not authorize a subscription or content-access change.
Follow the task guide
Read the 3rd party integration flows for request order, context choices and response decisions.