Skip to main content
The Custom Fields API exposes the same capabilities as the dashboard. For the concepts see the Custom Fields overview. For the visual route see Dashboard Configuration. The page walks the flow end to end with example requests and responses, using a running example: extending the employee model with a guardian_mobile field, populated from a Workday connector.

Authentication

All Custom Fields endpoints are scoped to your organization and require a Bearer token:

Step 1: Discover models and integrations

Use the lookup endpoints, List Models and List Integrations, to fetch the slugs you’ll need. These are filtered to what your organization actually has access to.
Example responses
Connector tokens (used for connector level mappings) are not returned by any lookup endpoint. They are issued when a connector is created and surfaced through the connector flow.

Step 2: Inspect the raw upstream payload

Before you write a JMESPath, look at the shape of the upstream JSON. The Get Raw Data endpoint returns either the connector’s latest synced row or a canned sample for the integration if no connector is provided (or if it has not synced yet).
Example response
In this example, data.employee.guardian_mobile is the JMESPath you’ll want to use. The Preview endpoint evaluates a JMESPath against real connector data without persisting anything. Use this to catch typos and confirm the resolved value type before you save the mapping.
Request body
Response
raw_data_source will be one of:
  • "connector_sync" — evaluated against the connector’s latest synced row.
  • "integration_sample" — connector hasn’t synced yet, fell back to the canned sample.
  • "inline" — the request supplied an inline raw_data payload to evaluate against.
resolved_value_type will be one of: string, number, boolean, object, array, null.

Step 4: Create the custom field

Once you’re confident in your JMESPath, register the field itself with Create Custom Field. The field is just a typed slot on the (category, model) — it carries no mapping yet.
Request body
Response
name must be snake_case, between 2 and 128 characters, and unique within the (category, model). Fields created here appear with source: "API" when listed.

Step 5: Create a mapping

A mapping pairs the custom field with a JMESPath. Send it to Create Mapping. What you send decides its type: integration_slug for an integration level mapping, connector_token for a connector level one. See Type of mapping.
Applies to every Workday connector in your organization.
Request body
Response
Provide exactly one of integration_slug or connector_token. To change the type of an existing mapping, delete it and create a new one — only json_path is mutable via update.

Step 6: Verify the effective configuration

The Get Configuration endpoint returns every custom field for a given (connector, category, model) together with the effective mapping in use. Connector level mappings override integration level ones, and unmapped fields are included with json_path: null so you can see what’s still left to configure.
Response
Each entry’s source indicates which mapping is winning:
  • "connector" — a connector level mapping is in effect.
  • "organization" — no connector override; the integration level mapping is being inherited. The response still uses the older organization wording for this mapping type.
  • null — no mapping is configured for this field on this connector.

Updating and deleting

Next steps

Retrieve custom fields

Add include_custom_fields=true to your unified requests.

Best practices

Naming, scoping, and automation guidance.