openapi: 3.1.0
info:
title: Kombo AI Apply Unified ATS API API
version: 1.0.0
description: Endpoints for AI-powered job application features.
servers:
- url: https://api.kombo.dev/v1
description: Kombo EU API
- url: https://api.us.kombo.dev/v1
description: Kombo US API
security:
- ApiKey: []
tags:
- name: Unified ATS API
description: Unified endpoints to access all the ATS concepts you might need.
paths:
/ats/applications:
get:
operationId: GetAtsApplications
summary: Get applications
description: 'Retrieve all applications.
Visit our in-depth guides to learn more about:
- 💡 [Being aware of which applications are tracked](/ats/features/implementation-guide/tracking-created-applications#be-aware-of-which-applications-are-tracked)
- 🚦 [Hiring signals](/ats/features/implementation-guide/tracking-created-applications#hiring-signals)
- 📈 [Application stage changes](/ats/features/implementation-guide/tracking-created-applications#application-stage-changes)
- ❓ [ATS-specific limitations](/ats/features/implementation-guide/tracking-created-applications#ats-specific-limitations)
Top level filters use AND, while individual filters use OR if they accept multiple arguments. That means filters will be resolved like this: `(id IN ids) AND (remote_id IN remote_ids)`'
tags:
- Unified ATS API
parameters:
- in: header
name: X-Integration-Id
schema:
type: string
description: ID of the integration you want to interact with.
example: join:HWUTwvyx2wLoSUHphiWVrp28
required: true
- name: cursor
in: query
required: false
description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterCursor'
- name: page_size
in: query
required: false
description: The number of results to return per page. Maximum is 250.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterPageSize'
- name: updated_after
in: query
required: false
description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged.
If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden.
For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior).
For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below.
| Path | Added/Removed | Linked Record |
| --- | --- | --- |
| `candidate` | n/a | ✓ Yes |
| `candidate` → `tags` | ✗ No | ✗ No |
| `current_stage` | n/a | ✓ Yes |
| `job` | ✗ No | ✗ No |
| `interviews` | ✓ Yes | ✓ Yes |
| `offers` | ✓ Yes | ✓ Yes |
_**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._'
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterUpdatedAfter'
- name: include_deleted
in: query
required: false
description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterIncludeDeleted'
- name: ignore_unsupported_filters
in: query
required: false
description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterIgnoreUnsupportedFilters'
- name: ids
in: query
required: false
description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterIds'
- name: remote_ids
in: query
required: false
description: Filter by a comma-separated list of remote IDs.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterRemoteIds'
- name: outcome
in: query
required: false
description: '**(⚠️ Deprecated - Use the `outcomes` filter instead.)** Filter applications by outcome. This allows you to get applications that are for example `PENDING`, `HIRED`, or `DECLINED`.'
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterOutcome'
- name: outcomes
in: query
required: false
description: "Filter by a comma-separated list of `PENDING`, `HIRED`, `DECLINED` \n* `PENDING`: The application is still being processed. \n* `HIRED`: The candidate was hired. \n* `DECLINED`: The candidate was declined. \n \n\nLeave this blank to get results matching all values."
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterOutcomes'
- name: job_ids
in: query
required: false
description: Filter by a comma-separated list of job IDs. We will only return applications that are related to _any_ of the jobs.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterJobIds'
- name: job_remote_ids
in: query
required: false
description: Filter by a comma-separated list of job remote IDs. We will only return applications that are related to _any_ of the jobs.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterJobRemoteIds'
- name: current_stage_ids
in: query
required: false
description: Filter by a comma-separated list of application stage IDs. We will only return applications that are currently in _any_ of the stages.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterCurrentStageIds'
- name: remote_created_after
in: query
required: false
description: Filter applications by the day they were created in the remote system. This allows you to get applications that were created on or after a certain day.
schema:
$ref: '#/components/schemas/GetAtsApplicationsParameterRemoteCreatedAfter'
responses:
'200':
description: GET /ats/applications Positive response
content:
application/json:
schema:
$ref: '#/components/schemas/GetAtsApplicationsPositiveResponse'
examples:
example1:
value:
status: success
data:
next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0=
results:
- id: H77fDF8uvEzGNPRubiz5DvQ7
remote_id: '32'
outcome: HIRED
rejection_reason_name: null
rejected_at: null
current_stage_id: 5J7L4b48wBfffYwek9Az9pkM
job_id: H5daSm8e85Dmvmne3wLeCPhX
candidate_id: 26vafvWSRmbhNcxJYqjCzuJg
screening_question_answers:
- answer:
choice: TypeScript
question:
remote_id: 48b4d36a-1d4b-4c50-ada7-9519078e65b4
title: Which is your primary programming language
type: SINGLE_SELECT
custom_fields: {}
integration_fields: []
remote_url: https://app.greenhouse.io/applications/32
changed_at: '2022-08-07T14:01:29.196Z'
remote_deleted_at: null
remote_created_at: '2022-08-07T14:01:29.196Z'
remote_updated_at: '2022-08-07T14:01:29.196Z'
remote_data: null
candidate:
id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
first_name: John
last_name: Doe
email_addresses:
- email_address: john.doe@example.com
type: PRIVATE
phone_numbers:
- phone_number: +1-541-754-3010
type: HOME
social_media:
- link: https://www.youtube.com/watch?v=dQw4w9WgXcQ
type: YOUTUBE
username: null
source: Employee Referral
remote_url: https://app.greenhouse.io/people/32
tags:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
name: High Potential
current_stage:
id: 5J7L4b48wBfffYwek9Az9pkM
remote_id: '32'
name: Initial Screening
index: 2
job:
id: H5daSm8e85Dmvmne3wLeCPhX
remote_id: '32'
name: Backend Engineer
interviews:
- id: 26vafvWSRmbhNcxJYqjCzuJg
remote_id: '32'
title: Interview with John Doe
starting_at: '2023-06-26T14:30:00.000Z'
ending_at: '2023-06-26T15:30:00.000Z'
location:
city: Berlin
country: DE
raw: Berlin, Germany
state: Berlin
street_1: Lohmühlenstraße 65
street_2: null
zip_code: '12435'
canceled: false
offers:
- id: 76bab8LKuFtqpZ89mofCPMHX
remote_id: '6'
status: ACCEPTED
default:
$ref: '#/components/responses/ErrorResponseATS'
/ats/applications/{application_id}/stage:
put:
operationId: PutAtsApplicationsApplicationIdStage
summary: Move application to stage
description: "Moves an application to a specified stage. Use job-specific stages from GET /jobs, not the deprecated /application-stages endpoint.\n\n
Kombo is hiring engineers! If you are reading this and you are located in Berlin, Germany, feel free to contact us about this position.
confidential: false weekly_hours: 37 employment_type: FULL_TIME status: OPEN visibility: PUBLIC category: Technical Job department: Engineering post_url: https://jobs.example.com/post/159829112 experience_level: Mid-Senior remote_work_status: HYBRID salary_amount: 4200 salary_amount_from: null salary_amount_to: null salary_currency: EUR salary_period: MONTH location: city: Berlin country: DE raw: Berlin, Germany state: Berlin street_1: Lohmühlenstraße 65 street_2: null zip_code: '12435' custom_fields: {} integration_fields: [] remote_url: https://app.greenhouse.io/jobs/32 opened_at: '2022-08-07T14:01:29.196Z' closed_at: null remote_created_at: '2022-08-07T14:01:29.196Z' remote_updated_at: '2022-08-07T14:01:29.196Z' contact_id: 6gT2yLMBEipd3zpezATv3Rhu remote_data: null changed_at: '2022-08-07T14:01:29.196Z' remote_deleted_at: null stages: - id: 5J7L4b48wBfffYwek9Az9pkM remote_id: '32' name: Initial Screening remote_data: null index: 0 screening_questions: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: 48b4d36a-1d4b-4c50-ada7-9519078e65b4 title: Which is your primary programming language? description: Please enter the language you are most comfortable with. format: display_type: SINGLE_LINE max_length: null type: TEXT category: null index: 0 required: true precondition_question_id: 4ZVteCSSgDw3BdwGzcQqGEPk precondition_options: - 7qd5qjPwDHarsMLFMGzXYG1K job_postings: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: 48b4d36a-1d4b-4c50-ada7-9519078e65b4 title: Frontend Engineer description_html:We are looking for a Frontend Engineer.
status: ACTIVE visibility: PUBLIC url: https://jobs.example.com/post/159829112 remote_data: null hiring_team: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe email: john.doe@kombo.dev hiring_team_roles: - RECRUITER job_roles: - remote_id: '32' remote_label: Hiring Manager scope: JOB unified_type: HIRING_MANAGER default: $ref: '#/components/responses/ErrorResponseATS' /ats/jobs/{job_id}/applications: post: operationId: PostAtsJobsJobIdApplications summary: Create application description: "Create a new application and candidate for the specified job.\n\nVisit our in-depth guides to learn more about:\n\n- \U0001F310 [Setting the source of the application](/ats/features/implementation-guide/creating-applications#set-the-source-of-the-application) \n- \U0001F4CE [Uploading attachments with the application](/ats/features/implementation-guide/creating-applications#upload-attachments-with-the-application) \n- ♻️ [Retry behaviour](/ats/features/implementation-guide/creating-applications#retry-behaviour) \n- ✏️ [Writing answers to screening questions](/ats/features/implementation-guide/creating-applications#write-answers-to-screening-questions) \n- ⚠️ [Handling ATS-specific limitations](/ats/features/implementation-guide/creating-applications#handle-ats-specific-limitations)\n\nWe are looking for a Frontend Engineer.
status: ACTIVE visibility: PUBLIC url: https://jobs.example.com/post/159829112 remote_data: null hiring_team: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. first_name: type: - string - 'null' description: First name of the user. last_name: type: - string - 'null' description: Last name of the user. email: type: - string - 'null' pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$ description: Email of the user. If the email address is invalid, it will be set to null. hiring_team_roles: type: array items: type: string enum: - RECRUITER - HIRING_MANAGER - COORDINATOR - SOURCER - INTERVIEWER examples: - RECRUITER description: '**(⚠️ Deprecated - Use `job_roles` to access the full list of job roles.)** Array of the roles of the user for this specific job. Currently only `RECRUITER` and `HIRING_MANAGER` are mapped into our unified schema.' job_roles: type: array items: type: object properties: remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. remote_label: type: - string - 'null' description: The label of the role. scope: type: - string - 'null' enum: - SYSTEM - JOB examples: - JOB description: Whether the role applies globally or is scoped to a specific job. unified_type: type: - string - 'null' enum: - HIRING_MANAGER - RECRUITER - COORDINATOR - SOURCER - INTERVIEWER - ADMIN description: Unified role type if Kombo can map it. required: - remote_id - remote_label - scope - unified_type examples: - remote_id: '32' remote_label: Hiring Manager scope: JOB unified_type: HIRING_MANAGER - remote_id: '32' remote_label: Hiring Manager scope: JOB unified_type: HIRING_MANAGER description: 'Roles assigned to this user for this job. Visit our in-depth guide about [roles](/ats/features/roles) to learn more. Use `system_roles` on the `/v1/ats/users` endpoint for system-wide roles.' required: - id - remote_id - first_name - last_name - hiring_team_roles - job_roles description: The hiring team allows you to sync users into your system who can access the job and its applications. required: - id - remote_id - name - job_code - description - confidential - weekly_hours - category - department - post_url - experience_level - salary_amount - salary_amount_from - salary_amount_to - salary_currency - custom_fields - integration_fields - remote_url - opened_at - closed_at - remote_created_at - remote_updated_at - contact_id - remote_data - changed_at - remote_deleted_at - stages - screening_questions - job_postings - hiring_team required: - next - results examples: - next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0= results: - id: H5daSm8e85Dmvmne3wLeCPhX remote_id: '32' name: Backend Engineer job_code: BE-2021-01 description:Kombo is hiring engineers! If you are reading this and you are located in Berlin, Germany, feel free to contact us about this position.
confidential: false weekly_hours: 37 employment_type: FULL_TIME status: OPEN visibility: PUBLIC category: Technical Job department: Engineering post_url: https://jobs.example.com/post/159829112 experience_level: Mid-Senior remote_work_status: HYBRID salary_amount: 4200 salary_amount_from: null salary_amount_to: null salary_currency: EUR salary_period: MONTH location: city: Berlin country: DE raw: Berlin, Germany state: Berlin street_1: Lohmühlenstraße 65 street_2: null zip_code: '12435' custom_fields: {} integration_fields: [] remote_url: https://app.greenhouse.io/jobs/32 opened_at: '2022-08-07T14:01:29.196Z' closed_at: null remote_created_at: '2022-08-07T14:01:29.196Z' remote_updated_at: '2022-08-07T14:01:29.196Z' contact_id: 6gT2yLMBEipd3zpezATv3Rhu remote_data: null changed_at: '2022-08-07T14:01:29.196Z' remote_deleted_at: null stages: - id: 5J7L4b48wBfffYwek9Az9pkM remote_id: '32' name: Initial Screening remote_data: null index: 0 screening_questions: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: 48b4d36a-1d4b-4c50-ada7-9519078e65b4 title: Which is your primary programming language? description: Please enter the language you are most comfortable with. format: display_type: SINGLE_LINE max_length: null type: TEXT category: null index: 0 required: true precondition_question_id: 4ZVteCSSgDw3BdwGzcQqGEPk precondition_options: - 7qd5qjPwDHarsMLFMGzXYG1K job_postings: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: 48b4d36a-1d4b-4c50-ada7-9519078e65b4 title: Frontend Engineer description_html:We are looking for a Frontend Engineer.
status: ACTIVE visibility: PUBLIC url: https://jobs.example.com/post/159829112 remote_data: null hiring_team: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe email: john.doe@kombo.dev hiring_team_roles: - RECRUITER job_roles: - remote_id: '32' remote_label: Hiring Manager scope: JOB unified_type: HIRING_MANAGER required: - status - data PostAtsApplicationsApplicationIdResultLinksParameterApplicationId: type: string description: The Kombo ID of the application you want to create the link for. GetAtsUsersParameterRemoteIds: type: string description: Filter by a comma-separated list of remote IDs. GetAtsOffersParameterCursor: type: string description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response. PostAtsApplicationsApplicationIdRejectParameterApplicationId: type: string description: The Kombo ID of the application you want to reject. GetAtsCandidatesParameterIncludeDeleted: type: string enum: - 'true' - 'false' default: 'false' description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too. GetAtsInterviewsParameterIds: type: string description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`. GetAtsApplicationStagesParameterCursor: type: string description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response. PostAtsApplicationsApplicationIdAttachmentsParameterApplicationId: type: string GetAtsRolesParameterIncludeDeleted: type: string enum: - 'true' - 'false' default: 'false' description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too. PostAtsCandidatesCandidateIdResultLinksParameterCandidateId: type: string description: The Kombo ID of the candidate you want to add the result link to. GetAtsRolesParameterPageSize: type: integer format: int64 minimum: 1 maximum: 250 default: 100 description: The number of results to return per page. Maximum is 250. GetAtsActionsAtsAddCandidateAttachmentPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: attachment_restrictions: type: - object - 'null' properties: types: type: object properties: CV: anyOf: - type: object properties: is_supported: type: boolean const: true max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for CV. COVER_LETTER: anyOf: - type: object properties: is_supported: type: boolean const: true max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for COVER_LETTER. OTHER: anyOf: - type: object properties: is_supported: type: boolean const: true max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for OTHER. required: - CV - COVER_LETTER - OTHER required: - types description: Restrictions with attachment types that we know about. If this is null, we don't have information which types are supported. examples: - attachment_restrictions: types: CV: is_supported: false COVER_LETTER: is_supported: false OTHER: is_supported: true max_file_size_bytes: 10485760 accepted_mime_types: - application/pdf - application/msword required: - status - data GetAtsRolesPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: next: type: - string - 'null' description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages. results: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. remote_label: type: - string - 'null' description: The label of the role. scope: type: - string - 'null' enum: - SYSTEM - JOB examples: - JOB description: Whether the role applies globally or is scoped to a specific job. unified_type: type: - string - 'null' enum: - HIRING_MANAGER - RECRUITER - COORDINATOR - SOURCER - INTERVIEWER - ADMIN description: Unified role type if Kombo can map it. remote_data: type: - object - 'null' additionalProperties: true description: 'Includes the data fetched from the remote system. Please be aware that including this in you scope config might violate other scopes that are set. Remote data always has the endpoint path that we got the data from as the top level key. For example, it could look like: `{ "/companies": { ... }}` This is not available on all plans. Reach out to Kombo if you need it.' changed_at: description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated. type: string format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_deleted_at: description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString required: - id - remote_id - remote_label - scope - unified_type - remote_data - changed_at - remote_deleted_at examples: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' remote_label: Hiring Manager scope: JOB unified_type: HIRING_MANAGER remote_data: null changed_at: '2022-08-07T14:01:29.196Z' remote_deleted_at: null required: - next - results examples: - next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0= results: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' remote_label: Hiring Manager scope: JOB unified_type: HIRING_MANAGER remote_data: null changed_at: '2022-08-07T14:01:29.196Z' remote_deleted_at: null required: - status - data GetAtsRolesParameterCursor: type: string description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response. GetAtsRejectionReasonsParameterIgnoreUnsupportedFilters: type: string enum: - 'true' - 'false' default: 'false' description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results. GetAtsJobsParameterStatuses: type: string description: "Filter by a comma-separated list of `OPEN`, `CLOSED`, `DRAFT`, `ARCHIVED` \n\nLeave this blank to get results matching all values." GetAtsRejectionReasonsParameterCursor: type: string description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response. PatchAtsApplicationsApplicationIdInterviewsRequestBody: type: object properties: interview_id: type: string description: The ID of the interview title: type: string description: The title of the interview start_time: type: string description: The start time of the interview end_time: type: string description: The end time of the interview interviewer_user_ids: type: array items: type: string description: The IDs of the interviewers organizer_user_id: type: string description: The ID of the organizer location: type: object properties: type: type: string enum: - PHYSICAL - VIRTUAL address: type: string required: - type required: - interview_id - title - start_time - end_time - interviewer_user_ids - organizer_user_id - location PostAtsJobsJobIdApplicationsParameterJobId: type: string description: The Kombo ID or Remote ID of the Job this candidate should apply for. If you want to use the ID of the integrated system (remote_id) you need to prefix the id with "remote:". You can use the remote ID if you do not want to sync jobs. DeleteAtsCandidatesCandidateIdTagsPositiveResponse: type: object properties: status: type: string const: success data: type: object examples: - {} warnings: type: array items: type: object properties: message: type: string required: - message description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console. required: - status - data - warnings GetAtsJobsParameterRemoteCreatedAfter: description: Filter jobs by the day they were created in the remote system. This allows you to get jobs that were created on or after a certain day. type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString GetAtsInterviewsParameterJobIds: type: string description: Filter by a comma-separated list of job IDs. We will only return interviews for applications associated with any of these jobs. GetAtsOffersParameterUpdatedAfter: description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged. If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden. For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior). For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below. | Path | Added/Removed | Linked Record | | --- | --- | --- | | `application` | n/a | ✓ Yes | | `application` → `candidate` | ✗ No | ✗ No | | `application` → `job` | ✗ No | ✗ No | _**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._' type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString GetAtsTagsParameterIgnoreUnsupportedFilters: type: string enum: - 'true' - 'false' default: 'false' description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results. PostAtsApplicationsApplicationIdInterviewsPositiveResponse: type: object properties: status: type: string const: success data: type: object required: - status - data GetAtsUsersPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: next: type: - string - 'null' description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages. results: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. first_name: type: - string - 'null' description: First name of the user. last_name: type: - string - 'null' description: Last name of the user. email: type: - string - 'null' pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$ description: Email of the user. If the email address is invalid, it will be set to null. status: type: - string - 'null' enum: - ACTIVE - INACTIVE description: Whether the user is active or inactive. Consider this field when provisioning users from the ATS. remote_data: type: - object - 'null' additionalProperties: true description: 'Includes the data fetched from the remote system. Please be aware that including this in you scope config might violate other scopes that are set. Remote data always has the endpoint path that we got the data from as the top level key. For example, it could look like: `{ "/companies": { ... }}` This is not available on all plans. Reach out to Kombo if you need it.' changed_at: description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated. type: string format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_deleted_at: description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString system_roles: type: array items: type: object properties: remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. remote_label: type: - string - 'null' description: The label of the role. scope: type: - string - 'null' enum: - SYSTEM - JOB examples: - JOB description: Whether the role applies globally or is scoped to a specific job. unified_type: type: - string - 'null' enum: - HIRING_MANAGER - RECRUITER - COORDINATOR - SOURCER - INTERVIEWER - ADMIN description: Unified role type if Kombo can map it. required: - remote_id - remote_label - scope - unified_type examples: - remote_id: '32' remote_label: Hiring Manager scope: JOB unified_type: HIRING_MANAGER - remote_id: '32' remote_label: Hiring Manager scope: JOB unified_type: HIRING_MANAGER - remote_id: '1' remote_label: Admin scope: SYSTEM unified_type: ADMIN description: 'System-wide roles assigned to this user in the ATS. Visit our in-depth guide about [roles](/ats/features/roles) to learn more. Note: Use `job_roles` on the `/v1/ats/jobs` endpoint for job-specific roles.' required: - id - remote_id - first_name - last_name - status - remote_data - changed_at - remote_deleted_at - system_roles required: - next - results examples: - next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0= results: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe email: john.doe@kombo.dev status: ACTIVE remote_data: null changed_at: '2022-08-07T14:01:29.196Z' remote_deleted_at: null system_roles: - remote_id: '32' remote_label: Hiring Manager scope: JOB unified_type: HIRING_MANAGER required: - status - data GetAtsRolesParameterScopes: type: string description: "Filter by a comma-separated list of `SYSTEM`, `JOB` \n* `SYSTEM`: System-wide roles that apply globally (e.g., an \"Admin\" role). \n* `JOB`: Job-scoped roles that apply to specific jobs (e.g., a \"Hiring Manager\" role). \n \n\nLeave this blank to get results matching all values." DeleteAtsCandidatesCandidateIdTagsParameterCandidateId: type: string description: The Kombo ID of the candidate you want to remove the tag from. GetAtsCandidatesParameterJobIds: type: string description: Filter by a comma-separated list of job IDs. We will only return candidates that have applied to _any_ of the jobs. PostAtsApplicationsApplicationIdNotesParameterApplicationId: type: string description: The Kombo ID of the application you want to create the note for. GetAtsOffersParameterIncludeDeleted: type: string enum: - 'true' - 'false' default: 'false' description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too. GetAtsApplicationsParameterCursor: type: string description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response. GetAtsRolesParameterIgnoreUnsupportedFilters: type: string enum: - 'true' - 'false' default: 'false' description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results. PostAtsCandidatesCandidateIdResultLinksPositiveResponse: type: object properties: status: type: string const: success data: type: object warnings: type: array items: type: object properties: message: type: string required: - message description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console. required: - status - data - warnings GetAtsOffersParameterIgnoreUnsupportedFilters: type: string enum: - 'true' - 'false' default: 'false' description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results. PostAtsJobsJobIdApplicationsRequestBody: type: object properties: stage_id: type: string description: Stage this candidate should be in. If left out, the default stage for this job will be used. You can obtain the possible `stage_id`s from the `get-jobs` endpoint. candidate: type: object properties: first_name: type: string description: The first name of the candidate. last_name: type: string description: The last name of the candidate. email_address: type: string description: The primary email address this application will be created with. format: email additional_email_addresses: type: array items: type: object properties: type: type: string enum: - PERSONAL - WORK - OTHER email_address: type: string format: email required: - type - email_address company: type: string description: The company where the candidate is currently working. title: type: string description: The current job title of the candidate. phone_number: type: string description: The phone number of the candidate. additional_phone_numbers: type: array items: type: object properties: type: type: string enum: - PERSONAL - WORK - OTHER phone_number: type: string required: - type - phone_number location: type: object properties: city: type: string country: type: string pattern: ^[A-Z]{2}$ description: The uppercase two-letter ISO country (e.g., `DE`). For systems that use codes in formats other than `ISO 3166-1 alpha-2`, Kombo transforms the ISO Codes to the appropriate value. state: type: string street_1: type: string zip_code: type: string required: - country description: The location of the candidate. gender: type: string enum: - MALE - FEMALE - OTHER description: The gender of the candidate. Must be one of `MALE`, `FEMALE`, or `OTHER`. availability_date: description: The date the candidate is available to start working. type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString salary_expectations: type: object properties: period: type: string enum: - MONTH - YEAR description: The period of the salary expectations. Must be one of `MONTH` or `YEAR`. amount: type: number format: double minimum: -1.7976931348623157e+308 description: The amount of the salary expectations. required: - period - amount description: The salary expectations of the applicant. We will automatically convert the amount to a format that is suitable for the ATS you are using. For example, if you are using monthly salary expectations, we will convert the amount to a yearly salary if the ATS expects yearly salary expectations. social_links: type: array items: type: object properties: url: type: string format: uri required: - url default: [] description: A list of social media links of the candidate. The links must be valid URLs. required: - first_name - last_name - email_address attachments: type: array items: type: object properties: name: type: string description: File name of the file you want to upload. We recommend providing something human-readable with a valid file extension (like `Resume.pdf`), as this might be shown in your customer's system. content_type: type: string pattern: ^[\w.-]+\/[\w.-]+$ description: 'Content/MIME type of the file (e.g., `application/pdf`). If you provide `data`, this is required. If you provide `data_url`, this is optional and we''ll attempt to use the `Content-Type` header of the response. **Note:** Please validate that the content type you provide is actually meaningful (and not something generic like [`application/octet-stream`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types#applicationoctet-stream)). Especially when using object storage (like AWS S3), it''s easy to accidentally discard the content types of user-provided files, so make sure to explicitly persist them when processing uploads from your users (see guides for [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#SysMetadata), [Google Cloud](https://cloud.google.com/storage/docs/metadata#content-type), and [Azure](https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob#request-headers-all-blob-types)).' data_url: type: string format: uri description: 'URL to the file you want to upload that can be accessed without authentication headers. We will download the content immediately when receiving the request, so the URL can be short-lived. If you''re using an object storage provider (like AWS S3), we strongly recommend providing a signed URL for secure access (see guides for [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html), [Google Cloud](https://cloud.google.com/storage/docs/access-control/signed-urls), and [Azure](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)). **Note:** You must provide either this or `data_url`. We recommend `data_url` over `data` for most cases.' data: type: string description: 'Base64-encoded contents of the file you want to upload. **Note:** You must provide either this or `data_url`. We recommend `data_url` over `data` for most cases.' type: type: string enum: - CV - COVER_LETTER - OTHER description: Type of the attachment in the ATS. This may affect where the uploaded file will be shown in your customer's system. required: - name - type default: [] description: Array of the attachments you would like to upload. The first CV in the attachments will be treated as the resume of the candidate when the tool allows previewing a resume. source: type: object properties: name: type: string description: Name of the source (e.g., `"Example Job Board"`). unified_key: type: string id: type: string description: '**(⚠️ Deprecated - Use [automatic source writing](/ats/features/application-attribution#automatic-attribution) instead)** Optional source information that will be attached to the candidate. If you''re a job board or recruiting service, you can use this to make sure your customers can see which candidates came from you. This is deprecated because writing sources requires users to do some setup in most ATSs.' sourced_by: type: object properties: user_id: type: string description: The Kombo ID or Remote ID of the User. Use the Kombo ID directly, or prefix the remote ID with "remote:" to reference the user by their ID in the remote system. required: - user_id description: 'Credit the recruiter or team member who sourced this candidate. While the `source` field tracks the channel/platform (e.g., "Awesome Jobboard"), the `sourced_by` field tracks the individual person responsible for finding the candidate.' gdpr_consent: type: object properties: expires_at: description: Until when the candidate has granted the company they're applying to permission to process their personal data. type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString given: type: boolean description: Whether the candidate has given consent. description: Optional GDPR consent information required in some jurisdictions (like the Czech Republic or Slovakia). remote_fields: allOf: - type: object properties: successfactors: type: object properties: Candidate: type: object additionalProperties: true description: Fields that we will pass through to SuccessFactor's `Candidate` object. JobApplication: type: object additionalProperties: true description: Fields that we will pass through to SuccessFactor's `JobApplication` object. copyJobApplicationAttachments: type: boolean description: If set to true, we will copy custom attachments from the JobApplication to the Candidate. update_existing_candidate: type: - boolean - 'null' description: When the candidate already exists, whether to update the Candidate with the remote fields found under the Candidate entity. description: Fields specific to SAP SuccessFactors. personio: type: object properties: application: type: object additionalProperties: true description: Fields that we will pass through to Personio's `application` object. description: Fields specific to Personio. talentsoft: type: object properties: applicant: type: object additionalProperties: true description: Fields that we will pass through to TalentSoft's `applicant` object. application: type: object additionalProperties: true description: Fields that we will pass through to TalentSoft's `application` object. description: Fields specific to TalentSoft. teamtailor: type: object properties: candidate: type: object additionalProperties: true description: Fields that we will pass through to Teamtailor's `Candidate` object. application: type: object properties: attributes: type: object additionalProperties: true description: Fields that we will pass through to Teamtailor's attributes section `Job application` object. greenhouse: type: object properties: candidate: type: object additionalProperties: true description: Fields that we will pass through to Greenhouse's `Candidate` object. application: type: object additionalProperties: true description: Fields that we will pass through to Greenhouse's `Application` object. description: Fields specific to Greenhouse. lever: type: object properties: candidate: type: object additionalProperties: true description: 'Fields that we will pass through to Lever''s `Candidate` object. Note: make sure to submit the keys and values in the correct form data format.' description: Fields specific to Lever. workable: type: object properties: candidate: type: object additionalProperties: true description: Fields that we will pass through to Workable's `Candidate` object. description: Fields specific to Workable. workday: type: object properties: Candidate_Data: type: object properties: Name_Detail_Data: type: object properties: Middle_Name: type: string description: The candidate's middle name Social_Suffix_Reference: type: object properties: Predefined_Name_Component_ID: type: string required: - Predefined_Name_Component_ID description: The WID of the social suffix reference for the candidate Language_Reference: type: object properties: WID: type: string required: - WID description: Used to set the candidate's primary language Job_Application_Data: type: object properties: Job_Applied_To_Data: type: object properties: Global_Personal_Information_Data: type: object properties: Date_of_Birth: type: string Resume_Data: type: object properties: Education_Data: type: array items: type: object properties: School_Name: type: string First_Year_Attended: type: number format: double minimum: -1.7976931348623157e+308 Last_Year_Attended: type: number format: double minimum: -1.7976931348623157e+308 Field_of_Study_Reference: type: object properties: WID: type: string required: - WID Degree_Reference: type: object properties: WID: type: string required: - WID Grade_Average: type: string Skill_Data: type: array items: type: object properties: Skill_Name: type: string Language_Data: type: array items: type: object properties: Language_Reference: type: object properties: WID: type: string Language: type: object properties: Native: type: boolean Language_Ability: type: array items: type: object properties: Language_Ability_Data: type: object properties: Language_Proficiency_Reference: type: object properties: WID: type: string required: - WID Language_Ability_Type_Reference: type: object properties: WID: type: string required: - WID required: - Language_Ability Experience_Data: type: array items: type: object properties: Company_Name: type: string Title: type: string Location: type: string Start_Date: description: YYYY-MM-DDTHH:mm:ss.sssZ type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString End_Date: description: YYYY-MM-DDTHH:mm:ss.sssZ type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString Currently_Work_Here: type: boolean Description: type: string required: - Company_Name - Title - Start_Date Contact_Data: type: object properties: Location_Data: type: object properties: Address_Line_1: type: string Address_Line_2: type: string Region_Subdivision_1: type: string Country_Region_Reference: type: object properties: Country_Region_ID: type: string required: - Country_Region_ID Country_City_Reference: type: object properties: WID: type: string required: - WID Worker_Reference: type: object properties: WID: type: string Employee_ID: type: string description: Reference to the Worker (employee) to link the candidate to. Provide either WID or Employee_ID. Override_Source_Reference_WID: type: string description: Used to override the automatic source WID. description: Fields specific to Workday. The remote fields schema follows the documentation at https://community.workday.com/sites/default/files/file-hosting/productionapi/Recruiting/v43.0/Put_Candidate.html. Only defined fields are supported, if you need additional field support please reach out to Kombo support. zohorecruit: type: object properties: candidate: type: object additionalProperties: true description: Fields that we will pass through to Zoho Recruit's `Candidate` object. description: Fields specific to Zoho Recruit. bullhorn: type: object properties: candidate: type: object additionalProperties: true description: Fields that we will pass through to Bullhorn's `Candidate` object. job_submission: type: object additionalProperties: true description: Fields that we will pass through to Bullhorn's `JobSubmission` object. description: Fields specific to Bullhorn. smartrecruiters: type: object properties: candidate_with_questions: type: object additionalProperties: true description: '**(⚠️ Deprecated - Use the `candidate` field instead.)** Fields that we will pass through to the SmartRecruiters''s `Candidate` object when created with screening question answers. This API is used: https://developers.smartrecruiters.com/reference/createcandidate-1' candidate_without_questions: type: object additionalProperties: true description: '**(⚠️ Deprecated - Use the `candidate` field instead.)** Fields that we will pass through to the SmartRecruiters''s `Candidate` object when created with screening question answers. This API is used: https://developers.smartrecruiters.com/reference/candidatesaddtojob-1' candidate: type: object additionalProperties: true description: 'Fields that we will pass through to the SmartRecruiters''s `Candidate` object. This API is used: https://developers.smartrecruiters.com/reference/createcandidate-1' consent_decisions: type: object properties: SINGLE: type: boolean SMART_RECRUIT: type: boolean SMART_CRM: type: boolean SMART_MESSAGE_SMS: type: boolean SMART_MESSAGE_WHATSAPP: type: boolean description: 'The consent decisions for the candidate. SmartRecruiters supports two consent models: ''Single'' (use the `SINGLE` key) and ''Separated'' (use `SMART_RECRUIT`, `SMART_CRM`, `SMART_MESSAGE_SMS`, and/or `SMART_MESSAGE_WHATSAPP` keys). When this field is provided, it takes precedence over the `gdpr_consent` field for the `consentDecisions` property. See: https://developers.smartrecruiters.com/docs/partners-post-an-application' description: Fields specific to SmartRecruiters. talentadore: type: object properties: applications: type: object additionalProperties: true description: Fields that we will pass through to the Talentadore's when creating applications. description: Fields specific to Talentadore. guidecom: type: object properties: candidate: type: object additionalProperties: true description: Fields that we will pass through to GuideCom's `Candidate` object. description: Fields specific to GuideCom. dvinci: type: object properties: application: type: object additionalProperties: true description: 'Fields that we will pass through to d.vinci''s application object. This API is used: https://static.dvinci-easy.com/files/d.vinci%20application-apply-api.html#jobs__id__applyApi_post' candidate: type: object additionalProperties: true description: Fields that we will pass through to d.vinci's candidate/application payload as top-level fields (e.g., dateOfBirth). description: Fields specific to d.vinci. hrworks: type: object properties: jobApplication: type: object additionalProperties: true description: 'Fields that we will pass through to HRWorks''s `Job Application` object. This API is used: https://developers.hrworks.de/docs/hrworks-api-v2/53021f035f62d-post-job-applications' description: Fields specific to GuideCom. jobylon: type: object properties: application: type: object properties: message: type: string description: The `message` field of Jobylon's create application endpoint's request body. description: Fields that we will pass through to Jobylon's create application [endpoint](https://developer.jobylon.com/push-api-and-webhooks#-xL0v)'s request body. description: Fields specific to Jobylon. avature: type: object properties: workflow: type: object properties: step: type: object properties: id: type: integer format: int64 description: The ID of the workflow step to assign to the candidate. required: - id description: Fields specific to Avature. recruitee: type: object properties: candidate: type: object properties: cover_letter_text: type: string description: The cover letter text as a string. This will be visible on the main candidate page. Can be provided together with the `cover_letter` attachment, which will end up in a separate `file` section. description: Fields specific to Recruitee. rexx: type: object properties: candidate: type: object additionalProperties: true description: Fields that we will pass through to Rexx's application form fields. description: Fields specific to Rexx. umantis: type: object properties: person: type: object additionalProperties: true description: Fields that we will pass through to Abacus Umantis's "Create a person" endpoint's `attributes` when creating a candidate. description: Fields specific to Abacus Umantis. piloga: type: object properties: candidate: type: object properties: street: type: string description: The street address of the candidate. description: Additional candidate fields for P&I Loga that will be mapped to the application form. description: Fields specific to P&I Loga. pinpoint: type: object properties: candidate: type: object additionalProperties: true description: Fields that we will pass through to Pinpoint's `Candidate` object. description: Fields specific to Pinpoint. covetorest: type: object properties: candidate: type: object properties: mandant: type: number format: double minimum: -1.7976931348623157e+308 description: The mandant field for the candidate in Coveto. description: Additional candidate fields that will be passed to the Coveto candidate creation. description: Fields specific to Coveto REST. description: Additional fields that we will pass through to specific ATS systems. - type: object properties: greenhouse: type: object properties: post_headers: type: object properties: On-Behalf-Of: type: - string - 'null' description: ID of the the user that will show up as having performed the action in Greenhouse. We already pass a value by default, but you can use this to override it. description: Headers we will pass with `POST` requests to Greenhouse. description: Fields specific to Greenhouse. workable: type: object properties: on_behalf_of_user_remote_id: type: string description: The remote ID of the user that will be displayed in the UI as the one that performed the action. description: Workable specific remote fields for ATS actions. description: Additional fields that we will pass through to specific ATS systems. description: Additional fields that we will pass through to specific ATS systems. screening_question_answers: type: array items: type: object properties: question_id: type: string description: ID of the question returned by the Kombo API. We'll report a warning in the logs if the question can't be found on the job. answer: anyOf: - type: string description: Answer to a `TEXT` question or the option ID of the answer to a `SINGLE_SELECT` question. - type: boolean description: Answer to a `BOOLEAN` question. - type: number format: double minimum: -1.7976931348623157e+308 description: Answer to a `NUMBER` question. - type: array items: type: string description: Answer to a `MULTI_SELECT` question. The array elements are the IDs of the selected options. - description: Answer to a `DATE` question as an ISO 8601 date string. type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString - type: object properties: name: type: string description: File name of the file you want to upload. We recommend providing something human-readable with a valid file extension (like `Resume.pdf`), as this might be shown in your customer's system. content_type: type: string pattern: ^[\w.-]+\/[\w.-]+$ description: 'Content/MIME type of the file (e.g., `application/pdf`). If you provide `data`, this is required. If you provide `data_url`, this is optional and we''ll attempt to use the `Content-Type` header of the response. **Note:** Please validate that the content type you provide is actually meaningful (and not something generic like [`application/octet-stream`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types#applicationoctet-stream)). Especially when using object storage (like AWS S3), it''s easy to accidentally discard the content types of user-provided files, so make sure to explicitly persist them when processing uploads from your users (see guides for [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#SysMetadata), [Google Cloud](https://cloud.google.com/storage/docs/metadata#content-type), and [Azure](https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob#request-headers-all-blob-types)).' data_url: type: string format: uri description: 'URL to the file you want to upload that can be accessed without authentication headers. We will download the content immediately when receiving the request, so the URL can be short-lived. If you''re using an object storage provider (like AWS S3), we strongly recommend providing a signed URL for secure access (see guides for [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html), [Google Cloud](https://cloud.google.com/storage/docs/access-control/signed-urls), and [Azure](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)). **Note:** You must provide either this or `data_url`. We recommend `data_url` over `data` for most cases.' data: type: string description: 'Base64-encoded contents of the file you want to upload. **Note:** You must provide either this or `data_url`. We recommend `data_url` over `data` for most cases.' required: - name description: Answer to a `FILE` question. description: 'Answer to a question. This will be validated based on the question format and throw an error if the answer is invalid. Here is a description of each question type and the required answer format: `TEXT` - Simply provide a "string" answer. `SINGLE_SELECT` - Provide the ID of the answer as a string. `MULTI_SELECT` - Provide a string array containing the question IDs of the selected options. `BOOLEAN` - Either `true` or `false`. `NUMBER` - A number. `DATE` - Provide the answer as an ISO 8601 date string. `FILE` - Please select Option 6 in the dropdown above to see the required format.' required: - question_id - answer description: 'Array of answers to screening questions. Currently, not all question types are supported, and unsupported ones will not be submitted. The available questions for a job can be retrieved from the get jobs endpoint. The answers will be validated based on the format of the questions. Make sure to follow this schema to avoid errors.' examples: - - question_id: D8yPrjXXvA2XeBksTmrVvKSn answer: 'Yes' required: - candidate GetAtsOffersParameterIds: type: string description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`. GetAtsApplicationStagesParameterIds: type: string description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`. GetAtsCandidatesPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: next: type: - string - 'null' description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages. results: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: string description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. first_name: type: - string - 'null' description: First name of the candidate. last_name: type: - string - 'null' description: Last name of the candidate. company: type: - string - 'null' description: The current company of the candidate. title: type: - string - 'null' description: The current job title of the candidate. confidential: type: - boolean - 'null' description: Whether the candidate’s profile is confidential in the ATS. source: type: - string - 'null' description: The hiring source of the candidate. If you're a job board or recruiting service, you can use this to validate which candidates applied through your service and ensure that the correct referral compensation is paid out. phone_numbers: type: - array - 'null' items: type: object properties: phone_number: type: string type: type: - string - 'null' description: Kombo exposes type information through this field. If we don't get any information from the tool, we will set this to `null`. required: - phone_number default: [] description: A list of phone numbers of the candidate. email_addresses: type: - array - 'null' items: type: object properties: email_address: type: - string - 'null' pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$ type: type: - string - 'null' description: Kombo exposes type information through this field. If we don't get any information from the tool, we will set this to `null`. required: - type default: [] description: A list of email addresses of the candidate with an optional type. If an email address is invalid, it will be filtered out. social_media: type: - array - 'null' items: type: object properties: link: type: - string - 'null' type: type: - string - 'null' username: type: - string - 'null' default: [] description: List of social media accounts of the candidate. location: type: - object - 'null' properties: city: type: - string - 'null' country: type: - string - 'null' description: Contains the ISO2 country code if possible. If not, it contains the original value. raw: type: - string - 'null' description: If we have address data, this is filled with the raw address string. state: type: - string - 'null' street_1: type: - string - 'null' description: If we can parse the address data, this field contains the first part of the street information. street_2: type: - string - 'null' zip_code: type: - string - 'null' description: Location of the candidate. custom_fields: type: - object - 'null' additionalProperties: true description: A key-value store of fields not covered by the schema. [Read more](/custom-fields) integration_fields: type: array items: type: object properties: id: type: string description: The globally unique ID of this object. key: type: string description: The key of the field in the remote system. type: type: string enum: - DEFAULT - CUSTOM description: '- `DEFAULT`: static fields in the remote system. - `CUSTOM`: fields that are created/editable by the user.' value: type: 'null' description: The field's value. label: type: - string - 'null' description: The label of the field. (not always available) required: - id - key - type - label description: An array of selected passthrough integration fields. [Read more](/integration-fields) examples: - - id: 5NVFhMpB9Ah6by44tzNjZLyE key: firstName type: DEFAULT value: Frank label: First Name - id: 8nuajYpoRd5GnxEQaaWKUDYQ key: customTshirtSize type: CUSTOM value: XL label: T-Shirt Size remote_url: type: - string - 'null' format: uri description: URL to the candidate profile in the source ATS system. When embedding this in your system, please consider that not for all ATS a dedicated candidate profile URL is available, so you might need to fall back to the application URL. remote_created_at: description: The date and time the object was created in the remote system. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_updated_at: description: A timestamp retrieved from the remote system, describing when the resource was last updated. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_data: type: - object - 'null' additionalProperties: true description: 'Includes the data fetched from the remote system. Please be aware that including this in you scope config might violate other scopes that are set. Remote data always has the endpoint path that we got the data from as the top level key. For example, it could look like: `{ "/companies": { ... }}` This is not available on all plans. Reach out to Kombo if you need it.' changed_at: description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated. type: string format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_deleted_at: description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString applications: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. outcome: type: - string - 'null' enum: - PENDING - HIRED - DECLINED description: 'Parsed status of the application. If Kombo identifies that the application was accepted and the candidate hired, it will be `HIRED`. If the application was rejected or the candidate declined, it will be `DECLINED`. If the application is still in process, it will be `PENDING`. Kombo will always try to deliver this information as reliably as possible.' rejection_reason_name: type: - string - 'null' description: Reason for the rejection of the candidate. rejected_at: description: The time that the application was rejected. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_url: type: - string - 'null' format: uri description: URL to the application in the source ATS system. When embedding this in your system, please consider that not for all ATS a dedicated application URL is available, so you might need to fall back to the candidate URL. changed_at: description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated. type: string format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_created_at: description: The date and time the object was created in the remote system. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_updated_at: description: A timestamp retrieved from the remote system, describing when the resource was last updated. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString current_stage: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. name: type: - string - 'null' description: The application stage name. For example, "Initial Screening". remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. index: type: - integer - 'null' format: int64 examples: - 2 required: - id - name - remote_id - index job: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. name: type: - string - 'null' description: Title of the job. remote_id: type: string description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. required: - id - name - remote_id examples: - id: H5daSm8e85Dmvmne3wLeCPhX name: Backend Engineer remote_id: '32' required: - id - remote_id - outcome - rejection_reason_name - rejected_at - remote_url - changed_at - remote_created_at - remote_updated_at - current_stage - job tags: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. name: type: - string - 'null' remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. required: - id - name - remote_id examples: - id: 26vafvWSRmbhNcxJYqjCzuJg name: High Potential remote_id: '32' required: - id - remote_id - first_name - last_name - company - title - confidential - source - custom_fields - integration_fields - remote_url - remote_created_at - remote_updated_at - remote_data - changed_at - remote_deleted_at - applications - tags examples: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe company: Acme, Inc. title: Head of Marketing confidential: false source: Employee Referral phone_numbers: - phone_number: +1-541-754-3010 type: HOME email_addresses: - email_address: john.doe@example.com type: PRIVATE social_media: - link: https://www.youtube.com/watch?v=dQw4w9WgXcQ type: YOUTUBE username: null location: city: Berlin country: DE raw: Berlin, Germany state: Berlin street_1: Lohmühlenstraße 65 street_2: null zip_code: '12435' custom_fields: {} integration_fields: [] remote_url: https://app.greenhouse.io/people/32 remote_created_at: '2022-04-02T00:00:00.000Z' remote_updated_at: '2022-04-04T00:00:00.000Z' remote_data: null changed_at: '2022-04-04T00:00:00.000Z' remote_deleted_at: null applications: - id: H77fDF8uvEzGNPRubiz5DvQ7 remote_id: '32' outcome: HIRED rejection_reason_name: null rejected_at: null remote_url: https://app.greenhouse.io/applications/32 changed_at: '2022-04-04T00:00:00.000Z' remote_created_at: '2022-04-02T00:00:00.000Z' remote_updated_at: '2022-04-04T00:00:00.000Z' current_stage: id: 5J7L4b48wBfffYwek9Az9pkM name: Initial Screening remote_id: '32' index: 2 job: id: H5daSm8e85Dmvmne3wLeCPhX name: Backend Engineer remote_id: '32' tags: - id: 26vafvWSRmbhNcxJYqjCzuJg name: High Potential remote_id: '32' required: - next - results examples: - next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0= results: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe company: Acme, Inc. title: Head of Marketing confidential: false source: Employee Referral phone_numbers: - phone_number: +1-541-754-3010 type: HOME email_addresses: - email_address: john.doe@example.com type: PRIVATE social_media: - link: https://www.youtube.com/watch?v=dQw4w9WgXcQ type: YOUTUBE username: null location: city: Berlin country: DE raw: Berlin, Germany state: Berlin street_1: Lohmühlenstraße 65 street_2: null zip_code: '12435' custom_fields: {} integration_fields: [] remote_url: https://app.greenhouse.io/people/32 remote_created_at: '2022-04-02T00:00:00.000Z' remote_updated_at: '2022-04-04T00:00:00.000Z' remote_data: null changed_at: '2022-04-04T00:00:00.000Z' remote_deleted_at: null applications: - id: H77fDF8uvEzGNPRubiz5DvQ7 remote_id: '32' outcome: HIRED rejection_reason_name: null rejected_at: null remote_url: https://app.greenhouse.io/applications/32 changed_at: '2022-08-07T14:01:29.196Z' remote_created_at: '2022-08-07T14:01:29.196Z' remote_updated_at: '2022-08-07T14:01:29.196Z' current_stage: id: 5J7L4b48wBfffYwek9Az9pkM name: Initial Screening remote_id: '32' index: 2 job: id: H5daSm8e85Dmvmne3wLeCPhX name: Backend Engineer remote_id: '32' tags: - id: 26vafvWSRmbhNcxJYqjCzuJg name: High Potential remote_id: '32' required: - status - data GetAtsUsersParameterIncludeDeleted: type: string enum: - 'true' - 'false' default: 'false' description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too. GetAtsApplicationsParameterJobIds: type: string description: Filter by a comma-separated list of job IDs. We will only return applications that are related to _any_ of the jobs. PostAtsImportTrackedApplicationRequestBody: type: object properties: erecruiter: discriminator: propertyName: id_type anyOf: - type: object properties: id_type: type: string const: application_and_job_remote_ids description: Uses the `Api/Applications/ByJob/{jobId}` endpoint to retrieve the relevant application based on the job ID. application_remote_id: type: string job_remote_id: type: string required: - id_type - application_remote_id - job_remote_id - type: object properties: id_type: type: string const: application_and_candidate_remote_ids description: Uses the `Api/Applications/{applicantId}` endpoint to retrieve the relevant application based on the candidate ID. candidate_remote_id: type: string application_remote_id: type: string required: - id_type - candidate_remote_id - application_remote_id successfactors: discriminator: propertyName: id_type oneOf: - type: object properties: id_type: type: string const: application_remote_id description: Uses the `/JobApplication` ODATA endpoint to retrieve the relevant application based on the application ID. application_remote_id: type: string required: - id_type - application_remote_id recruitee: discriminator: propertyName: id_type oneOf: - type: object properties: id_type: type: string const: placement_id description: Uses the `/candidates` endpoint to retrieve all candidates, to find the relevant application based on the placement ID. placement_id: type: string required: - id_type - placement_id greenhouse: discriminator: propertyName: id_type oneOf: - type: object properties: id_type: type: string const: application_id description: Uses the `/applications/{id}` endpoint to retrieve the application. application_id: type: string required: - id_type - application_id onlyfy: discriminator: propertyName: id_type oneOf: - type: object properties: id_type: type: string const: application_id description: Uses the `/v1/application/{id}` endpoint to retrieve the application. application_id: type: string required: - id_type - application_id smartrecruiters: discriminator: propertyName: id_type oneOf: - type: object properties: id_type: type: string const: candidate_and_job_remote_ids description: Uses the `/candidates/{candidateId}/jobs/{jobId}` endpoint to retrieve the application. candidate_remote_id: type: string job_remote_id: type: string required: - id_type - candidate_remote_id - job_remote_id tracked_at: description: YYYY-MM-DDTHH:mm:ss.sssZ type: - string - 'null' format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString required: - tracked_at GetAtsActionsAtsAddApplicationAttachmentPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: attachment_restrictions: type: - object - 'null' properties: types: type: object properties: CV: anyOf: - type: object properties: is_supported: type: boolean const: true max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for CV. COVER_LETTER: anyOf: - type: object properties: is_supported: type: boolean const: true max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for COVER_LETTER. OTHER: anyOf: - type: object properties: is_supported: type: boolean const: true max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for OTHER. required: - CV - COVER_LETTER - OTHER required: - types description: Restrictions with attachment types that we know about. If this is null, we don't have information which types are supported. examples: - attachment_restrictions: types: CV: is_supported: false COVER_LETTER: is_supported: false OTHER: is_supported: true max_file_size_bytes: 10485760 accepted_mime_types: - application/pdf - application/msword required: - status - data GetAtsCandidatesParameterFirstName: type: string description: Filter candidates by first name. This filter is case-insensitive and matches the exact first name. Fuzzy matching might be enabled in the future, so consider this for your implementation. PostAtsCandidatesCandidateIdTagsParameterCandidateId: type: string description: The Kombo ID of the candidate you want to add the tag to. PostAtsCandidatesCandidateIdAttachmentsPositiveResponse: type: object properties: status: type: string const: success data: type: object warnings: type: array items: type: object properties: message: type: string required: - message description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console. required: - status - data - warnings GetAtsCandidatesParameterCursor: type: string description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response. GetAtsApplicationStagesParameterPageSize: type: integer format: int64 minimum: 1 maximum: 250 default: 100 description: The number of results to return per page. Maximum is 250. PostAtsCandidatesPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: string description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. first_name: type: - string - 'null' description: First name of the candidate. last_name: type: - string - 'null' description: Last name of the candidate. company: type: - string - 'null' description: The current company of the candidate. title: type: - string - 'null' description: The current job title of the candidate. confidential: type: - boolean - 'null' description: Whether the candidate’s profile is confidential in the ATS. source: type: - string - 'null' description: The hiring source of the candidate. If you're a job board or recruiting service, you can use this to validate which candidates applied through your service and ensure that the correct referral compensation is paid out. phone_numbers: type: - array - 'null' items: type: object properties: phone_number: type: string type: type: - string - 'null' description: Kombo exposes type information through this field. If we don't get any information from the tool, we will set this to `null`. required: - phone_number default: [] description: A list of phone numbers of the candidate. email_addresses: type: - array - 'null' items: type: object properties: email_address: type: - string - 'null' pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$ type: type: - string - 'null' description: Kombo exposes type information through this field. If we don't get any information from the tool, we will set this to `null`. required: - type default: [] description: A list of email addresses of the candidate with an optional type. If an email address is invalid, it will be filtered out. social_media: type: - array - 'null' items: type: object properties: link: type: - string - 'null' type: type: - string - 'null' username: type: - string - 'null' default: [] description: List of social media accounts of the candidate. location: type: - object - 'null' properties: city: type: - string - 'null' country: type: - string - 'null' description: Contains the ISO2 country code if possible. If not, it contains the original value. raw: type: - string - 'null' description: If we have address data, this is filled with the raw address string. state: type: - string - 'null' street_1: type: - string - 'null' description: If we can parse the address data, this field contains the first part of the street information. street_2: type: - string - 'null' zip_code: type: - string - 'null' description: Location of the candidate. custom_fields: type: - object - 'null' additionalProperties: true description: A key-value store of fields not covered by the schema. [Read more](/custom-fields) integration_fields: type: array items: type: object properties: id: type: string description: The globally unique ID of this object. key: type: string description: The key of the field in the remote system. type: type: string enum: - DEFAULT - CUSTOM description: '- `DEFAULT`: static fields in the remote system. - `CUSTOM`: fields that are created/editable by the user.' value: type: 'null' description: The field's value. label: type: - string - 'null' description: The label of the field. (not always available) required: - id - key - type - label description: An array of selected passthrough integration fields. [Read more](/integration-fields) examples: - - id: 5NVFhMpB9Ah6by44tzNjZLyE key: firstName type: DEFAULT value: Frank label: First Name - id: 8nuajYpoRd5GnxEQaaWKUDYQ key: customTshirtSize type: CUSTOM value: XL label: T-Shirt Size remote_url: type: - string - 'null' format: uri description: URL to the candidate profile in the source ATS system. When embedding this in your system, please consider that not for all ATS a dedicated candidate profile URL is available, so you might need to fall back to the application URL. remote_created_at: description: The date and time the object was created in the remote system. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_updated_at: description: A timestamp retrieved from the remote system, describing when the resource was last updated. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_data: type: - object - 'null' additionalProperties: true description: 'Includes the data fetched from the remote system. Please be aware that including this in you scope config might violate other scopes that are set. Remote data always has the endpoint path that we got the data from as the top level key. For example, it could look like: `{ "/companies": { ... }}` This is not available on all plans. Reach out to Kombo if you need it.' changed_at: description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated. type: string format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_deleted_at: description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString applications: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. outcome: type: - string - 'null' enum: - PENDING - HIRED - DECLINED description: 'Parsed status of the application. If Kombo identifies that the application was accepted and the candidate hired, it will be `HIRED`. If the application was rejected or the candidate declined, it will be `DECLINED`. If the application is still in process, it will be `PENDING`. Kombo will always try to deliver this information as reliably as possible.' rejection_reason_name: type: - string - 'null' description: Reason for the rejection of the candidate. rejected_at: description: The time that the application was rejected. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_url: type: - string - 'null' format: uri description: URL to the application in the source ATS system. When embedding this in your system, please consider that not for all ATS a dedicated application URL is available, so you might need to fall back to the candidate URL. changed_at: description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated. type: string format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_created_at: description: The date and time the object was created in the remote system. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_updated_at: description: A timestamp retrieved from the remote system, describing when the resource was last updated. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString current_stage: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. name: type: - string - 'null' description: The application stage name. For example, "Initial Screening". remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. index: type: - integer - 'null' format: int64 examples: - 2 required: - id - name - remote_id - index job: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. name: type: - string - 'null' description: Title of the job. remote_id: type: string description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. required: - id - name - remote_id examples: - id: H5daSm8e85Dmvmne3wLeCPhX name: Backend Engineer remote_id: '32' required: - id - remote_id - outcome - rejection_reason_name - rejected_at - remote_url - changed_at - remote_created_at - remote_updated_at - current_stage - job tags: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. name: type: - string - 'null' remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. required: - id - name - remote_id examples: - id: 26vafvWSRmbhNcxJYqjCzuJg name: High Potential remote_id: '32' required: - id - remote_id - first_name - last_name - company - title - confidential - source - custom_fields - integration_fields - remote_url - remote_created_at - remote_updated_at - remote_data - changed_at - remote_deleted_at - applications - tags examples: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe company: Acme, Inc. title: Head of Marketing confidential: false source: Employee Referral phone_numbers: - phone_number: +1-541-754-3010 type: HOME email_addresses: - email_address: john.doe@example.com type: PRIVATE social_media: - link: https://www.youtube.com/watch?v=dQw4w9WgXcQ type: YOUTUBE username: null location: city: Berlin country: DE raw: Berlin, Germany state: Berlin street_1: Lohmühlenstraße 65 street_2: null zip_code: '12435' custom_fields: {} integration_fields: [] remote_url: https://app.greenhouse.io/people/32 remote_created_at: '2022-04-02T00:00:00.000Z' remote_updated_at: '2022-04-04T00:00:00.000Z' remote_data: null changed_at: '2022-04-04T00:00:00.000Z' remote_deleted_at: null applications: - id: H77fDF8uvEzGNPRubiz5DvQ7 remote_id: '32' outcome: HIRED rejection_reason_name: null rejected_at: null remote_url: https://app.greenhouse.io/applications/32 changed_at: '2022-04-04T00:00:00.000Z' remote_created_at: '2022-04-02T00:00:00.000Z' remote_updated_at: '2022-04-04T00:00:00.000Z' current_stage: id: 5J7L4b48wBfffYwek9Az9pkM name: Initial Screening remote_id: '32' index: 2 job: id: H5daSm8e85Dmvmne3wLeCPhX name: Backend Engineer remote_id: '32' tags: - id: 26vafvWSRmbhNcxJYqjCzuJg name: High Potential remote_id: '32' warnings: type: array items: type: object properties: message: type: string required: - message description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console. required: - status - data - warnings GetAtsRejectionReasonsParameterUpdatedAfter: description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged. If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden. For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior). For this endpoint, only changes to the returned record itself are considered.' type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString GetAtsJobsParameterPostUrl: type: string description: Filter by the `post_url` field. Can be used to find a job based on its public posting URL. GetAtsCandidatesCandidateIdAttachmentsPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: results: type: array items: type: object properties: id: type: string minLength: 24 maxLength: 24 pattern: ^[1-9A-HJ-NP-Za-km-z]+$ application_id: type: - string - 'null' minLength: 24 maxLength: 24 pattern: ^[1-9A-HJ-NP-Za-km-z]+$ description: The Kombo ID of the application this attachment belongs to. When this is null, the attachment is not specific to any application but the candidate. candidate_id: type: string minLength: 24 maxLength: 24 pattern: ^[1-9A-HJ-NP-Za-km-z]+$ description: The Kombo ID of the candidate this attachment belongs to. type: type: string enum: - CV - COVER_LETTER - OTHER remote_id: type: string data_url: type: string file_name: type: string content_type: type: string description: The MIME type of the attachment. remote_created_at: description: The date when the attachment was created. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_updated_at: description: The date when the attachment was last updated. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString required: - id - application_id - candidate_id - type - remote_id - data_url - file_name - content_type - remote_created_at - remote_updated_at required: - results examples: - results: - id: EYJjhMQT3LtVKXnTbnRT8s6U application_id: null candidate_id: BTbkvY2w5ou3z3hdwuKcKzDh type: CV remote_id: GUzE666zfyjeoCJX6A8n7wh6 data_url: https://resources.kombo.dev/EYJjhMQT3LtVKXnTbnRT8s6U file_name: Frank Doe CV.pdf content_type: application/pdf remote_created_at: null remote_updated_at: null warnings: type: array items: type: object properties: message: type: string required: - message description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console. required: - status - data - warnings GetAtsJobsParameterVisibilities: type: string description: "Filter by a comma-separated list of `PUBLIC`, `INTERNAL`, `UNLISTED`, `CONFIDENTIAL` \n\nLeave this blank to get results matching all values." GetAtsJobsParameterNameContains: type: string description: Filter by the `name` field. Can be used to find a job by keywords present in the job name. GetAtsJobsParameterUpdatedAfter: description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged. If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden. For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior). For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below. | Path | Added/Removed | Linked Record | | --- | --- | --- | | `stages` | ✓ Yes | ✗ No | | `screening_questions` | ✓ Yes | ✗ No | | `job_postings` | ✓ Yes | ✓ Yes | | `hiring_team` | ✓ Yes | ✗ No | _**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._' type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString GetAtsUsersParameterIds: type: string description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`. GetAtsJobsParameterPageSize: type: integer format: int64 minimum: 1 maximum: 250 default: 100 description: The number of results to return per page. Maximum is 250. GetAtsJobsParameterIds: type: string description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`. PostAtsApplicationsApplicationIdInterviewsRequestBody: type: object properties: title: type: string description: The title of the interview start_time: type: string description: The start time of the interview end_time: type: string description: The end time of the interview interviewer_user_ids: type: array items: type: string description: The IDs of the interviewers organizer_user_id: type: string description: The ID of the organizer location: type: object properties: type: type: string enum: - PHYSICAL - VIRTUAL address: type: string description: The address of the interview required: - type required: - title - start_time - end_time - interviewer_user_ids - organizer_user_id - location GetAtsCandidatesParameterEmail: type: string description: Filter the candidates based on an email address. When set, returns only the candidates where the given `email` is in `email_addresses`. This filter is case-insensitive. format: email GetAtsCandidatesParameterUpdatedAfter: description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged. If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden. For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior). For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below. | Path | Added/Removed | Linked Record | | --- | --- | --- | | `applications` | ✓ Yes | ✓ Yes | | `applications` → `current_stage` | ✗ No | ✗ No | | `applications` → `job` | ✗ No | ✗ No | | `tags` | ✓ Yes | ✗ No | _**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._' type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString PostAtsCandidatesCandidateIdResultLinksRequestBody: type: object properties: label: type: string description: If the system allows us to display a display name for the link, we will use this label. url: type: string format: uri description: URL of the link. details: type: object properties: custom_field_name_prefix: type: string description: 'That will be added to the attribute labels if they are used for custom fields. If you specify `Acme:` as the prefix, the custom field will be named `Acme: Score`. Putting in the name of your company/product is a good idea.' attributes: type: array items: type: object properties: key: type: string description: The name of the attribute value: type: string description: The value of the attribute required: - key - value required: - custom_field_name_prefix - attributes description: 'Additional details with attributes that will be added to the result. This can be percentages, scores, or any text. We generally recommend using short attribute keys and a short custom_field_name_prefix to avoid overflowing the ATS UI.' remote_fields: allOf: - type: object properties: icims: type: object properties: assessment_package_id: type: string description: The package ID of the assessment that the result link will be added to. description: Fields specific to iCIMS. oracle: type: object properties: override_document_category: type: string enum: - IRC_CANDIDATE_RESUME - IRC_CANDIDATE_COVERLETTER - MISC - IRC_INTERNAL description: 'Allows you to override the document category for the url. (Default: MISC)' multi_post_to_all_current_applications: type: boolean description: If true, the result link will be posted to all current applications for the candidate. description: Fields specific to Oracle. description: Additional fields that we will pass through to specific ATS systems. - type: object properties: greenhouse: type: object properties: post_headers: type: object properties: On-Behalf-Of: type: - string - 'null' description: ID of the the user that will show up as having performed the action in Greenhouse. We already pass a value by default, but you can use this to override it. description: Headers we will pass with `POST` requests to Greenhouse. description: Fields specific to Greenhouse. workable: type: object properties: on_behalf_of_user_remote_id: type: string description: The remote ID of the user that will be displayed in the UI as the one that performed the action. description: Workable specific remote fields for ATS actions. description: Additional fields that we will pass through to specific ATS systems. description: Additional fields that we will pass through to specific ATS systems. required: - label - url GetAtsApplicationsParameterUpdatedAfter: description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged. If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden. For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior). For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below. | Path | Added/Removed | Linked Record | | --- | --- | --- | | `candidate` | n/a | ✓ Yes | | `candidate` → `tags` | ✗ No | ✗ No | | `current_stage` | n/a | ✓ Yes | | `job` | ✗ No | ✗ No | | `interviews` | ✓ Yes | ✓ Yes | | `offers` | ✓ Yes | ✓ Yes | _**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._' type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString GetAtsUsersParameterEmails: type: string description: Filter by a comma-separated list of emails. We will only return users who have _any_ of the emails. The format of the emails is case-insensitive. PostAtsCandidatesCandidateIdTagsPositiveResponse: type: object properties: status: type: string const: success data: type: object examples: - {} warnings: type: array items: type: object properties: message: type: string required: - message description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console. required: - status - data - warnings GetAtsRejectionReasonsParameterIncludeDeleted: type: string enum: - 'true' - 'false' default: 'false' description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too. GetAtsCandidatesParameterIgnoreUnsupportedFilters: type: string enum: - 'true' - 'false' default: 'false' description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results. GetAtsApplicationStagesParameterUpdatedAfter: description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged. If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden. For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior). For this endpoint, only changes to the returned record itself are considered.' type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString GetAtsCandidatesParameterIds: type: string description: Filter by a comma-separated list of IDs such as `222k7eCGyUdgt2JWZDNnkDs3,B5DVmypWENfU6eMe6gYDyJG3`. GetAtsUsersParameterCursor: type: string description: An optional cursor string used for pagination. This can be retrieved from the `next` property of the previous page response. GetAtsTagsParameterRemoteIds: type: string description: Filter by a comma-separated list of remote IDs. GetAtsOffersParameterRemoteIds: type: string description: Filter by a comma-separated list of remote IDs. GetAtsApplicationsPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: next: type: - string - 'null' description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages. results: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. outcome: type: - string - 'null' enum: - PENDING - HIRED - DECLINED description: 'Parsed status of the application. If Kombo identifies that the application was accepted and the candidate hired, it will be `HIRED`. If the application was rejected or the candidate declined, it will be `DECLINED`. If the application is still in process, it will be `PENDING`. Kombo will always try to deliver this information as reliably as possible.' rejection_reason_name: type: - string - 'null' description: Reason for the rejection of the candidate. rejected_at: description: The time that the application was rejected. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString current_stage_id: type: - string - 'null' description: ID of the current application stage job_id: type: - string - 'null' description: The Kombo ID of the job which the candidate applied to. The ID can be used to retrieve the job from the `get jobs` endpoint. candidate_id: type: - string - 'null' description: The Kombo ID of the candidate who applied to the job. The ID can be used to retrieve the candidate from the `get candidates` endpoint. screening_question_answers: type: - array - 'null' items: anyOf: - type: object properties: answer: type: object properties: content: type: - string - 'null' required: - content question: type: object properties: remote_id: type: - string - 'null' title: type: string type: type: string const: TEXT required: - remote_id - title - type required: - answer - question - type: object properties: answer: type: object properties: choice: type: - string - 'null' required: - choice question: type: object properties: remote_id: type: - string - 'null' title: type: string type: type: string const: SINGLE_SELECT required: - remote_id - title - type required: - answer - question - type: object properties: answer: type: object properties: choices: type: array items: type: string default: [] question: type: object properties: remote_id: type: - string - 'null' title: type: string type: type: string const: MULTI_SELECT required: - remote_id - title - type required: - answer - question - type: object properties: answer: type: object properties: checked: type: - boolean - 'null' required: - checked question: type: object properties: remote_id: type: - string - 'null' title: type: string type: type: string const: BOOLEAN required: - remote_id - title - type required: - answer - question - type: object properties: answer: type: object properties: number: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 required: - number question: type: object properties: remote_id: type: - string - 'null' title: type: string type: type: string const: NUMBER required: - remote_id - title - type required: - answer - question - type: object properties: answer: type: object properties: date: type: - string - 'null' format: date-time pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$ required: - date question: type: object properties: remote_id: type: - string - 'null' title: type: string type: type: string const: DATE required: - remote_id - title - type required: - answer - question - type: object properties: answer: type: object properties: raw: type: 'null' description: We pass the original question data along so you can handle it. question: type: object properties: remote_id: type: - string - 'null' title: type: string type: type: string const: UNKNOWN description: When we're not able to map a specific question type yet, we will return this type. Every `UNKNOWN` question will also be parsed and unified by us at some point. required: - remote_id - title - type required: - answer - question default: [] description: A list of answers to screening questions. The screening answer type `FILE` is currently unsupported. custom_fields: type: - object - 'null' additionalProperties: true description: A key-value store of fields not covered by the schema. [Read more](/custom-fields) integration_fields: type: array items: type: object properties: id: type: string description: The globally unique ID of this object. key: type: string description: The key of the field in the remote system. type: type: string enum: - DEFAULT - CUSTOM description: '- `DEFAULT`: static fields in the remote system. - `CUSTOM`: fields that are created/editable by the user.' value: type: 'null' description: The field's value. label: type: - string - 'null' description: The label of the field. (not always available) required: - id - key - type - label description: An array of selected passthrough integration fields. [Read more](/integration-fields) examples: - - id: 5NVFhMpB9Ah6by44tzNjZLyE key: firstName type: DEFAULT value: Frank label: First Name - id: 8nuajYpoRd5GnxEQaaWKUDYQ key: customTshirtSize type: CUSTOM value: XL label: T-Shirt Size remote_url: type: - string - 'null' format: uri description: URL to the application in the source ATS system. When embedding this in your system, please consider that not for all ATS a dedicated application URL is available, so you might need to fall back to the candidate URL. changed_at: description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated. type: string format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_deleted_at: description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_created_at: description: The date and time the object was created in the remote system. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_updated_at: description: A timestamp retrieved from the remote system, describing when the resource was last updated. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_data: type: - object - 'null' additionalProperties: true description: 'Includes the data fetched from the remote system. Please be aware that including this in you scope config might violate other scopes that are set. Remote data always has the endpoint path that we got the data from as the top level key. For example, it could look like: `{ "/companies": { ... }}` This is not available on all plans. Reach out to Kombo if you need it.' candidate: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: string description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. first_name: type: - string - 'null' description: First name of the candidate. last_name: type: - string - 'null' description: Last name of the candidate. email_addresses: type: - array - 'null' items: type: object properties: email_address: type: - string - 'null' pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$ type: type: - string - 'null' description: Kombo exposes type information through this field. If we don't get any information from the tool, we will set this to `null`. required: - type default: [] description: A list of email addresses of the candidate with an optional type. If an email address is invalid, it will be filtered out. phone_numbers: type: - array - 'null' items: type: object properties: phone_number: type: string type: type: - string - 'null' description: Kombo exposes type information through this field. If we don't get any information from the tool, we will set this to `null`. required: - phone_number default: [] description: A list of phone numbers of the candidate. social_media: type: - array - 'null' items: type: object properties: link: type: - string - 'null' type: type: - string - 'null' username: type: - string - 'null' default: [] description: List of social media accounts of the candidate. source: type: - string - 'null' description: The hiring source of the candidate. If you're a job board or recruiting service, you can use this to validate which candidates applied through your service and ensure that the correct referral compensation is paid out. remote_url: type: - string - 'null' format: uri description: URL to the candidate profile in the source ATS system. When embedding this in your system, please consider that not for all ATS a dedicated candidate profile URL is available, so you might need to fall back to the application URL. tags: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. name: type: - string - 'null' required: - id - remote_id - name examples: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' name: High Potential required: - id - remote_id - first_name - last_name - source - remote_url - tags current_stage: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. name: type: - string - 'null' description: The application stage name. For example, "Initial Screening". index: type: - integer - 'null' format: int64 examples: - 2 required: - id - remote_id - name - index job: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: string description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. name: type: - string - 'null' description: Title of the job. required: - id - remote_id - name examples: - id: H5daSm8e85Dmvmne3wLeCPhX remote_id: '32' name: Backend Engineer interviews: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. title: type: - string - 'null' description: The title of the interview. starting_at: description: The start time of the interview. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString ending_at: description: The end time of the interview. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString location: type: - object - 'null' properties: city: type: - string - 'null' country: type: - string - 'null' description: Contains the ISO2 country code if possible. If not, it contains the original value. raw: type: - string - 'null' description: If we have address data, this is filled with the raw address string. state: type: - string - 'null' street_1: type: - string - 'null' description: If we can parse the address data, this field contains the first part of the street information. street_2: type: - string - 'null' zip_code: type: - string - 'null' description: Location of the interview. canceled: type: - boolean - 'null' description: Whether the interview was canceled or not. If we have no information, this field will be `null`. required: - id - remote_id - title - starting_at - ending_at - canceled examples: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' title: Interview with John Doe starting_at: '2023-06-26T14:30:00.000Z' ending_at: '2023-06-26T15:30:00.000Z' location: city: Berlin country: DE raw: Berlin, Germany state: Berlin street_1: Lohmühlenstraße 65 street_2: null zip_code: '12435' canceled: false offers: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. status: type: - string - 'null' enum: - ACCEPTED - DECLINED - SENT - APPROVED - DRAFT - ABANDONED description: 'The offer’s current status. The usual flow of statuses is as follows: `DRAFT` -> `APPROVED` -> `SENT` -> `ACCEPTED` or `DECLINED`. Please note that not all systems will expose all statuses. For example, most systems do not include the `APPROVED` status - `ACCEPTED`: The offer was accepted by the candidate. - `DECLINED`: The offer was declined by the candidate. - `SENT`: The offer was sent to the candidate. - `APPROVED`: The draft was approved. - `DRAFT`: The offer is a draft and has not yet been sent to the candidate. - `ABANDONED`: The offer has expired or is no longer valid and should not be considered. ' required: - id - remote_id - status examples: - id: 76bab8LKuFtqpZ89mofCPMHX remote_id: '6' status: ACCEPTED required: - id - remote_id - outcome - rejection_reason_name - rejected_at - current_stage_id - job_id - candidate_id - custom_fields - integration_fields - remote_url - changed_at - remote_deleted_at - remote_created_at - remote_updated_at - remote_data - candidate - current_stage - job - interviews - offers required: - next - results examples: - next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0= results: - id: H77fDF8uvEzGNPRubiz5DvQ7 remote_id: '32' outcome: HIRED rejection_reason_name: null rejected_at: null current_stage_id: 5J7L4b48wBfffYwek9Az9pkM job_id: H5daSm8e85Dmvmne3wLeCPhX candidate_id: 26vafvWSRmbhNcxJYqjCzuJg screening_question_answers: - answer: choice: TypeScript question: remote_id: 48b4d36a-1d4b-4c50-ada7-9519078e65b4 title: Which is your primary programming language type: SINGLE_SELECT custom_fields: {} integration_fields: [] remote_url: https://app.greenhouse.io/applications/32 changed_at: '2022-08-07T14:01:29.196Z' remote_deleted_at: null remote_created_at: '2022-08-07T14:01:29.196Z' remote_updated_at: '2022-08-07T14:01:29.196Z' remote_data: null candidate: id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe email_addresses: - email_address: john.doe@example.com type: PRIVATE phone_numbers: - phone_number: +1-541-754-3010 type: HOME social_media: - link: https://www.youtube.com/watch?v=dQw4w9WgXcQ type: YOUTUBE username: null source: Employee Referral remote_url: https://app.greenhouse.io/people/32 tags: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' name: High Potential current_stage: id: 5J7L4b48wBfffYwek9Az9pkM remote_id: '32' name: Initial Screening index: 2 job: id: H5daSm8e85Dmvmne3wLeCPhX remote_id: '32' name: Backend Engineer interviews: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' title: Interview with John Doe starting_at: '2023-06-26T14:30:00.000Z' ending_at: '2023-06-26T15:30:00.000Z' location: city: Berlin country: DE raw: Berlin, Germany state: Berlin street_1: Lohmühlenstraße 65 street_2: null zip_code: '12435' canceled: false offers: - id: 76bab8LKuFtqpZ89mofCPMHX remote_id: '6' status: ACCEPTED required: - status - data GetAtsJobsParameterRemoteIds: type: string description: Filter by a comma-separated list of remote IDs. GetAtsActionsAtsCreateCandidatePositiveResponse: type: object properties: status: type: string const: success data: type: object properties: attachment_restrictions: type: - object - 'null' properties: total_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum total size of all attachments. If null, we don' have information about the total size of all attachments. Make sure to consider the total request size limits of Kombo. types: type: object properties: CV: anyOf: - type: object properties: is_supported: type: boolean const: true min_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The minimum amount of attachments. If null, we don' have information about the minimum amount. max_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum amount of attachments. If null, we don' have information about the maximum amount. max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - min_amount - max_amount - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for CV. COVER_LETTER: anyOf: - type: object properties: is_supported: type: boolean const: true min_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The minimum amount of attachments. If null, we don' have information about the minimum amount. max_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum amount of attachments. If null, we don' have information about the maximum amount. max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - min_amount - max_amount - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for COVER_LETTER. OTHER: anyOf: - type: object properties: is_supported: type: boolean const: true min_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The minimum amount of attachments. If null, we don' have information about the minimum amount. max_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum amount of attachments. If null, we don' have information about the maximum amount. max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - min_amount - max_amount - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for OTHER. required: - CV - COVER_LETTER - OTHER description: Specific attachment type restrictions for each attachment type. If null, we don' have information about the attachment type restrictions. required: - total_size_bytes - types description: Restrictions with attachment types that we know about. If this is null, we don't have information about restrictions on attachments. examples: - attachment_restrictions: total_size_bytes: 20000000 types: CV: is_supported: true min_amount: 1 max_amount: 1 max_file_size_bytes: 10000000 accepted_mime_types: - application/pdf - application/msword COVER_LETTER: is_supported: true min_amount: 0 max_amount: null max_file_size_bytes: null accepted_mime_types: null OTHER: is_supported: false required: - status - data GetAtsRejectionReasonsParameterRemoteIds: type: string description: Filter by a comma-separated list of remote IDs. GetAtsInterviewsPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: next: type: - string - 'null' description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages. results: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. title: type: - string - 'null' description: The title of the interview. starting_at: description: The start time of the interview. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString ending_at: description: The end time of the interview. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString location: type: - object - 'null' properties: city: type: - string - 'null' country: type: - string - 'null' description: Contains the ISO2 country code if possible. If not, it contains the original value. raw: type: - string - 'null' description: If we have address data, this is filled with the raw address string. state: type: - string - 'null' street_1: type: - string - 'null' description: If we can parse the address data, this field contains the first part of the street information. street_2: type: - string - 'null' zip_code: type: - string - 'null' description: Location of the interview. video_conferencing_url: type: - string - 'null' description: The URL of the video conferencing platform used for the interview. application_id: type: - string - 'null' description: The Kombo ID of the application this interview belongs to. The ID can be used to retrieve the application from the `get applications` endpoint. stage_id: type: - string - 'null' description: If a system specifies to which stage this interview belongs to, this field will be the Kombo ID of the application stage. The ID can be used to retrieve the stage from the `get application stages` endpoint. canceled: type: - boolean - 'null' description: Whether the interview was canceled or not. If we have no information, this field will be `null`. remote_created_at: description: The date and time the object was created in the remote system. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_updated_at: description: A timestamp retrieved from the remote system, describing when the resource was last updated. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_data: type: - object - 'null' additionalProperties: true description: 'Includes the data fetched from the remote system. Please be aware that including this in you scope config might violate other scopes that are set. Remote data always has the endpoint path that we got the data from as the top level key. For example, it could look like: `{ "/companies": { ... }}` This is not available on all plans. Reach out to Kombo if you need it.' changed_at: description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated. type: string format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_deleted_at: description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString users: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. first_name: type: - string - 'null' description: First name of the user. last_name: type: - string - 'null' description: Last name of the user. email: type: - string - 'null' pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$ description: Email of the user. If the email address is invalid, it will be set to null. required: - id - remote_id - first_name - last_name examples: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe email: john.doe@kombo.dev application: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. outcome: type: - string - 'null' enum: - PENDING - HIRED - DECLINED description: 'Parsed status of the application. If Kombo identifies that the application was accepted and the candidate hired, it will be `HIRED`. If the application was rejected or the candidate declined, it will be `DECLINED`. If the application is still in process, it will be `PENDING`. Kombo will always try to deliver this information as reliably as possible.' rejection_reason_name: type: - string - 'null' description: Reason for the rejection of the candidate. candidate: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: string description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. first_name: type: - string - 'null' description: First name of the candidate. last_name: type: - string - 'null' description: Last name of the candidate. email_addresses: type: - array - 'null' items: type: object properties: email_address: type: - string - 'null' pattern: ^(?!\.)(?!.*\.\.)([\w'+-.]*)[\w+-]@([\da-z][\da-z-]*\.)+[a-z]{2,}$ type: type: - string - 'null' description: Kombo exposes type information through this field. If we don't get any information from the tool, we will set this to `null`. required: - type default: [] description: A list of email addresses of the candidate with an optional type. If an email address is invalid, it will be filtered out. required: - id - remote_id - first_name - last_name examples: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe email_addresses: - email_address: john.doe@example.com type: PRIVATE job: type: - object - 'null' properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: string description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. name: type: - string - 'null' description: Title of the job. required: - id - remote_id - name examples: - id: H5daSm8e85Dmvmne3wLeCPhX remote_id: '32' name: Backend Engineer required: - id - remote_id - outcome - rejection_reason_name - candidate - job required: - id - remote_id - title - starting_at - ending_at - video_conferencing_url - application_id - stage_id - canceled - remote_created_at - remote_updated_at - remote_data - changed_at - remote_deleted_at - users - application required: - next - results examples: - next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0= results: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' title: Interview with John Doe starting_at: '2023-06-26T14:30:00.000Z' ending_at: '2023-06-26T15:30:00.000Z' location: city: Berlin country: DE raw: Berlin, Germany state: Berlin street_1: Lohmühlenstraße 65 street_2: null zip_code: '12435' video_conferencing_url: https://meet.example.com/interview-abc123 application_id: H77fDF8uvEzGNPRubiz5DvQ7 stage_id: H5daSm8e85Dmvmne3wLeCPhX canceled: false remote_created_at: '2022-08-07T14:01:29.196Z' remote_updated_at: '2022-08-07T14:01:29.196Z' remote_data: null changed_at: '2022-08-07T14:01:29.196Z' remote_deleted_at: null users: - id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe email: john.doe@kombo.dev application: id: H77fDF8uvEzGNPRubiz5DvQ7 remote_id: '32' outcome: HIRED rejection_reason_name: null candidate: id: 26vafvWSRmbhNcxJYqjCzuJg remote_id: '32' first_name: John last_name: Doe email_addresses: - email_address: john.doe@example.com type: PRIVATE job: id: H5daSm8e85Dmvmne3wLeCPhX remote_id: '32' name: Backend Engineer required: - status - data PostAtsApplicationsApplicationIdInterviewsParameterApplicationId: type: string description: The ID of the application PostAtsApplicationsApplicationIdResultLinksRequestBody: type: object properties: label: type: string description: If we can display a display name for the link, we will use this label. url: type: string format: uri description: URL of the link. details: type: object properties: custom_field_name_prefix: type: string description: 'That will be added to the attribute labels if they are used for custom fields. If you specify `Acme:` as the prefix, the custom field will be named `Acme: Score`. Putting in the name of your company/product is a good idea.' attributes: type: array items: type: object properties: key: type: string description: The name of the attribute value: type: string description: The value of the attribute required: - key - value required: - custom_field_name_prefix - attributes description: 'Additional details with attributes that will be added to the result. This can be percentages, scores, or any text. We generally recommend using short attribute keys and a short custom_field_name_prefix to avoid overflowing the ATS UI.' remote_fields: allOf: - type: object properties: icims: type: object properties: assessment_package_id: type: string description: The package ID of the assessment that the result link will be added to. description: Fields specific to iCIMS. oracle: type: object properties: override_document_category: type: string enum: - IRC_CANDIDATE_RESUME - IRC_CANDIDATE_COVERLETTER - MISC - IRC_INTERNAL description: 'Allows you to override the document category for the url. (Default: MISC)' multi_post_to_all_current_applications: type: boolean description: If true, the result link will be posted to all current applications for the candidate. description: Fields specific to Oracle. description: Additional fields that we will pass through to specific ATS systems. - type: object properties: greenhouse: type: object properties: post_headers: type: object properties: On-Behalf-Of: type: - string - 'null' description: ID of the the user that will show up as having performed the action in Greenhouse. We already pass a value by default, but you can use this to override it. description: Headers we will pass with `POST` requests to Greenhouse. description: Fields specific to Greenhouse. workable: type: object properties: on_behalf_of_user_remote_id: type: string description: The remote ID of the user that will be displayed in the UI as the one that performed the action. description: Workable specific remote fields for ATS actions. description: Additional fields that we will pass through to specific ATS systems. description: Additional fields that we will pass through to specific ATS systems. required: - label - url PostAtsCandidatesCandidateIdAttachmentsParameterCandidateId: type: string description: The Kombo ID of the candidate you want to add the attachment to. GetAtsApplicationStagesParameterIncludeDeleted: type: string enum: - 'true' - 'false' default: 'false' description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too. GetAtsInterviewsParameterUpdatedAfter: description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged. If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden. For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior). For this endpoint, `updated_after` matches when the returned record changed, or when related data changed as described below. | Path | Added/Removed | Linked Record | | --- | --- | --- | | `interviewers` | ✓ Yes | ✗ No | | `application` | n/a | ✓ Yes | | `application` → `candidate` | ✗ No | ✗ No | | `application` → `job` | ✗ No | ✗ No | _**Added/Removed**: Whether adding or removing entries from this list triggers an update (n/a for single records). **Linked Record**: Whether changes to the linked record itself trigger an update._' type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString GetAtsInterviewsParameterPageSize: type: integer format: int64 minimum: 1 maximum: 250 default: 100 description: The number of results to return per page. Maximum is 250. GetAtsApplicationsParameterOutcome: type: string enum: - PENDING - HIRED - DECLINED description: '**(⚠️ Deprecated - Use the `outcomes` filter instead.)** Filter applications by outcome. This allows you to get applications that are for example `PENDING`, `HIRED`, or `DECLINED`.' DeleteAtsCandidatesCandidateIdTagsRequestBody: type: object properties: tag: type: object properties: name: type: string description: The name of the tag you would like to remove. required: - name remote_fields: type: object properties: greenhouse: type: object properties: post_headers: type: object properties: On-Behalf-Of: type: - string - 'null' description: ID of the the user that will show up as having performed the action in Greenhouse. We already pass a value by default, but you can use this to override it. description: Headers we will pass with `POST` requests to Greenhouse. description: Fields specific to Greenhouse. workable: type: object properties: on_behalf_of_user_remote_id: type: string description: The remote ID of the user that will be displayed in the UI as the one that performed the action. description: Workable specific remote fields for ATS actions. description: Additional fields that we will pass through to specific ATS systems. required: - tag GetAtsUsersParameterIgnoreUnsupportedFilters: type: string enum: - 'true' - 'false' default: 'false' description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results. GetAtsUsersParameterPageSize: type: integer format: int64 minimum: 1 maximum: 250 default: 100 description: The number of results to return per page. Maximum is 250. PostAtsApplicationsApplicationIdRejectPositiveResponse: type: object properties: status: type: string const: success data: type: object examples: - {} warnings: type: array items: type: object properties: message: type: string required: - message description: These are the interaction warnings that are shown in the dashboard. They are meant to provide debug information to you. We recommend logging them to the console. required: - status - data - warnings PostAtsApplicationsApplicationIdAttachmentsRequestBody: type: object properties: attachment: type: object properties: name: type: string description: File name of the file you want to upload. We recommend providing something human-readable with a valid file extension (like `Resume.pdf`), as this might be shown in your customer's system. content_type: type: string pattern: ^[\w.-]+\/[\w.-]+$ description: 'Content/MIME type of the file (e.g., `application/pdf`). If you provide `data`, this is required. If you provide `data_url`, this is optional and we''ll attempt to use the `Content-Type` header of the response. **Note:** Please validate that the content type you provide is actually meaningful (and not something generic like [`application/octet-stream`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types#applicationoctet-stream)). Especially when using object storage (like AWS S3), it''s easy to accidentally discard the content types of user-provided files, so make sure to explicitly persist them when processing uploads from your users (see guides for [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#SysMetadata), [Google Cloud](https://cloud.google.com/storage/docs/metadata#content-type), and [Azure](https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob#request-headers-all-blob-types)).' data_url: type: string format: uri description: 'URL to the file you want to upload that can be accessed without authentication headers. We will download the content immediately when receiving the request, so the URL can be short-lived. If you''re using an object storage provider (like AWS S3), we strongly recommend providing a signed URL for secure access (see guides for [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html), [Google Cloud](https://cloud.google.com/storage/docs/access-control/signed-urls), and [Azure](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)). **Note:** You must provide either this or `data_url`. We recommend `data_url` over `data` for most cases.' data: type: string description: 'Base64-encoded contents of the file you want to upload. **Note:** You must provide either this or `data_url`. We recommend `data_url` over `data` for most cases.' type: type: string enum: - CV - COVER_LETTER - OTHER description: Type of the attachment in the ATS. This may affect where the uploaded file will be shown in your customer's system. required: - name - type remote_fields: allOf: - type: object properties: oracle: type: object properties: override_document_category: type: string enum: - IRC_CANDIDATE_RESUME - IRC_CANDIDATE_COVERLETTER - MISC - IRC_INTERNAL description: Allows you to override the document category for the attachment. multi_post_to_all_current_applications: type: boolean description: If true, the attachment will be posted to all current applications for the candidate. description: Oracle specific remote fields for the attachment. - type: object properties: greenhouse: type: object properties: post_headers: type: object properties: On-Behalf-Of: type: - string - 'null' description: ID of the the user that will show up as having performed the action in Greenhouse. We already pass a value by default, but you can use this to override it. description: Headers we will pass with `POST` requests to Greenhouse. description: Fields specific to Greenhouse. workable: type: object properties: on_behalf_of_user_remote_id: type: string description: The remote ID of the user that will be displayed in the UI as the one that performed the action. description: Workable specific remote fields for ATS actions. description: Additional fields that we will pass through to specific ATS systems. required: - attachment PutAtsApplicationsApplicationIdStageRequestBody: type: object properties: stage_id: type: string description: The Kombo ID of the stage to move the application to. This stage must be allowed for the job that the application is connected to. Get available stages from the `stages` property on the job, not from the deprecated application-stages endpoint. remote_fields: allOf: - type: object properties: workday: type: object properties: Workflow_Step_ID: type: string description: The Workflow_Step_ID to pass directly to the Move_Candidate request. When provided, the automatic workflow step matching logic is skipped. Step_Type: type: string enum: - Next_Step_Reference - Disposition_Step_Reference description: The type of step reference to use. Use "Next_Step_Reference" for regular stage moves and "Disposition_Step_Reference" for conclusion/disposition stages (e.g., rejected, declined). Defaults to "Next_Step_Reference". description: Fields specific to Workday. description: Additional fields that we will pass through to specific ATS systems. - type: object properties: greenhouse: type: object properties: post_headers: type: object properties: On-Behalf-Of: type: - string - 'null' description: ID of the the user that will show up as having performed the action in Greenhouse. We already pass a value by default, but you can use this to override it. description: Headers we will pass with `POST` requests to Greenhouse. description: Fields specific to Greenhouse. workable: type: object properties: on_behalf_of_user_remote_id: type: string description: The remote ID of the user that will be displayed in the UI as the one that performed the action. description: Workable specific remote fields for ATS actions. description: Additional fields that we will pass through to specific ATS systems. description: Additional fields that we will pass through to specific ATS systems. required: - stage_id GetAtsApplicationStagesPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: next: type: - string - 'null' description: Cursor string that can be passed to the `cursor` query parameter to get the next page. If this is `null`, then there are no more pages. results: type: array items: type: object properties: id: type: string description: The globally unique ID of this object generated by Kombo. We recommend using this as a stable primary key for syncing. remote_id: type: - string - 'null' description: The raw ID of the object in the remote system. We don't recommend using this as a primary key on your side as it might sometimes be compromised of multiple identifiers if a system doesn't provide a clear primary key. name: type: - string - 'null' description: The application stage name. For example, "Initial Screening". remote_data: type: - object - 'null' additionalProperties: true description: 'Includes the data fetched from the remote system. Please be aware that including this in you scope config might violate other scopes that are set. Remote data always has the endpoint path that we got the data from as the top level key. For example, it could look like: `{ "/companies": { ... }}` This is not available on all plans. Reach out to Kombo if you need it.' changed_at: description: The timestamp when this specific record was last modified. This field only updates when properties directly on this record change, NOT when related or nested models change. For filtering that considers nested data changes, use the `updated_after` parameter which will return records when either the record itself OR its related models have been updated. type: string format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString remote_deleted_at: description: The date and time the object was deleted in the remote system. Objects are automatically marked as deleted when Kombo can't retrieve them from the remote system anymore. Kombo will also anonymize entries 14 days after they disappear. type: - string - 'null' format: date-time externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString required: - id - remote_id - name - remote_data - changed_at - remote_deleted_at examples: - id: 5J7L4b48wBfffYwek9Az9pkM remote_id: '32' name: Initial Screening remote_data: null changed_at: '2022-08-07T14:01:29.196Z' remote_deleted_at: null required: - next - results examples: - next: eyJwYWdlIjoxMiwibm90ZSI6InRoaXMgaXMganVzdCBhbiBleGFtcGxlIGFuZCBub3QgcmVwcmVzZW50YXRpdmUgZm9yIGEgcmVhbCBjdXJzb3IhIn0= results: - id: 5J7L4b48wBfffYwek9Az9pkM remote_id: '32' name: Initial Screening remote_data: null changed_at: '2022-08-07T14:01:29.196Z' remote_deleted_at: null required: - status - data GetAtsRolesParameterUpdatedAfter: description: 'Filter the entries based on the modification date in format `YYYY-MM-DDTHH:mm:ss.sssZ`. Returns records where either the record itself **OR** its nested data has been updated since this timestamp, even if the record''s own `changed_at` field remains unchanged. If you want to track entry deletion, also set the `include_deleted=true` query parameter, because otherwise, deleted entries will be hidden. For more details, see [Understanding changed_at vs updated_after Behavior](https://docs.kombo.dev/ats/getting-started/fetching-data#understanding-changed_at-vs-updated_after-behavior). For this endpoint, only changes to the returned record itself are considered.' type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$ externalDocs: url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString GetAtsRolesParameterRemoteIds: type: string description: Filter by a comma-separated list of remote IDs. PostAtsApplicationsApplicationIdRejectRequestBody: type: object properties: rejection_reason_id: type: string description: The Kombo ID of the rejection reason. note: type: string description: A optional free text rejection note. Passed through if possible. remote_fields: allOf: - type: object properties: greenhouse: type: object properties: rejection_email: type: object additionalProperties: true description: Additional data fields that we will pass through to the `rejection_email` field of Greenhouse's [reject application](https://developers.greenhouse.io/harvest.html#post-reject-application) endpoint. description: Fields specific to Greenhouse. teamtailor: type: object properties: user_id: type: string description: The remote ID of the user that will be displayed in the UI as the one that performed the action. If not provided, the first admin user will be used. description: Fields specific to Teamtailor. description: Additional fields that we will pass through to specific ATS systems. - type: object properties: greenhouse: type: object properties: post_headers: type: object properties: On-Behalf-Of: type: - string - 'null' description: ID of the the user that will show up as having performed the action in Greenhouse. We already pass a value by default, but you can use this to override it. description: Headers we will pass with `POST` requests to Greenhouse. description: Fields specific to Greenhouse. workable: type: object properties: on_behalf_of_user_remote_id: type: string description: The remote ID of the user that will be displayed in the UI as the one that performed the action. description: Workable specific remote fields for ATS actions. description: Additional fields that we will pass through to specific ATS systems. description: Additional fields that we will pass through to specific ATS systems. required: - rejection_reason_id GetAtsApplicationStagesParameterIgnoreUnsupportedFilters: type: string enum: - 'true' - 'false' default: 'false' description: When set to `true`, filters targeting fields not supported by this integration will be ignored instead of filtering out all results. GetAtsActionsAtsCreateApplicationPositiveResponse: type: object properties: status: type: string const: success data: type: object properties: attachment_restrictions: type: - object - 'null' properties: total_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum total size of all attachments. If null, we don' have information about the total size of all attachments. Make sure to consider the total request size limits of Kombo. types: type: object properties: CV: anyOf: - type: object properties: is_supported: type: boolean const: true min_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The minimum amount of attachments. If null, we don' have information about the minimum amount. max_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum amount of attachments. If null, we don' have information about the maximum amount. max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - min_amount - max_amount - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for CV. COVER_LETTER: anyOf: - type: object properties: is_supported: type: boolean const: true min_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The minimum amount of attachments. If null, we don' have information about the minimum amount. max_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum amount of attachments. If null, we don' have information about the maximum amount. max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - min_amount - max_amount - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for COVER_LETTER. OTHER: anyOf: - type: object properties: is_supported: type: boolean const: true min_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The minimum amount of attachments. If null, we don' have information about the minimum amount. max_amount: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum amount of attachments. If null, we don' have information about the maximum amount. max_file_size_bytes: type: - number - 'null' format: double minimum: -1.7976931348623157e+308 description: The maximum file size in bytes. If null, we don't have information about the maximum file size. accepted_mime_types: type: - array - 'null' items: type: string description: The accepted mime types. If null, we don't have information about the accepted mime types. required: - is_supported - min_amount - max_amount - max_file_size_bytes - accepted_mime_types - type: object properties: is_supported: type: boolean const: false required: - is_supported description: Specific attachment type restrictions for OTHER. required: - CV - COVER_LETTER - OTHER description: Specific attachment type restrictions for each attachment type. If null, we don' have information about the attachment type restrictions. required: - total_size_bytes - types description: Restrictions with attachment types that we know about. If this is null, we don't have information about restrictions on attachments. examples: - attachment_restrictions: total_size_bytes: 20000000 types: CV: is_supported: true min_amount: 1 max_amount: 1 max_file_size_bytes: 10000000 accepted_mime_types: - application/pdf - application/msword COVER_LETTER: is_supported: true min_amount: 0 max_amount: null max_file_size_bytes: null accepted_mime_types: null OTHER: is_supported: false required: - status - data GetAtsTagsParameterIncludeDeleted: type: string enum: - 'true' - 'false' default: 'false' description: By default, deleted entries are not returned. Use the `include_deleted` query param to include deleted entries too. responses: ErrorResponseATS: description: The standard error response with the error codes for the ATS use case. content: application/json: schema: type: object properties: status: type: string enum: - error error: type: object properties: code: type: - string - 'null' enum: - PLATFORM.RATE_LIMIT_EXCEEDED - PLATFORM.CONCURRENCY_LIMIT_EXCEEDED - PLATFORM.INTEGRATION_NOT_FOUND - PLATFORM.INPUT_INVALID - PLATFORM.UNKNOWN_ERROR - PLATFORM.IP_NOT_WHITELISTED - PLATFORM.AUTHENTICATION_INVALID - PLATFORM.TASK_TIMED_OUT - INTEGRATION.PERMISSION_MISSING - INTEGRATION.AUTHENTICATION_INVALID - INTEGRATION.QA_FAILED - INTEGRATION.SETUP_SYNC_PENDING - INTEGRATION.SETUP_INCOMPLETE - INTEGRATION.INACTIVE - INTEGRATION.MODEL_NOT_AVAILABLE - INTEGRATION.MODEL_DISABLED - INTEGRATION.ACTION_NOT_AVAILABLE - INTEGRATION.ACTION_DISABLED - REMOTE.SERVICE_UNAVAILABLE - REMOTE.RATE_LIMIT_EXCEEDED - REMOTE.INPUT_INVALID - REMOTE.UNKNOWN_HTTP_ERROR - ATS.JOB_CLOSED - ATS.APPLICATION_ALREADY_EXISTS example: ATS.JOB_CLOSED description: Some errors include an error code that can be used to identify their cause. See the [Error Handling Docs](https://docs.kombo.dev/guides/errors) for more information. For your error handling logic please use the error `code` instead of other properties (e.g. message, http status code, ...). title: type: - string - 'null' description: A static, human-readable label. message: type: string description: A dynamic, detailed description of what went wrong in this specific instance. log_url: type: - string - 'null' format: uri description: The log page in the Kombo UI lists every interaction with full details. If you need assistance, share that link with our support team. required: - code - title - message - log_url description: Error details with structured code for programmatic handling. required: - status - error examples: Error Response: description: When building error handling logic, always use the `code` field to identify specific error types programmatically. See the complete list of error codes in the [docs](https://docs.kombo.dev/guides/errors). value: status: error error: code: INTEGRATION.MODEL_NOT_AVAILABLE title: This data model isn't supported for the selected integration. message: The "employees" model is not yet available for Greenhouse. Please reach out to Kombo if you need this functionality. log_url: https://app.kombo.dev/my-prod/logs?interactionId=123456 Minimal Error Response: description: The "message" is always required while other fields can also be `null`. See the [docs](https://docs.kombo.dev/guides/errors) for more information. value: status: error error: code: null title: null message: The message is always in the response. log_url: null securitySchemes: ApiKey: type: http scheme: bearer description: Create an API key on the [Secrets](https://app.kombo.dev/secrets) page in the Kombo dashboard.