openapi: 3.1.0
info:
title: Xpand API
version: 2025-03
tags:
- name: Users
- name: Journeys
- name: User Journeys
- name: Custom Fields
- name: References
- name: Offers (Deprecated)
paths:
/api/v1/job_profiles:
get:
operationId: References_job_profiles
summary: Fetch Job Profiles
description: Fetch a Job Profile
parameters: []
responses:
'204':
description: 'There is no content to send for this request, but the headers may be useful. '
tags:
- References
/api/v1/offer_letters:
get:
operationId: Offers_list
summary: Search Offer Letters
description: Search Offer Letters - Offer Letters are the letters that are sent to candidates.
parameters:
- name: filters
in: query
required: false
schema:
type: object
properties:
ids:
type: string
description: Comma separated list of Xpand Offer IDs
examples:
- 64891c74d5ee1bb16dfdafd8,64891e2ad5ee1bb16dfdafd9
offer_ids:
type: string
description: Comma separated list of Client Offer IDs
examples:
- 64891c74d5ee1bb16dfdafd8,64891e2ad5ee1bb16dfdafd9
user_ids:
type: string
description: Comma separated list of Xpand User IDs
examples:
- 64891c74d5ee1bb16dfdafd8,64891e2ad5ee1bb16dfdafd9
statuses:
type: array
items:
type: string
enum:
- pending_initiation
- pending_approval
- admin_approved
- admin_rejected
- candidate_pending
- candidate_accepted
- candidate_declined
- rescinded
- voided
description: Comma separated list of Offer Statuses
explode: false
- name: page
in: query
required: false
schema:
type: integer
default: 1
explode: false
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Responses.OfferLetterList'
required:
- data
tags:
- Offers (Deprecated)
deprecated: true
post:
operationId: Offers_create
summary: Create/Update Offer Letter
description: Create/Update Offer Letter - Create or update an offer letter.
parameters: []
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Responses.OfferLetterCreate'
required:
- data
tags:
- Offers (Deprecated)
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/Requests.OfferLetterUpsert'
required:
- attributes
required:
- data
deprecated: true
/api/v1/offer_letters/{id}:
delete:
operationId: Offers_delete
summary: Rescind Offer Letter
description: Rescind an offer letter.
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'204':
description: 'There is no content to send for this request, but the headers may be useful. '
tags:
- Offers (Deprecated)
deprecated: true
/api/v1/office_locations:
get:
operationId: References_office_locations
summary: Fetch Office Locations
description: Fetch Office Locations
parameters: []
responses:
'204':
description: 'There is no content to send for this request, but the headers may be useful. '
tags:
- References
/api/v1/users:
get:
operationId: Users_list
summary: Search Users
description: Search Users - Users are the people who are part of the Xpand system.
parameters:
- name: filter
in: query
required: false
schema:
type: object
properties:
ids:
type: string
description: Comma separated list of Xpand User IDs
examples:
- 64891c74d5ee1bb16dfdafd8,64891e2ad5ee1bb16dfdafd9
emails:
type: string
description: Comma separated list of User Emails
examples:
- john@example.com,jane@example.com
explode: false
- name: page
in: query
required: false
schema:
type: integer
default: 1
explode: false
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Responses.UserList'
required:
- data
tags:
- Users
post:
operationId: Users_create
summary: Create User
description: Create a User
parameters: []
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Responses.UserCreate'
required:
- data
tags:
- Users
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/Requests.UserUpsert'
required:
- attributes
required:
- data
/api/v1/users/{id}:
get:
operationId: Users_show
summary: Fetch User
description: Fetch a User
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Responses.UserShow'
required:
- data
tags:
- Users
patch:
operationId: Users_update
summary: Update User
description: Update a User
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Responses.UserUpdate'
required:
- data
tags:
- Users
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/Requests.UserUpsert'
required:
- attributes
required:
- data
/api/v2/custom_fields:
get:
operationId: CustomFields_list
summary: Search Custom Fields
description: Lists custom fields that can be used in user journeys or forms. Custom fields help capture metadata unique to your organization.
parameters:
- name: filters
in: query
required: false
schema:
type: object
properties:
id:
type: string
description: Comma separated list of Custom Field IDs
examples:
- 1234,123456
transition_type:
type: string
description: Comma separated list of Transition Types
examples:
- pre_offer, offer, post_offer, onboarding, offboarding
data_type:
type: string
description: Comma separated list of Data Types
examples:
- string, integer, big_decimal, array, hash, time, date, boolean
active:
type: string
description: Comma separated list of Active
examples:
- true, false
explode: false
- name: offset
in: query
required: false
schema:
type: integer
default: 0
explode: false
- name: limit
in: query
required: false
schema:
type: integer
default: 50
explode: false
- name: order_by
in: query
required: false
schema:
type: string
default: created_at
explode: false
- name: direction
in: query
required: false
schema:
type: string
default: asc
explode: false
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Responses.CustomFieldList'
tags:
- Custom Fields
post:
operationId: CustomFields_create
summary: Create Custom Field
description: Creates a new custom field that can be used in user journeys or forms.
parameters: []
responses:
'201':
description: The request has succeeded and a new resource has been created as a result.
content:
application/json:
schema:
$ref: '#/components/schemas/Responses.CustomFieldCreate'
'422':
description: Client error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
tags:
- Custom Fields
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Requests.CustomFieldCreate'
/api/v2/custom_fields/{id}:
get:
operationId: CustomFields_show
summary: Fetch Custom Field
description: Fetch a Custom Field
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
$ref: '#/components/schemas/Responses.CustomFieldShow'
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
tags:
- Custom Fields
/api/v2/custom_fields/{id}/activate:
patch:
operationId: CustomFields_activate
summary: Activate Custom Field
description: Activates a custom field.
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'200':
description: The request has succeeded.
tags:
- Custom Fields
/api/v2/custom_fields/{id}/deactivate:
patch:
operationId: CustomFields_deactivate
summary: Deactivate Custom Field
description: Deactivates a custom field. This will not delete the custom field, but will make it inactive. Once deactivated it cannot be used in the Create User Journey API
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'200':
description: The request has succeeded.
tags:
- Custom Fields
/api/v2/journeys:
get:
operationId: Journeys_list
summary: Search Journeys
description: Search Journeys - Journeys are the templates that can be used to create user journeys.
parameters:
- name: filters
in: query
required: false
schema:
type: object
properties:
title:
type: string
description: Comma separated list of title
examples:
- Offer, Next Offer
transition_type:
type: string
description: Comma separated list of transition types
examples:
- pre_offer, offer, post_offer, onboarding, offboarding
published:
type: boolean
examples:
- true
explode: false
- name: offset
in: query
required: false
schema:
type: integer
default: 0
explode: false
- name: limit
in: query
required: false
schema:
type: integer
default: 50
explode: false
- name: order_by
in: query
required: false
schema:
type: string
default: created_at
explode: false
- name: direction
in: query
required: false
schema:
type: string
default: asc
explode: false
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Responses.JourneyList'
tags:
- Journeys
/api/v2/journeys/{id}:
get:
operationId: Journeys_show
summary: Fetch Journey
description: Fetch a Journey
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
$ref: '#/components/schemas/Responses.JourneyShow'
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
tags:
- Journeys
/api/v2/user_journeys:
get:
operationId: UserJourneys_list
summary: Search User Journeys
description: Search User Journeys - User Journeys are the journeys that are assigned to a user.
parameters:
- name: filters
in: query
required: false
schema:
type: object
properties:
user_id:
type: string
description: Comma separated list of User IDs
examples:
- 64891c74d5ee1bb16dfdafd8,64891e2ad5ee1bb16dfdafd9
journey_id:
type: string
description: Comma separated list of Journey IDs
examples:
- 64891c74d5ee1bb16dfdafd8,64891e2ad5ee1bb16dfdafd9
office_location_id:
type: string
description: Comma separated list of Office Location IDs
examples:
- 64891c74d5ee1bb16dfdafd8,64891e2ad5ee1bb16dfdafd9
transition_type:
type: string
description: Comma separated list of transition types
examples:
- pre_offer, offer, post_offer, onboarding, offboarding
state:
type: string
description: Comma separated list of states
examples:
- draft, needs_attention, pending_approval, approved, rejected, rescinded, user_pending, submitted, declined, completed, voided
custom_fields:
type: object
properties:
key1:
type: string
key2:
type: string
explode: false
- name: offset
in: query
required: false
schema:
type: integer
default: 0
explode: false
- name: limit
in: query
required: false
schema:
type: integer
default: 50
explode: false
- name: order_by
in: query
required: false
schema:
type: string
default: created_at
explode: false
- name: direction
in: query
required: false
schema:
type: string
default: asc
explode: false
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Responses.UserJourneyList'
tags:
- User Journeys
post:
operationId: UserJourneys_create
summary: Create User Journey
description: Create a User Journey
parameters: []
responses:
'201':
description: The request has succeeded and a new resource has been created as a result.
content:
application/json:
schema:
$ref: '#/components/schemas/Responses.UserJourneyCreate'
'422':
description: Client error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
tags:
- User Journeys
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Requests.UserJourneyCreate'
/api/v2/user_journeys/rescind:
patch:
operationId: UserJourneys_rescindMultiple
summary: Rescind Multiple User Journeys
description: Rescind all rescindable journeys for a user, optionally filtered by transition type. transition_type accepts a comma-separated list and spaces after commas are allowed.
parameters: []
responses:
'204':
description: 'There is no content to send for this request, but the headers may be useful. '
'401':
description: Access is unauthorized.
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
'422':
description: Client error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
tags:
- User Journeys
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Requests.UserJourneyRescindMultiple'
/api/v2/user_journeys/{id}:
get:
operationId: UserJourneys_show
summary: Fetch User Journey
description: Fetch a User Journey
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
$ref: '#/components/schemas/Responses.UserJourneyShow'
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
tags:
- User Journeys
patch:
operationId: UserJourneys_update
summary: Update User Journey
description: Update a User Journey. Cannot update User Journeys with a Voided or Rescinded state
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
$ref: '#/components/schemas/Responses.UserJourneyUpdate'
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
'422':
description: Client error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
tags:
- User Journeys
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Requests.UserJourneyUpdate'
/api/v2/user_journeys/{id}/rescind:
patch:
operationId: UserJourneys_rescind
summary: Rescind Single User Journey
description: Rescind a single user journey by ID. This operation uses rescind_reason only.
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
'204':
description: 'There is no content to send for this request, but the headers may be useful. '
'401':
description: Access is unauthorized.
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
'422':
description: Client error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.ValidationError'
tags:
- User Journeys
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Requests.UserJourneyRescind'
/api/v2/user_journeys/{id}/tasks:
get:
operationId: UserJourneys_tasks
summary: Fetch Tasks for a User Journey
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
type: array
items:
anyOf:
- $ref: '#/components/schemas/Models.Task.TextTask'
- $ref: '#/components/schemas/Models.Task.DocumentTask'
- $ref: '#/components/schemas/Models.Task.VideoTask'
- $ref: '#/components/schemas/Models.Task.I9Task'
- $ref: '#/components/schemas/Models.Task.EmbeddedUrlTask'
- $ref: '#/components/schemas/Models.Task.PowerPointTask'
- $ref: '#/components/schemas/Models.Task.FormBuilderTask'
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors.NotFoundError'
tags:
- User Journeys
security:
- BearerAuth: []
components:
schemas:
Base64:
type: string
format: Base64
examples:
- WW91J3JlIGEgY3VyaW91cyBmZWxsb3cgOy0p
Date:
type: string
format: YYYY-MM-DD
examples:
- '2026-01-01'
DateTime:
type: string
format: iso8601
examples:
- '2026-02-01T01:02:03Z'
Email:
type: string
format: email
examples:
- testing@example.com
Enums.JourneyPublishingState:
type: string
enum:
- unpublished
- published
- draft
examples:
- published
Enums.JourneyTransitionType:
type: string
enum:
- pre_offer
- offer
- post_offer
- onboarding
- offboarding
examples:
- pre_offer
Enums.UserJourneyRescindReason:
type: string
enum:
- no_longer_needed
- offered_externally
examples:
- no_longer_needed
Enums.UserJourneyState:
type: string
enum:
- draft
- needs_attention
- pending_approval
- approved
- rejected
- rescinded
- user_pending
- submitted
- declined
- completed
- voided
examples:
- approved
Errors.NotFoundError:
type: object
required:
- code
- message
properties:
code:
type: string
enum:
- NOT_FOUND
message:
type: string
Errors.ValidationError:
type: object
required:
- code
- message
- details
properties:
code:
type: string
enum:
- VALIDATION_ERROR
message:
type: string
details:
type: array
items:
type: string
Models.Address:
type: object
required:
- city
- country
properties:
line_1:
type: string
examples:
- 31 St, 34 West
line_2:
type: string
examples:
- 8th Avenue
line_3:
type: string
city:
type: string
examples:
- New York
state:
type: string
examples:
- New York
postal_code:
type: string
examples:
- '100018'
country:
type: string
examples:
- USA
current:
type: boolean
examples:
- true
permanent:
type: boolean
examples:
- true
start_date:
$ref: '#/components/schemas/Date'
end_date:
$ref: '#/components/schemas/Date'
Models.Attachment:
type: object
properties:
file_name:
type: string
examples:
- abc.pdf
file_content_base64:
$ref: '#/components/schemas/Base64'
responses:
type: object
properties:
field_name_1:
type: string
examples:
- abc
field_name_2:
type: string
examples:
- cba
description: Responses provided in PDF form fields (only present when attachment is a PDF with form fields)
Models.Document:
type: object
properties:
document_type:
type: string
examples:
- offer_letter
document_number:
type: string
examples:
- '1234'
document_title:
type: string
examples:
- Offer Letter
document_description:
type: string
examples:
- Offer Letter to the Joe
issuer:
type: string
examples:
- Issuer
issuer_city:
type: string
examples:
- New York
issuer_state:
type: string
examples:
- New York
issuer_country:
type: string
examples:
- USA
issued_date:
$ref: '#/components/schemas/Date'
expiry_date:
$ref: '#/components/schemas/Date'
attachments:
type: array
items:
$ref: '#/components/schemas/Models.Attachment'
Models.Education:
type: object
properties:
school_name:
type: string
examples:
- School Name
degree:
type: string
examples:
- Degree
student_id:
type: string
examples:
- '1001'
time_type:
type: string
examples:
- Full Time
major:
type: string
examples:
- Communications
minor:
type: string
examples:
- Publications
gpa:
type: number
format: float
examples:
- 4
specialization:
type: string
examples:
- IT
graduation_date:
$ref: '#/components/schemas/Date'
grade:
type: string
examples:
- A
name_while_attending:
type: string
examples:
- Jon Doe
start_date:
$ref: '#/components/schemas/Date'
end_date:
$ref: '#/components/schemas/Date'
address:
$ref: '#/components/schemas/Models.Address'
attachments:
type: array
items:
$ref: '#/components/schemas/Models.Attachment'
Models.OfficeLocation:
type: object
required:
- id
- city
- country
properties:
id:
$ref: '#/components/schemas/UUID'
external_ids:
type: object
properties:
workday:
type: string
examples:
- LOCATION-3-69
address1:
type: string
examples:
- 123 Main St
address2:
type: string
examples:
- Suite 200
address3:
type: string
examples:
- Building B
city:
type: string
examples:
- New York
state:
type: string
examples:
- NY
region:
type: string
examples:
- Northeast
country:
type: string
examples:
- USA
postal_code:
type: string
examples:
- '10001'
time_zone:
type: string
examples:
- NZT
latitude:
type: number
format: float
examples:
- 3.12332
longitude:
type: number
format: float
examples:
- 3.12332
Models.PhoneNumber:
type: object
properties:
number:
type: string
description: E.164 Format
examples:
- '+14044580998'
type:
type: string
enum:
- mobile
- landline
- unknown
examples:
- mobile
primary:
type: boolean
examples:
- true
Models.Task.DocumentTask:
type: object
required:
- type
- title
- requires_submission
- requires_signature
properties:
type:
type: string
examples:
- document
title:
type: string
examples:
- Offer Letter
description:
type: string
examples:
- Offer Letter
requires_submission:
type: boolean
examples:
- false
requires_signature:
type: boolean
examples:
- false
document:
type: object
properties:
id:
type: string
url:
type: string
file_name:
type: string
required:
- id
- url
- file_name
task_submission:
$ref: '#/components/schemas/Models.TaskSubmission.BaseTaskSubmission'
allOf:
- $ref: '#/components/schemas/Models.Task.UserJourneyTaskBase'
Models.Task.EmbeddedUrlTask:
type: object
allOf:
- $ref: '#/components/schemas/Models.Task.UserJourneyTaskBase'
Models.Task.FormBuilderTask:
type: object
required:
- type
- title
properties:
type:
type: string
examples:
- form_builder
title:
type: string
examples:
- Phone number / Visa / Address / Work Experience / etc.
description:
type: string
examples:
- Form Builder Task
form:
type: object
properties:
id:
type: string
name:
type: string
required:
- id
- name
task_submission:
anyOf:
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderPhoneTaskSubmission'
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderVisaTaskSubmission'
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderAddressTaskSubmission'
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderWorkExperienceTaskSubmission'
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderEducationTaskSubmission'
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderPassportTaskSubmission'
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderBankAccountTaskSubmission'
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderNationalIdTaskSubmission'
allOf:
- $ref: '#/components/schemas/Models.Task.UserJourneyTaskBase'
Models.Task.I9Task:
type: object
allOf:
- $ref: '#/components/schemas/Models.Task.UserJourneyTaskBase'
Models.Task.PowerPointTask:
type: object
allOf:
- $ref: '#/components/schemas/Models.Task.UserJourneyTaskBase'
Models.Task.TextTask:
type: object
required:
- type
- title
- header_value
- footer_value
- requires_submission
- requires_signature
properties:
type:
type: string
examples:
- text
title:
type: string
examples:
- IP Protection and Restrictive Covenant Agreement.
description:
type: string
examples:
- IP Protection and Restrictive Covenant Agreement.
header_value:
type: string
examples:
-
Header value
footer_value:
type: string
examples:
- Footer value
requires_submission:
type: boolean
examples:
- false
requires_signature:
type: boolean
examples:
- false
task_submission:
$ref: '#/components/schemas/Models.TaskSubmission.BaseTaskSubmission'
allOf:
- $ref: '#/components/schemas/Models.Task.UserJourneyTaskBase'
Models.Task.UserJourneyTaskBase:
type: object
required:
- id
- state
- mandatory
properties:
id:
type: string
examples:
- 695f5f8b1b962bf3b327a043
state:
type: string
examples:
- completed
completed_at:
anyOf:
- type: string
- type: 'null'
examples:
- '2026-02-12T06:39:38Z'
mandatory:
type: boolean
examples:
- false
button_label:
type: string
examples:
- Continue
value:
type: string
examples:
- ''
submitted_at:
anyOf:
- type: string
- type: 'null'
examples:
- '2026-02-10'
due_date:
anyOf:
- type: string
- type: 'null'
examples:
- '2026-02-12'
resubmit_date:
anyOf:
- type: string
- type: 'null'
examples:
- '2026-02-14'
return_date:
anyOf:
- type: string
- type: 'null'
examples:
- '2026-02-15'
Models.Task.VideoTask:
type: object
required:
- type
- title
properties:
type:
type: string
examples:
- video
title:
type: string
examples:
- Vimeo
video_type:
type: string
examples:
- Vimeo
description:
type: string
examples:
- Vimeo
video_completion_type:
type: string
examples:
- watched
response_thumbnail:
type: object
properties:
s3_url:
type: string
examples:
- https://xpand-dev-thumbnails.s3.amazonaws.com/
required:
- s3_url
allOf:
- $ref: '#/components/schemas/Models.Task.UserJourneyTaskBase'
Models.TaskSubmission.Address:
type: object
properties:
id:
type: string
examples:
- '12345'
line_1:
type: string
examples:
- 123 Main St
line_2:
type: string
examples:
- Apt 4B
city:
type: string
examples:
- New York
state:
type: string
examples:
- NY
postal_code:
type: string
examples:
- '10001'
country:
type: string
examples:
- US
Models.TaskSubmission.BankAccount:
type: object
properties:
id:
type: string
examples:
- 698d75a9361fc034ace53668
account_type:
type: string
examples:
- Savings
bank_id:
type: string
examples:
- HDFC001
account_number:
type: string
examples:
- '123456789012'
branch_id:
type: string
examples:
- '00123'
check_digit:
type: string
examples:
- '7'
bank_name:
type: string
examples:
- HDFC Bank
bank_account_name:
type: string
examples:
- Rahul Sharma
Models.TaskSubmission.BaseTaskSubmission:
type: object
required:
- state
- responses
properties:
state:
type: string
examples:
- approved
pending_approval_at:
anyOf:
- type: string
- type: 'null'
examples:
- null
approved_at:
anyOf:
- type: string
- type: 'null'
examples:
- '2026-01-08T10:09:58Z'
rejected_at:
anyOf:
- type: string
- type: 'null'
examples:
- null
rejection_reason:
anyOf:
- type: string
- type: 'null'
examples:
- null
responses:
type: object
properties:
checkbox-0:
type: boolean
enum:
- true
signature-0:
type: string
required:
- checkbox-0
- signature-0
addresses:
type: array
prefixItems: []
bank_accounts:
type: array
prefixItems: []
educations:
type: array
prefixItems: []
national_ids:
type: array
prefixItems: []
passports:
type: array
prefixItems: []
work_experiences:
type: array
prefixItems: []
phone_numbers:
type: array
prefixItems: []
visas:
type: array
prefixItems: []
Models.TaskSubmission.Education:
type: object
properties:
id:
type: string
examples:
- 698d75a9361fc034ace53665
school_name:
type: string
examples:
- ABC University
degree:
type: string
examples:
- B.Tech
start_date:
type: string
examples:
- '2015-08-01'
end_date:
type: string
examples:
- '2019-05-01'
major:
type: string
examples:
- Computer Science
graduated:
type: boolean
examples:
- true
graduation_date:
type: string
examples:
- '2019-05-01'
gpa:
type: string
examples:
- '8.5'
marksheet_url:
type: string
examples:
- https://xpand-dev-journeys.s3.amazonaws.com/marksheet.pdf
degree_url:
type: string
examples:
- https://xpand-dev-journeys.s3.amazonaws.com/degree_certificate.pdf
Models.TaskSubmission.FormBuilderAddressTaskSubmission:
type: object
required:
- addresses
- responses
properties:
bank_accounts:
type: array
prefixItems: []
educations:
type: array
prefixItems: []
national_ids:
type: array
prefixItems: []
passports:
type: array
prefixItems: []
work_experiences:
type: array
prefixItems: []
phone_numbers:
type: array
prefixItems: []
visas:
type: array
prefixItems: []
addresses:
type: array
items:
$ref: '#/components/schemas/Models.TaskSubmission.Address'
responses:
type: object
properties:
694927bb4f1f89b0642be6fe:
type: array
prefixItems:
- type: string
enum:
- 698d75a9361fc034ace53660
required:
- 694927bb4f1f89b0642be6fe
allOf:
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderBaseTaskSubmission'
Models.TaskSubmission.FormBuilderBankAccountTaskSubmission:
type: object
required:
- bank_accounts
- responses
properties:
addresses:
type: array
prefixItems: []
educations:
type: array
prefixItems: []
national_ids:
type: array
prefixItems: []
passports:
type: array
prefixItems: []
work_experiences:
type: array
prefixItems: []
phone_numbers:
type: array
prefixItems: []
visas:
type: array
prefixItems: []
bank_accounts:
type: array
items:
$ref: '#/components/schemas/Models.TaskSubmission.BankAccount'
responses:
type: object
properties:
694927bb4f1f89b0642be6fe:
type: array
prefixItems:
- type: string
enum:
- 698d75a9361fc034ace53660
required:
- 694927bb4f1f89b0642be6fe
allOf:
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderBaseTaskSubmission'
Models.TaskSubmission.FormBuilderBaseTaskSubmission:
type: object
required:
- state
properties:
state:
type: string
examples:
- approved
pending_approval_at:
anyOf:
- type: string
- type: 'null'
examples:
- null
approved_at:
anyOf:
- type: string
- type: 'null'
examples:
- '2026-01-08T10:09:58Z'
rejected_at:
anyOf:
- type: string
- type: 'null'
examples:
- null
rejection_reason:
anyOf:
- type: string
- type: 'null'
examples:
- null
Models.TaskSubmission.FormBuilderEducationTaskSubmission:
type: object
required:
- educations
- responses
properties:
addresses:
type: array
prefixItems: []
bank_accounts:
type: array
prefixItems: []
national_ids:
type: array
prefixItems: []
passports:
type: array
prefixItems: []
work_experiences:
type: array
prefixItems: []
phone_numbers:
type: array
prefixItems: []
visas:
type: array
prefixItems: []
educations:
type: array
items:
$ref: '#/components/schemas/Models.TaskSubmission.Education'
responses:
type: object
properties:
694927bb4f1f89b0642be6fe:
type: array
prefixItems:
- type: string
enum:
- 698d75a9361fc034ace53660
required:
- 694927bb4f1f89b0642be6fe
allOf:
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderBaseTaskSubmission'
Models.TaskSubmission.FormBuilderNationalIdTaskSubmission:
type: object
required:
- national_ids
- responses
properties:
addresses:
type: array
prefixItems: []
bank_accounts:
type: array
prefixItems: []
educations:
type: array
prefixItems: []
passports:
type: array
prefixItems: []
work_experiences:
type: array
prefixItems: []
phone_numbers:
type: array
prefixItems: []
visas:
type: array
prefixItems: []
national_ids:
type: array
items:
$ref: '#/components/schemas/Models.TaskSubmission.NationalId'
responses:
type: object
properties:
694927bb4f1f89b0642be6fe:
type: array
prefixItems:
- type: string
enum:
- 698d75a9361fc034ace53660
required:
- 694927bb4f1f89b0642be6fe
allOf:
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderBaseTaskSubmission'
Models.TaskSubmission.FormBuilderPassportTaskSubmission:
type: object
required:
- passports
- responses
properties:
addresses:
type: array
prefixItems: []
bank_accounts:
type: array
prefixItems: []
educations:
type: array
prefixItems: []
national_ids:
type: array
prefixItems: []
work_experiences:
type: array
prefixItems: []
phone_numbers:
type: array
prefixItems: []
visas:
type: array
prefixItems: []
passports:
type: array
items:
$ref: '#/components/schemas/Models.TaskSubmission.Passport'
responses:
type: object
properties:
694927bb4f1f89b0642be6fe:
type: array
prefixItems:
- type: string
enum:
- 698d75a9361fc034ace53660
required:
- 694927bb4f1f89b0642be6fe
allOf:
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderBaseTaskSubmission'
Models.TaskSubmission.FormBuilderPhoneTaskSubmission:
type: object
required:
- phone_numbers
- responses
properties:
addresses:
type: array
prefixItems: []
bank_accounts:
type: array
prefixItems: []
educations:
type: array
prefixItems: []
national_ids:
type: array
prefixItems: []
passports:
type: array
prefixItems: []
work_experiences:
type: array
prefixItems: []
visas:
type: array
prefixItems: []
phone_numbers:
type: array
items:
$ref: '#/components/schemas/Models.TaskSubmission.PhoneNumber'
responses:
type: object
properties:
694927bb4f1f89b0642be6fe:
type: array
prefixItems:
- type: string
enum:
- 698d75a9361fc034ace53660
required:
- 694927bb4f1f89b0642be6fe
allOf:
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderBaseTaskSubmission'
Models.TaskSubmission.FormBuilderVisaTaskSubmission:
type: object
required:
- visas
- responses
properties:
addresses:
type: array
prefixItems: []
bank_accounts:
type: array
prefixItems: []
educations:
type: array
prefixItems: []
national_ids:
type: array
prefixItems: []
passports:
type: array
prefixItems: []
work_experiences:
type: array
prefixItems: []
phone_numbers:
type: array
prefixItems: []
visas:
type: array
items:
$ref: '#/components/schemas/Models.TaskSubmission.Visa'
responses:
type: object
properties:
694927bb4f1f89b0642be6fe:
type: array
prefixItems:
- type: string
enum:
- 698d75a9361fc034ace53660
required:
- 694927bb4f1f89b0642be6fe
allOf:
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderBaseTaskSubmission'
Models.TaskSubmission.FormBuilderWorkExperienceTaskSubmission:
type: object
required:
- work_experiences
- responses
properties:
addresses:
type: array
prefixItems: []
bank_accounts:
type: array
prefixItems: []
educations:
type: array
prefixItems: []
national_ids:
type: array
prefixItems: []
passports:
type: array
prefixItems: []
phone_numbers:
type: array
prefixItems: []
visas:
type: array
prefixItems: []
work_experiences:
type: array
items:
$ref: '#/components/schemas/Models.TaskSubmission.WorkExperience'
responses:
type: object
properties:
694927bb4f1f89b0642be6fe:
type: array
prefixItems:
- type: string
enum:
- 698d75a9361fc034ace53660
required:
- 694927bb4f1f89b0642be6fe
allOf:
- $ref: '#/components/schemas/Models.TaskSubmission.FormBuilderBaseTaskSubmission'
Models.TaskSubmission.NationalId:
type: object
properties:
id:
type: string
examples:
- 698d75a9361fc034ace53667
national_id:
type: string
examples:
- A123456789
issuing_agency:
type: string
examples:
- National Identity Authority
country_iso2:
type: string
examples:
- IN
Models.TaskSubmission.Passport:
type: object
properties:
id:
type: string
examples:
- 698d75a9361fc034ace53666
number:
type: string
examples:
- N1234567
issue_country:
type: string
examples:
- India
issued_date:
type: string
examples:
- '2018-06-15'
expiry_date:
type: string
examples:
- '2028-06-14'
type:
type: string
examples:
- Regular
issuing_authority:
type: string
examples:
- Ministry of External Affairs
passport_url:
type: string
examples:
- https://xpand-dev-journeys.s3.amazonaws.com/passport.pdf
Models.TaskSubmission.PhoneNumber:
type: object
properties:
id:
type: string
examples:
- 698d61f5361fc034ace53231
phone_type:
type: string
examples:
- mobile
country_code:
anyOf:
- type: string
- type: 'null'
examples:
- '+91'
phone_number:
type: string
examples:
- '0701234567'
Models.TaskSubmission.Visa:
type: object
properties:
id:
type: string
examples:
- 698d75a9361fc034ace53662
number:
type: string
examples:
- '1234567890'
visa_type:
type: string
examples:
- unknown_type
visa_issue_country:
type: string
examples:
- IN
issued_date:
type: string
examples:
- '2025-01-02'
expiry_date:
type: string
examples:
- '2035-01-02'
issuing_authority:
type: string
examples:
- ''
place_of_issue:
type: string
examples:
- Hyderabad
visa_s3_url:
type: string
examples:
- https://xpand-dev-journeys.s3.amazonaws.com/
Models.TaskSubmission.WorkExperience:
type: object
properties:
id:
type: string
examples:
- 698d75a9361fc034ace53664
employer:
type: string
examples:
- XYZ Corp
start_date:
type: string
examples:
- '2020-01-01'
end_date:
type: string
examples:
- '2023-01-01'
current:
type: boolean
examples:
- true
job_title:
type: string
examples:
- Software Engineer
department:
type: string
examples:
- Engineering
relieving_letter_url:
type: string
examples:
- https://xpand-dev-journeys.s3.amazonaws.com/relieving_letter.pdf
service_certificate_url:
type: string
examples:
- https://xpand-dev-journeys.s3.amazonaws.com/service_certificate.pdf
resignation_acceptance_url:
type: string
examples:
- https://xpand-dev-journeys.s3.amazonaws.com/resignation_acceptance.pdf
other_document_url:
type: string
examples:
- https://xpand-dev-journeys.s3.amazonaws.com/other_document.pdf
Models.WorkExperience:
type: object
properties:
employer:
type: string
examples:
- Employer
employee_id:
type: string
examples:
- 'E1234'
current:
type: boolean
examples:
- true
job_title:
type: string
examples:
- Engineer
department:
type: string
examples:
- Department
employment_type:
type: string
examples:
- Regular
reason_for_leaving:
type: string
examples:
- Change in technology
salary:
type: integer
examples:
- 10000
manager_name:
type: string
examples:
- Manager 1
manager_phone:
type: string
examples:
- '+14044578776'
manager_email:
$ref: '#/components/schemas/Email'
hr_name:
type: string
examples:
- HR 1
hr_phone:
type: string
examples:
- '+14044578777'
hr_email:
$ref: '#/components/schemas/Email'
start_date:
$ref: '#/components/schemas/Date'
end_date:
$ref: '#/components/schemas/Date'
address:
$ref: '#/components/schemas/Models.Address'
attachments:
type: array
items:
$ref: '#/components/schemas/Models.Attachment'
Requests.CustomFieldCreate:
type: object
required:
- transition_type
- name
- key
- data_type
- mandatory
- allowed_values
- list_of_values_map_id
- created_at
- allowed_rule_set_types
- allowed_placeholder_type
properties:
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
name:
type: string
examples:
- Start date
key:
type: string
examples:
- '1234'
data_type:
type: string
examples:
- Datetime
mandatory:
type: boolean
examples:
- false
mapping:
type: string
examples:
- salutation, nickname, title, university, current_location, employee_id, profile_photo_url, division, hire_type, company_code, relocation_type, job_profile_id
validation_rule:
type: string
examples:
- regexp, list_of_values_map, list, previous_date_time, future_date_time, workday_job_profile, workday_organization
regexp_pattern:
type: string
description: Required if validation_rule is regexp
examples:
- ^[a-zA-Z0-9]+$
allowed_values:
type: array
items:
type: string
description: Required if validation_rule is list
examples:
- - a
- b
- c
list_of_values_map_id:
type: string
description: Required if validation_rule is list_of_values_map
examples:
- LegalEntityLOV - refer to References API for more details
created_at:
type: string
examples:
- '2025-01-01'
deactivated:
type: boolean
examples:
- false
rule_settable:
type: boolean
description: Used in Assignment Rules
examples:
- false
placeholderable:
type: boolean
description: Used in placeholders
examples:
- false
allowed_rule_set_types:
type: array
items:
type: string
examples:
- - journey
- module
- child_module
- task
- communication
- report
allowed_placeholder_type:
type: array
items:
type: string
examples:
- - journey
- communication
- html_editor_task
workday_organization_type:
type: string
description: Required if validation_rule is workday_organization
examples:
- Supervisory, Pay_Group, Cost_Center, Company, Cost_Center_Hierarchy, Location_Hierarchy, External_Payroll_Company, Company_Hierarchy
Requests.OfferLetterUpsert:
type: object
required:
- user_id
- offer_id
- job_application_id
- office_location_id
- start_date
properties:
user_id:
$ref: '#/components/schemas/UUID'
offer_id:
type: string
description: Unique ID of the Offer
examples:
- O3112-333
job_application_id:
type: string
description: Unique ID of the Job Application
examples:
- J-O3112
office_location_id:
type: object
properties:
workday:
type: string
examples:
- LOCATION-3-69
description: "JSON where key is name of external service, e.g. {'HRIS_ID': 'NEWYORK'. There must be an office location in Xpand with a matching employee id. See reference values here for existing office location external ids"
start_date:
$ref: '#/components/schemas/Date'
description: Start date of the new hire
legal_entity:
type: string
description: See reference values here for existing legal entity values.
examples:
- Xpand Limited
job_title:
type: string
description: Job Title of the offer
examples:
- Steamboat Captain
currency:
type: string
description: ISO 4217 Currency Code
examples:
- USD
base_salary:
type: integer
description: Basic Salary
examples:
- 45000
end_date:
$ref: '#/components/schemas/Date'
description: End date of the new hire
induction_date:
$ref: '#/components/schemas/Date'
description: Induction Date
expiration_date:
$ref: '#/components/schemas/Date'
description: Expiration date of an offer
offer_dispositioned:
type: string
description: dispositioning the offer
examples:
- 'Y'
campus:
type: string
examples:
- 'Y'
compensation:
type: integer
description: Total compensation of the offer (Base + Bonus + Allowes)
examples:
- 100000
non_compete_duration:
type: integer
examples:
- 0
supplemental_non_compete_duration:
type: integer
examples:
- 1
flsa_status:
type: string
description: Exempt/Non-Exempt NY/CA wage forms
examples:
- Exempt
respond_by_date:
$ref: '#/components/schemas/Date'
description: Date by when action to be taken on offer
attorney_only:
type: boolean
examples:
- true
confidential:
type: boolean
examples:
- true
regulated:
type: boolean
examples:
- true
regulated_status:
type: string
examples:
- Active
smcr:
type: boolean
description: identify if someone is Senior Manager
examples:
- true
job_profile_id:
type: string
examples:
- Job Family
business_unit_id:
type: string
examples:
- Business Unit
department_code:
type: string
examples:
- Department Code
position_type:
type: string
examples:
- Position Type
pay_rate:
type: string
examples:
- Pay Rate
job_level:
type: string
examples:
- Level 1
cost_center_id:
type: string
examples:
- Cost Center
time_type:
type: string
examples:
- Full Time
employee_type:
type: string
examples:
- Regular
job_code:
type: string
examples:
- Engineer
target_salary:
type: integer
examples:
- 10000
max_salary:
type: integer
examples:
- 100000
rsu:
type: integer
examples:
- 5000
annual_bonus_percent:
type: integer
examples:
- 10
signing_bonus_amount:
type: integer
examples:
- 7000
commission_amount:
type: integer
examples:
- 3000
car_allowance:
type: integer
examples:
- 1000
relocation:
type: boolean
examples:
- true
relocation_flex_allowance:
type: integer
examples:
- 2000
work_from_home:
type: boolean
examples:
- false
immigration:
type: boolean
examples:
- false
visa_sponsorship_notes:
type: string
examples:
- Clear
urgent:
type: boolean
examples:
- false
is_exempt:
type: boolean
examples:
- false
notes:
type: string
examples:
- Ready to send the offer
documents:
type: array
items:
$ref: '#/components/schemas/Models.Document'
Requests.UserJourneyCreate:
type: object
properties:
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
user_id:
anyOf:
- $ref: '#/components/schemas/UUID'
- type: object
properties:
workday:
type: string
examples:
- LOCATION-3-69
state:
$ref: '#/components/schemas/Enums.UserJourneyState'
expiration_date:
$ref: '#/components/schemas/Date'
office_location_id:
anyOf:
- $ref: '#/components/schemas/UUID'
- type: object
properties:
workday:
type: string
examples:
- LOCATION-3-69
custom_fields:
type: object
unevaluatedProperties:
type: string
examples:
- key1: Hello
key2: World
documents:
type: array
items:
type: object
properties:
document_type:
type: string
examples:
- offer_letter
document_number:
type: string
examples:
- '1234'
document_title:
type: string
examples:
- Offer Letter
document_description:
type: string
examples:
- Offer Letter to the Joe
attachments:
type: array
items:
type: object
properties:
file_name:
type: string
examples:
- abc.pdf
file_content_base64:
$ref: '#/components/schemas/Base64'
Requests.UserJourneyRescind:
type: object
required:
- rescind_reason
properties:
rescind_reason:
$ref: '#/components/schemas/Enums.UserJourneyRescindReason'
description: Reason for rescinding the user journey.
examples:
- no_longer_needed
Requests.UserJourneyRescindMultiple:
type: object
required:
- rescind_reason
- user_id
properties:
transition_type:
type: string
description: Optional comma-separated list of transition types. Spaces after commas are allowed. Allowed values are pre_offer, offer, post_offer, onboarding, offboarding.
examples:
- pre_offer, offer, post_offer, onboarding, offboarding
rescind_reason:
$ref: '#/components/schemas/Enums.UserJourneyRescindReason'
description: Reason for rescinding the journey(s). One of no_longer_needed, offered_externally.
examples:
- no_longer_needed
user_id:
type: string
description: ID of the user whose journeys will be rescinded.
examples:
- 6949f4dcea80bfa3cb3c21d7
Requests.UserJourneyUpdate:
type: object
properties:
expiration_date:
$ref: '#/components/schemas/Date'
office_location_id:
anyOf:
- $ref: '#/components/schemas/UUID'
- type: object
properties:
workday:
type: string
examples:
- LOCATION-3-69
custom_fields:
type: object
unevaluatedProperties:
type: string
examples:
- key1: Hello
key2: World
documents:
type: array
items:
type: object
properties:
document_type:
type: string
examples:
- offer_letter
document_number:
type: string
examples:
- '1234'
document_title:
type: string
examples:
- Offer Letter
document_description:
type: string
examples:
- Offer Letter to the Joe
attachments:
type: array
items:
type: object
properties:
file_name:
type: string
examples:
- abc.pdf
file_content_base64:
$ref: '#/components/schemas/Base64'
Requests.UserUpsert:
type: object
required:
- email
- first_name
- last_name
- start_date
- employee_type
- candidate_status
- cost_center_id
- external_ids
- office_location_id
- recruiter_ids
properties:
email:
$ref: '#/components/schemas/Email'
description: 'Must be a valid email address. Must be unique for each user. Non case-sensitive. Regex validation: ^(?!...)[a-zA-Z0-9][\w-.]@[A-Za-z\d-]+(.[A-Za-z\d-]+)*.[A-Za-z]+$'
work_email:
$ref: '#/components/schemas/Email'
description: 'Must be a valid email address. Must be unique for each user. Non case-sensitive. Regex validation: ^(?!...)[a-zA-Z0-9][\w-.]@[A-Za-z\d-]+(.[A-Za-z\d-]+)*.[A-Za-z]+$'
first_name:
type: string
description: Must not contain numbers or any of the following special characters !@#$%^&*()
examples:
- Daniel
last_name:
type: string
description: Must not contain numbers or any of the following special characters !@#$%^&*()
examples:
- Smith
middle_name:
type: string
description: Must not contain numbers or any of the following special characters !@#$%^&*()
examples:
- Jones
start_date:
$ref: '#/components/schemas/Date'
description: 'Format: YYYY-MM-DD. Can be present, or future dates only.'
employee_type:
type: string
description: See reference values here for allowed employee type values.
examples:
- Regular
candidate_status:
type: string
description: See reference values here for allowed candidate status values.
examples:
- offer_accepted
legal_entity:
type: string
description: See reference values here for existing legal entity values.
examples:
- Xpand Limited
cost_center_id:
type: string
description: See reference values here for existing cost center values.
examples:
- Cost Center
relocation_type:
type: string
description: Allowes the relocation type values.
examples:
- global_relocation
blocked:
type: boolean
description: Disable or enable a user account in Xpand.
examples:
- false
reason_blocked:
type: string
description: A brief description of why the user why the user account is being disabled in Xpand
examples:
- Inactive in ATS System
external_ids:
type: object
properties:
ats_id:
type: string
examples:
- A-1234
hris_id:
type: string
examples:
- 'E-1234'
description: This is the collection of unique id of the Applicant Tracking System (ATS) and employee id of the Human Resource Information Systems (HRIS)
office_location_id:
type: object
properties:
workday:
type: string
examples:
- LOCATION-3-69
description: "JSON where key is name of external service, e.g. {'HRIS_ID': 'NEWYORK'. There must be an office location in Xpand with a matching employee id. See reference values here for existing office location external ids"
recruiter_ids:
type: object
properties:
recruiter:
type: object
properties:
hris_id:
type: string
examples:
- R-1111
recruiting_coordinator:
type: object
properties:
hris_id:
type: string
examples:
- R-2222
recruiting_manager:
type: object
properties:
hris_id:
type: string
examples:
- R-3333
description: "JSON where key is name of external service, e.g. {:recruiter=>{'HRIS_SYS'=>'12345'}, recruiting_manager=>{'HRIS_SYS'=>'56789'}} (There must be a recruiter in Xpand or HRIS_SYS(Ex: workday) with a matching employee id)"
manager_ids:
type: object
properties:
hris_id:
type: array
items:
type: string
examples:
- - M-1111
- M-2222
description: "JSON where key is name of external service, e.g. {'HRIS_SYS': ['123456', '45678']} (There must be a manager in Xpand or HRIS with a matching employee id)"
documents:
type: array
items:
$ref: '#/components/schemas/Models.Document'
educations:
type: array
items:
$ref: '#/components/schemas/Models.Education'
work_experiences:
type: array
items:
$ref: '#/components/schemas/Models.WorkExperience'
addresses:
type: array
items:
$ref: '#/components/schemas/Models.Address'
phone_numbers:
type: array
items:
$ref: '#/components/schemas/Models.PhoneNumber'
Responses.CustomFieldCreate:
type: object
required:
- id
- transition_type
- name
- key
- data_type
- mandatory
- allowed_values
- list_of_values_map_id
- created_at
- allowed_rule_set_types
- allowed_placeholder_type
properties:
id:
$ref: '#/components/schemas/UUID'
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
name:
type: string
examples:
- Start date
key:
type: string
examples:
- '1234'
data_type:
type: string
examples:
- Datetime
mandatory:
type: boolean
examples:
- false
mapping:
type: string
examples:
- salutation, nickname, title, university, current_location, employee_id, profile_photo_url, division, hire_type, company_code, relocation_type, job_profile_id
validation_rule:
type: string
examples:
- regexp, list_of_values_map, list, previous_date_time, future_date_time, workday_job_profile, workday_organization
regexp_pattern:
type: string
description: Required if validation_rule is regexp
examples:
- ^[a-zA-Z0-9]+$
allowed_values:
type: array
items:
type: string
description: Required if validation_rule is list
examples:
- - a
- b
- c
list_of_values_map_id:
type: string
description: Required if validation_rule is list_of_values_map
examples:
- LegalEntityLOV - refer to References API for more details
created_at:
type: string
examples:
- '2025-01-01'
deactivated:
type: boolean
examples:
- false
rule_settable:
type: boolean
description: Used in Assignment Rules
examples:
- false
placeholderable:
type: boolean
description: Used in placeholders
examples:
- false
allowed_rule_set_types:
type: array
items:
type: string
examples:
- - journey
- module
- child_module
- task
- communication
- report
allowed_placeholder_type:
type: array
items:
type: string
examples:
- - journey
- communication
- html_editor_task
workday_organization_type:
type: string
description: Required if validation_rule is workday_organization
examples:
- Supervisory, Pay_Group, Cost_Center, Company, Cost_Center_Hierarchy, Location_Hierarchy, External_Payroll_Company, Company_Hierarchy
Responses.CustomFieldList:
type: object
required:
- id
- transition_type
- name
- key
- data_type
- mandatory
- allowed_values
- list_of_values_map_id
- created_at
- allowed_rule_set_types
- allowed_placeholder_type
properties:
id:
$ref: '#/components/schemas/UUID'
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
name:
type: string
examples:
- Start date
key:
type: string
examples:
- '1234'
data_type:
type: string
examples:
- Datetime
mandatory:
type: boolean
examples:
- false
mapping:
type: string
examples:
- salutation, nickname, title, university, current_location, employee_id, profile_photo_url, division, hire_type, company_code, relocation_type, job_profile_id
validation_rule:
type: string
examples:
- regexp, list_of_values_map, list, previous_date_time, future_date_time, workday_job_profile, workday_organization
regexp_pattern:
type: string
description: Required if validation_rule is regexp
examples:
- ^[a-zA-Z0-9]+$
allowed_values:
type: array
items:
type: string
description: Required if validation_rule is list
examples:
- - a
- b
- c
list_of_values_map_id:
type: string
description: Required if validation_rule is list_of_values_map
examples:
- LegalEntityLOV - refer to References API for more details
created_at:
type: string
examples:
- '2025-01-01'
deactivated:
type: boolean
examples:
- false
rule_settable:
type: boolean
description: Used in Assignment Rules
examples:
- false
placeholderable:
type: boolean
description: Used in placeholders
examples:
- false
allowed_rule_set_types:
type: array
items:
type: string
examples:
- - journey
- module
- child_module
- task
- communication
- report
allowed_placeholder_type:
type: array
items:
type: string
examples:
- - journey
- communication
- html_editor_task
workday_organization_type:
type: string
description: Required if validation_rule is workday_organization
examples:
- Supervisory, Pay_Group, Cost_Center, Company, Cost_Center_Hierarchy, Location_Hierarchy, External_Payroll_Company, Company_Hierarchy
Responses.CustomFieldShow:
type: object
required:
- id
- transition_type
- name
- key
- data_type
- mandatory
- allowed_values
- list_of_values_map_id
- created_at
- allowed_rule_set_types
- allowed_placeholder_type
properties:
id:
$ref: '#/components/schemas/UUID'
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
name:
type: string
examples:
- Start date
key:
type: string
examples:
- '1234'
data_type:
type: string
examples:
- Datetime
mandatory:
type: boolean
examples:
- false
mapping:
type: string
examples:
- salutation, nickname, title, university, current_location, employee_id, profile_photo_url, division, hire_type, company_code, relocation_type, job_profile_id
validation_rule:
type: string
examples:
- regexp, list_of_values_map, list, previous_date_time, future_date_time, workday_job_profile, workday_organization
regexp_pattern:
type: string
description: Required if validation_rule is regexp
examples:
- ^[a-zA-Z0-9]+$
allowed_values:
type: array
items:
type: string
description: Required if validation_rule is list
examples:
- - a
- b
- c
list_of_values_map_id:
type: string
description: Required if validation_rule is list_of_values_map
examples:
- LegalEntityLOV - refer to References API for more details
created_at:
type: string
examples:
- '2025-01-01'
deactivated:
type: boolean
examples:
- false
rule_settable:
type: boolean
description: Used in Assignment Rules
examples:
- false
placeholderable:
type: boolean
description: Used in placeholders
examples:
- false
allowed_rule_set_types:
type: array
items:
type: string
examples:
- - journey
- module
- child_module
- task
- communication
- report
allowed_placeholder_type:
type: array
items:
type: string
examples:
- - journey
- communication
- html_editor_task
workday_organization_type:
type: string
description: Required if validation_rule is workday_organization
examples:
- Supervisory, Pay_Group, Cost_Center, Company, Cost_Center_Hierarchy, Location_Hierarchy, External_Payroll_Company, Company_Hierarchy
Responses.JourneyList:
type: object
required:
- id
- transition_type
- publishing_state
- title
- created_at
properties:
id:
$ref: '#/components/schemas/UUID'
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
publishing_state:
$ref: '#/components/schemas/Enums.JourneyPublishingState'
title:
type: string
created_at:
$ref: '#/components/schemas/DateTime'
Responses.JourneyShow:
type: object
required:
- id
- transition_type
- publishing_state
- title
- created_at
properties:
id:
$ref: '#/components/schemas/UUID'
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
publishing_state:
$ref: '#/components/schemas/Enums.JourneyPublishingState'
title:
type: string
created_at:
$ref: '#/components/schemas/DateTime'
Responses.OfferLetterCreate:
type: object
required:
- id
properties:
id:
$ref: '#/components/schemas/UUID'
Responses.OfferLetterList:
type: object
required:
- id
- user_id
- offer_id
- job_application_id
- office_location_id
- start_date
properties:
id:
$ref: '#/components/schemas/UUID'
user_id:
$ref: '#/components/schemas/UUID'
offer_id:
type: string
description: Unique ID of the Offer
examples:
- O3112-333
job_application_id:
type: string
description: Unique ID of the Job Application
examples:
- J-O3112
office_location_id:
type: object
properties:
workday:
type: string
examples:
- LOCATION-3-69
description: "JSON where key is name of external service, e.g. {'HRIS_ID': 'NEWYORK'. There must be an office location in Xpand with a matching employee id. See reference values here for existing office location external ids"
start_date:
$ref: '#/components/schemas/Date'
description: Start date of the new hire
legal_entity:
type: string
description: See reference values here for existing legal entity values.
examples:
- Xpand Limited
job_title:
type: string
description: Job Title of the offer
examples:
- Steamboat Captain
currency:
type: string
description: ISO 4217 Currency Code
examples:
- USD
base_salary:
type: integer
description: Basic Salary
examples:
- 45000
end_date:
$ref: '#/components/schemas/Date'
description: End date of the new hire
induction_date:
$ref: '#/components/schemas/Date'
description: Induction Date
expiration_date:
$ref: '#/components/schemas/Date'
description: Expiration date of an offer
offer_dispositioned:
type: string
description: dispositioning the offer
examples:
- 'Y'
campus:
type: string
examples:
- 'Y'
compensation:
type: integer
description: Total compensation of the offer (Base + Bonus + Allowes)
examples:
- 100000
non_compete_duration:
type: integer
examples:
- 0
supplemental_non_compete_duration:
type: integer
examples:
- 1
flsa_status:
type: string
description: Exempt/Non-Exempt NY/CA wage forms
examples:
- Exempt
respond_by_date:
$ref: '#/components/schemas/Date'
description: Date by when action to be taken on offer
attorney_only:
type: boolean
examples:
- true
confidential:
type: boolean
examples:
- true
regulated:
type: boolean
examples:
- true
regulated_status:
type: string
examples:
- Active
smcr:
type: boolean
description: identify if someone is Senior Manager
examples:
- true
job_profile_id:
type: string
examples:
- Job Family
business_unit_id:
type: string
examples:
- Business Unit
department_code:
type: string
examples:
- Department Code
position_type:
type: string
examples:
- Position Type
pay_rate:
type: string
examples:
- Pay Rate
job_level:
type: string
examples:
- Level 1
cost_center_id:
type: string
examples:
- Cost Center
time_type:
type: string
examples:
- Full Time
employee_type:
type: string
examples:
- Regular
job_code:
type: string
examples:
- Engineer
target_salary:
type: integer
examples:
- 10000
max_salary:
type: integer
examples:
- 100000
rsu:
type: integer
examples:
- 5000
annual_bonus_percent:
type: integer
examples:
- 10
signing_bonus_amount:
type: integer
examples:
- 7000
commission_amount:
type: integer
examples:
- 3000
car_allowance:
type: integer
examples:
- 1000
relocation:
type: boolean
examples:
- true
relocation_flex_allowance:
type: integer
examples:
- 2000
work_from_home:
type: boolean
examples:
- false
immigration:
type: boolean
examples:
- false
visa_sponsorship_notes:
type: string
examples:
- Clear
urgent:
type: boolean
examples:
- false
is_exempt:
type: boolean
examples:
- false
notes:
type: string
examples:
- Ready to send the offer
documents:
type: array
items:
$ref: '#/components/schemas/Models.Document'
Responses.UserCreate:
type: object
required:
- id
properties:
id:
$ref: '#/components/schemas/UUID'
Responses.UserJourneyCreate:
type: object
required:
- id
- journey_id
- user_id
- transition_type
- state
- created_at
- expiration_date
- office_location
- custom_field_values
properties:
id:
$ref: '#/components/schemas/UUID'
journey_id:
$ref: '#/components/schemas/UUID'
user_id:
$ref: '#/components/schemas/UUID'
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
state:
$ref: '#/components/schemas/Enums.UserJourneyState'
created_at:
$ref: '#/components/schemas/Date'
expiration_date:
$ref: '#/components/schemas/Date'
office_location:
anyOf:
- $ref: '#/components/schemas/Models.OfficeLocation'
- type: 'null'
custom_field_values:
type: array
items:
type: object
properties:
id:
type: string
examples:
- '1234'
value:
type: string
examples:
- custom field value
name:
type: string
examples:
- custom field name
key:
type: string
examples:
- '1234'
Responses.UserJourneyList:
type: object
required:
- id
- journey_id
- user_id
- transition_type
- state
- created_at
- expiration_date
- office_location
- custom_field_values
properties:
id:
$ref: '#/components/schemas/UUID'
journey_id:
$ref: '#/components/schemas/UUID'
user_id:
$ref: '#/components/schemas/UUID'
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
state:
$ref: '#/components/schemas/Enums.UserJourneyState'
created_at:
$ref: '#/components/schemas/Date'
expiration_date:
$ref: '#/components/schemas/Date'
office_location:
anyOf:
- $ref: '#/components/schemas/Models.OfficeLocation'
- type: 'null'
custom_field_values:
type: array
items:
type: object
properties:
id:
type: string
examples:
- '1234'
value:
type: string
examples:
- custom field value
name:
type: string
examples:
- custom field name
key:
type: string
examples:
- '1234'
Responses.UserJourneyShow:
type: object
required:
- id
- journey_id
- user_id
- transition_type
- state
- created_at
- expiration_date
- office_location
- custom_field_values
properties:
id:
$ref: '#/components/schemas/UUID'
journey_id:
$ref: '#/components/schemas/UUID'
user_id:
$ref: '#/components/schemas/UUID'
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
state:
$ref: '#/components/schemas/Enums.UserJourneyState'
created_at:
$ref: '#/components/schemas/Date'
expiration_date:
$ref: '#/components/schemas/Date'
office_location:
anyOf:
- $ref: '#/components/schemas/Models.OfficeLocation'
- type: 'null'
custom_field_values:
type: array
items:
type: object
properties:
id:
type: string
examples:
- '1234'
value:
type: string
examples:
- custom field value
name:
type: string
examples:
- custom field name
key:
type: string
examples:
- '1234'
Responses.UserJourneyUpdate:
type: object
required:
- id
- journey_id
- user_id
- transition_type
- state
- created_at
- expiration_date
- office_location
- custom_field_values
properties:
id:
$ref: '#/components/schemas/UUID'
journey_id:
$ref: '#/components/schemas/UUID'
user_id:
$ref: '#/components/schemas/UUID'
transition_type:
$ref: '#/components/schemas/Enums.JourneyTransitionType'
state:
$ref: '#/components/schemas/Enums.UserJourneyState'
created_at:
$ref: '#/components/schemas/Date'
expiration_date:
$ref: '#/components/schemas/Date'
office_location:
anyOf:
- $ref: '#/components/schemas/Models.OfficeLocation'
- type: 'null'
custom_field_values:
type: array
items:
type: object
properties:
id:
type: string
examples:
- '1234'
value:
type: string
examples:
- custom field value
name:
type: string
examples:
- custom field name
key:
type: string
examples:
- '1234'
Responses.UserList:
type: object
required:
- id
- first_name
- last_name
- email
- start_date
- external_ids
- office_location_id
- recruiter_ids
properties:
id:
$ref: '#/components/schemas/UUID'
first_name:
type: string
examples:
- John
last_name:
type: string
examples:
- Doe
email:
$ref: '#/components/schemas/Email'
start_date:
$ref: '#/components/schemas/Date'
external_ids:
type: object
properties:
ats_id:
type: string
examples:
- A-1234
hris_id:
type: string
examples:
- 'E-1234'
office_location_id:
type: object
properties:
workday:
type: string
examples:
- LOCATION-3-69
recruiter_ids:
type: object
properties:
recruiter:
type: object
properties:
hris_id:
type: string
examples:
- R-1111
recruiting_coordinator:
type: object
properties:
hris_id:
type: string
examples:
- R-2222
recruiting_manager:
type: object
properties:
hris_id:
type: string
examples:
- R-3333
manager_ids:
type: object
properties:
hris_id:
type: array
items:
type: string
examples:
- - M-1111
- M-2222
documents:
type: array
items:
$ref: '#/components/schemas/Models.Document'
educations:
type: array
items:
$ref: '#/components/schemas/Models.Education'
work_experiences:
type: array
items:
$ref: '#/components/schemas/Models.WorkExperience'
addresses:
type: array
items:
$ref: '#/components/schemas/Models.Address'
phone_numbers:
type: array
items:
$ref: '#/components/schemas/Models.PhoneNumber'
Responses.UserShow:
type: object
required:
- id
- first_name
- last_name
- email
- start_date
- external_ids
- office_location_id
- recruiter_ids
properties:
id:
$ref: '#/components/schemas/UUID'
first_name:
type: string
examples:
- John
last_name:
type: string
examples:
- Doe
email:
$ref: '#/components/schemas/Email'
start_date:
$ref: '#/components/schemas/Date'
external_ids:
type: object
properties:
ats_id:
type: string
examples:
- A-1234
hris_id:
type: string
examples:
- 'E-1234'
office_location_id:
type: object
properties:
workday:
type: string
examples:
- LOCATION-3-69
recruiter_ids:
type: object
properties:
recruiter:
type: object
properties:
hris_id:
type: string
examples:
- R-1111
recruiting_coordinator:
type: object
properties:
hris_id:
type: string
examples:
- R-2222
recruiting_manager:
type: object
properties:
hris_id:
type: string
examples:
- R-3333
manager_ids:
type: object
properties:
hris_id:
type: array
items:
type: string
examples:
- - M-1111
- M-2222
documents:
type: array
items:
$ref: '#/components/schemas/Models.Document'
educations:
type: array
items:
$ref: '#/components/schemas/Models.Education'
work_experiences:
type: array
items:
$ref: '#/components/schemas/Models.WorkExperience'
addresses:
type: array
items:
$ref: '#/components/schemas/Models.Address'
phone_numbers:
type: array
items:
$ref: '#/components/schemas/Models.PhoneNumber'
Responses.UserUpdate:
type: object
required:
- id
properties:
id:
$ref: '#/components/schemas/UUID'
UUID:
type: string
format: uuid
examples:
- 69ae0e64b02bfe73a44ca479
securitySchemes:
BearerAuth:
type: http
scheme: Bearer