openapi: 3.2.0 info: title: Bindbee Candidate API version: 0.1.0 tags: - name: Candidate paths: /api/ats/v1/candidates: get: tags: - Candidate summary: Get Candidates description: Returns a list of Candidate objects. operationId: get_candidates_api_ats_v1_candidates_get security: - HTTPBearer: [] parameters: - name: ids in: query required: false schema: anyOf: - type: string - type: 'null' description: The ID of the candidates to fetch examples: - 01931edf-04b6-7391-8a5c-93ac4b395316,01931edf-04c8-7649-a470-d85f6161bd1a title: Ids description: The ID of the candidates to fetch - name: remote_id in: query required: false schema: anyOf: - type: string - type: 'null' description: The third-party API ID of the matching object. examples: - '3235005483341316245' title: Remote Id description: The third-party API ID of the matching object. - name: company in: query required: false schema: anyOf: - type: string - type: 'null' description: If provided, will only return candidate for these companies examples: - 01931edf-04b6-7391-8a5c-93ac4b395316,01931edf-04c8-7649-a470-d85f6161bd1a title: Company description: If provided, will only return candidate for these companies - name: first_name in: query required: false schema: anyOf: - type: string - type: 'null' description: If provided, will return candidates with this first name examples: - John title: First Name description: If provided, will return candidates with this first name - name: last_name in: query required: false schema: anyOf: - type: string - type: 'null' description: If provided, will return candidates with this last name examples: - Kremlin title: Last Name description: If provided, will return candidates with this last name - name: tag in: query required: false schema: anyOf: - type: string - type: 'null' description: If provided, will return candidates with this tag examples: - Tech Experience title: Tag description: If provided, will return candidates with this tag - name: email_addresses in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: If provided, will return candidates with these email addresses examples: - john@doe.com - jane@doe.com title: Email Addresses description: If provided, will return candidates with these email addresses - name: include_raw_data in: query required: false schema: type: boolean description: Include raw data in the response examples: - false default: false title: Include Raw Data description: Include raw data in the response - name: include_custom_fields in: query required: false schema: type: boolean description: Whether to include custom fields in the response. examples: - false default: false title: Include Custom Fields description: Whether to include custom fields in the response. - name: page_size in: query required: false schema: type: integer maximum: 200 minimum: 1 description: Number of results to return per page. Maximum size is 200. default: 50 title: Page Size description: Number of results to return per page. Maximum size is 200. - name: cursor in: query required: false schema: anyOf: - type: string - type: 'null' description: The pagination cursor value. title: Cursor description: The pagination cursor value. - name: expand in: query required: false schema: anyOf: - type: string - type: 'null' description: Which relations should be returned in expanded form. Multiple relation names should be comma separated without spaces. You can also specify required fields in [] for each relation name. examples: - manager[first_name,last_name] title: Expand description: Which relations should be returned in expanded form. Multiple relation names should be comma separated without spaces. You can also specify required fields in [] for each relation name. - name: modified_after in: query required: false schema: anyOf: - type: string - type: 'null' description: 'If provided, only objects synced by Bindbee after this date time will be returned. Format: DateTime (ISO 8601). If no timezone offset is supplied, the value is interpreted as UTC.' examples: - '2024-02-21T21:22:12.993Z' title: Modified After description: 'If provided, only objects synced by Bindbee after this date time will be returned. Format: DateTime (ISO 8601). If no timezone offset is supplied, the value is interpreted as UTC.' - name: x-connector-token in: header required: true schema: type: string title: X-Connector-Token responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PaginatedResponse_AtsCandidate_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '401': description: Missing or invalid bearer authentication credentials. headers: WWW-Authenticate: description: Bearer authentication challenge. schema: type: string content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: The credentials are valid but do not permit access to this resource, e.g. a connector token used on a different API category or a model whose writes are disabled. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Rate limit exceeded. headers: X-RateLimit-Limit: description: Maximum requests allowed in the current window. schema: type: integer X-RateLimit-Remaining: description: Requests remaining in the current window. schema: type: integer X-RateLimit-Reset: description: Unix timestamp (seconds since epoch) at which the current rate-limit window resets. schema: type: integer Retry-After: description: Seconds to wait before retrying the request. schema: type: integer content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' post: tags: - Candidate summary: Create Candidate description: Creates a Candidate object with the given values. operationId: create_candidate_api_ats_v1_candidates_post security: - HTTPBearer: [] parameters: - name: x-connector-token in: header required: true schema: type: string title: X-Connector-Token requestBody: required: true content: application/json: schema: anyOf: - $ref: '#/components/schemas/CreateCandidate' - $ref: '#/components/schemas/AtsCandidateWrite' title: Candidate responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '401': description: Missing or invalid bearer authentication credentials. headers: WWW-Authenticate: description: Bearer authentication challenge. schema: type: string content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: The credentials are valid but do not permit access to this resource, e.g. a connector token used on a different API category or a model whose writes are disabled. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Rate limit exceeded. headers: X-RateLimit-Limit: description: Maximum requests allowed in the current window. schema: type: integer X-RateLimit-Remaining: description: Requests remaining in the current window. schema: type: integer X-RateLimit-Reset: description: Unix timestamp (seconds since epoch) at which the current rate-limit window resets. schema: type: integer Retry-After: description: Seconds to wait before retrying the request. schema: type: integer content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/ats/v1/candidates/create/meta: get: tags: - Candidate summary: Get Create Candidate Request Body description: Returns the data points required to add new employee in HRIS operationId: get_create_candidate_request_body_api_ats_v1_candidates_create_meta_get security: - HTTPBearer: [] parameters: - name: x-connector-token in: header required: true schema: type: string title: X-Connector-Token responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/MetaApiResponseModel' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '401': description: Missing or invalid bearer authentication credentials. headers: WWW-Authenticate: description: Bearer authentication challenge. schema: type: string content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: The credentials are valid but do not permit access to this resource, e.g. a connector token used on a different API category or a model whose writes are disabled. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Rate limit exceeded. headers: X-RateLimit-Limit: description: Maximum requests allowed in the current window. schema: type: integer X-RateLimit-Remaining: description: Requests remaining in the current window. schema: type: integer X-RateLimit-Reset: description: Unix timestamp (seconds since epoch) at which the current rate-limit window resets. schema: type: integer Retry-After: description: Seconds to wait before retrying the request. schema: type: integer content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/ats/v1/candidates/{id}: get: tags: - Candidate summary: Get Candidate By Id description: Returns a Candidate object with the given id. operationId: get_candidate_by_id_api_ats_v1_candidates__id__get security: - HTTPBearer: [] parameters: - name: id in: path required: true schema: type: string format: uuid title: Id - name: include_raw_data in: query required: false schema: type: boolean description: Include raw data in the response examples: - false default: false title: Include Raw Data description: Include raw data in the response - name: include_custom_fields in: query required: false schema: type: boolean description: Whether to include custom fields in the response. examples: - false default: false title: Include Custom Fields description: Whether to include custom fields in the response. - name: expand in: query required: false schema: anyOf: - type: string - type: 'null' description: Which relations should be returned in expanded form. Multiple relation names should be comma separated without spaces. You can also specify required fields in [] for each relation name. examples: - manager[first_name,last_name] title: Expand description: Which relations should be returned in expanded form. Multiple relation names should be comma separated without spaces. You can also specify required fields in [] for each relation name. - name: x-connector-token in: header required: true schema: type: string title: X-Connector-Token responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AtsCandidate' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '401': description: Missing or invalid bearer authentication credentials. headers: WWW-Authenticate: description: Bearer authentication challenge. schema: type: string content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: The credentials are valid but do not permit access to this resource, e.g. a connector token used on a different API category or a model whose writes are disabled. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Rate limit exceeded. headers: X-RateLimit-Limit: description: Maximum requests allowed in the current window. schema: type: integer X-RateLimit-Remaining: description: Requests remaining in the current window. schema: type: integer X-RateLimit-Reset: description: Unix timestamp (seconds since epoch) at which the current rate-limit window resets. schema: type: integer Retry-After: description: Seconds to wait before retrying the request. schema: type: integer content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /api/ats/v1/candidates/{candidate_id}/attachments: post: tags: - Candidate summary: Create Candidate Attachment description: Uploads an attachment for a given candidate. operationId: create_candidate_attachment_api_ats_v1_candidates__candidate_id__attachments_post security: - HTTPBearer: [] parameters: - name: candidate_id in: path required: true schema: type: string format: uuid title: Candidate Id - name: x-connector-token in: header required: true schema: type: string title: X-Connector-Token requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AtsAttachmentWrite' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '401': description: Missing or invalid bearer authentication credentials. headers: WWW-Authenticate: description: Bearer authentication challenge. schema: type: string content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: The credentials are valid but do not permit access to this resource, e.g. a connector token used on a different API category or a model whose writes are disabled. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Rate limit exceeded. headers: X-RateLimit-Limit: description: Maximum requests allowed in the current window. schema: type: integer X-RateLimit-Remaining: description: Requests remaining in the current window. schema: type: integer X-RateLimit-Reset: description: Unix timestamp (seconds since epoch) at which the current rate-limit window resets. schema: type: integer Retry-After: description: Seconds to wait before retrying the request. schema: type: integer content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' components: schemas: AtsAttachmentWrite: properties: file_name: anyOf: - type: string - type: 'null' title: File Name description: The name of the file attached. examples: - resume.pdf file_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: File Url description: The URL where the file is stored and can be retrieved. examples: - https://example.com/path/to/resume.pdf attachment_type: anyOf: - type: string - type: 'null' enum: - RESUME - COVER_LETTER - OFFER_LETTER - OTHER - '-' title: Attachment Type description: The type of attachment. If the value is not one of the defined enum values, the original value passed through will be returned. examples: - RESUME file_content: anyOf: - type: string - type: 'null' title: File Content description: File in base64 format examples: - SGVsbG8sIFdvcmxkIQ== content_type: anyOf: - type: string - type: 'null' title: Content Type description: The MIME type of the file (e.g., 'application/pdf', 'image/png'). examples: - application/pdf candidate: anyOf: - type: string format: uuid - type: 'null' title: Candidate description: The candidate to whom the attachment belongs. examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 remote_user_id: anyOf: - type: string format: uuid - type: 'null' title: Remote User Id description: The id of user using the integration examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 type: object title: AtsAttachmentWrite description: The AtsAttachmentWriteForCandidate object is used to represent a file attachment linked to a candidate's application within the ATS. PaginatedResponse_AtsCandidate_: properties: cursor: anyOf: - type: string - type: 'null' title: Cursor description: Cursor value to fetch next set of items examples: - MDE4YjE4ZWYtYzk5Yy03YTg2LTk5NDYtN2I3YzlkNTQzM2U1 page_size: type: integer title: Page Size description: Indicates the count of items in the response examples: - 50 items: items: $ref: '#/components/schemas/AtsCandidate' type: array title: Items description: List of items in the current response type: object required: - cursor - page_size - items title: PaginatedResponse[AtsCandidate] ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError AtsCandidate: properties: id: type: string format: uuid title: Id examples: - 018b18ef-c487-703c-afd9-0ca478ccd9d6 remote_id: anyOf: - type: string - type: 'null' title: Remote Id description: The third-party API ID of the matching object. examples: - '123321' modified_at: type: string format: date-time title: Modified At description: This is the datetime that this object was last updated by Bindbee examples: - '2021-10-16T00:00:00Z' raw_data: anyOf: - additionalProperties: true type: object - type: 'null' title: Raw Data description: This is the Raw data examples: - key_1: Platform dependent data 1 key_2: Platform dependent data 2 custom_fields: anyOf: - additionalProperties: true type: object - type: 'null' title: Custom Fields description: The custom fields related to the model examples: - category_group: REG disability_type: ASBERG hire_date: '1991-03-16T00:00:00' hire_source: REFER nationality: USA original_hire_date: '1991-03-16T00:00:00' first_name: anyOf: - type: string - type: 'null' title: First Name description: The candidate's first name. examples: - John last_name: anyOf: - type: string - type: 'null' title: Last Name description: The candidate's last name. examples: - Doe company: anyOf: - type: string - type: 'null' title: Company description: The name of the company where candidate has applied. examples: - Google title: anyOf: - type: string - type: 'null' title: Title description: The position for which the candidate has applied examples: - SOFTWARE ENGINEER last_interaction_at: anyOf: - type: string - type: 'null' title: Last Interaction At description: The date of the last interaction with the candidate. examples: - '2021-07-01T00:00:00Z' is_private: anyOf: - type: boolean - type: 'null' title: Is Private description: Whether the candidate's information is private. examples: - true can_email: anyOf: - type: boolean - type: 'null' title: Can Email description: Whether the candidate can be emailed. examples: - true locations: anyOf: - items: type: string type: array - type: 'null' title: Locations description: The location of the candidate. examples: - San Francisco - New York phone_numbers: anyOf: - items: type: string type: array - type: 'null' title: Phone Numbers description: The candidate's phone numbers. examples: - 123-456-7890 email_addresses: anyOf: - items: type: string type: array - type: 'null' title: Email Addresses description: The candidate's email addresses. examples: - john@doe.com urls: anyOf: - items: $ref: '#/components/schemas/AtsUrl' type: array - type: 'null' title: Urls description: The candidate's URLs. This can include a personal website, LinkedIn profile, or other relevant URLs. examples: - type: LINKEDIN value: https://www.linkedin.com/in/johndoe tags: anyOf: - items: type: string type: array - type: 'null' title: Tags description: The candidate's tags. Tags are used to categorize candidates and can be used to filter candidates in the UI. examples: - JUNIOR - INTERMEDIATE applications: anyOf: - items: {} type: array - type: 'null' title: Applications description: The candidate's applications. examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 attachments: anyOf: - items: {} type: array - type: 'null' title: Attachments description: The candidate's attachments. examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 remote_created_at: anyOf: - type: string - type: 'null' title: Remote Created At description: When the third party's candidate was created. examples: - '2021-07-01T00:00:00Z' remote_updated_at: anyOf: - type: string - type: 'null' title: Remote Updated At description: When the third party's candidate was last updated. examples: - '2021-07-01T00:00:00Z' avatar: anyOf: - type: string - type: 'null' title: Avatar description: The candidate's avatar. examples: - https://www.example.com/avatar.jpg type: object required: - id - remote_id - modified_at - custom_fields title: AtsCandidate MetaApiResponseModel: properties: success: type: boolean title: Success data: anyOf: - additionalProperties: true type: object - type: 'null' title: Data error: anyOf: - additionalProperties: true type: object - type: 'null' title: Error type: object required: - success title: MetaApiResponseModel AtsCandidateWrite: properties: additional_attributes: anyOf: - additionalProperties: true type: object - type: 'null' title: Additional Attributes description: Specific fields required by the chosen HRIS examples: - contract_end_date: '2025-12-31T00:00:00' previous_employer: TechCorp custom_fields: anyOf: - additionalProperties: true type: object - type: 'null' title: Custom Fields description: The custom fields related to the model examples: - customTshirtSize: XXL first_name: anyOf: - type: string - type: 'null' title: First Name description: The candidate's first name. examples: - John last_name: anyOf: - type: string - type: 'null' title: Last Name description: The candidate's last name. examples: - Doe company: anyOf: - type: string - type: 'null' title: Company description: The name of the company where candidate has applied. examples: - Google title: anyOf: - type: string - type: 'null' title: Title description: The position for which the candidate has applied examples: - SOFTWARE ENGINEER last_interaction_at: anyOf: - type: string - type: 'null' title: Last Interaction At description: The date of the last interaction with the candidate. examples: - '2021-07-01T00:00:00Z' is_private: anyOf: - type: boolean - type: 'null' title: Is Private description: Whether the candidate's information is private. examples: - true can_email: anyOf: - type: boolean - type: 'null' title: Can Email description: Whether the candidate can be emailed. examples: - true locations: anyOf: - items: type: string type: array - type: 'null' title: Locations description: The location of the candidate. examples: - San Francisco - New York phone_numbers: anyOf: - items: type: string type: array - type: 'null' title: Phone Numbers description: The candidate's phone numbers. examples: - 123-456-7890 email_addresses: anyOf: - items: type: string type: array - type: 'null' title: Email Addresses description: The candidate's email addresses. examples: - john@doe.com urls: anyOf: - items: $ref: '#/components/schemas/AtsUrl' type: array - type: 'null' title: Urls description: The candidate's URLs. This can include a personal website, LinkedIn profile, or other relevant URLs. examples: - type: LINKEDIN value: https://www.linkedin.com/in/johndoe tags: anyOf: - items: type: string type: array - type: 'null' title: Tags description: The candidate's tags. Tags are used to categorize candidates and can be used to filter candidates in the UI. examples: - JUNIOR - INTERMEDIATE applications: anyOf: - items: {} type: array - type: 'null' title: Applications description: The candidate's applications. examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 attachments: anyOf: - items: $ref: '#/components/schemas/AtsAttachmentWrite' type: array - type: 'null' title: Attachments description: Please share the details like this, AtsAttachmentWrite model fields are shared in model_fields key examples: - attachment_type: RESUME file_name: resume.pdf file_url: https://example.com/resume.pdf remote_created_at: anyOf: - type: string - type: 'null' title: Remote Created At description: When the third party's candidate was created. examples: - '2021-07-01T00:00:00Z' remote_updated_at: anyOf: - type: string - type: 'null' title: Remote Updated At description: When the third party's candidate was last updated. examples: - '2021-07-01T00:00:00Z' avatar: anyOf: - type: string - type: 'null' title: Avatar description: The candidate's avatar. examples: - https://www.example.com/avatar.jpg job: anyOf: - type: string format: uuid - type: 'null' title: Job description: The job id for the candidate examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 type: object title: AtsCandidateWrite CreateCandidate: properties: data: $ref: '#/components/schemas/PostCandidate' remote_user_id: anyOf: - type: string - type: 'null' title: Remote User Id description: The remote user's id examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 job_requisition_id: anyOf: - type: string - type: 'null' title: Job Requisition Id description: The job requisition id in external ATS examples: - R-00007 type: object required: - data title: CreateCandidate HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError ErrorResponse: type: object required: - detail properties: detail: type: string AtsUrl: properties: value: anyOf: - type: string - type: 'null' title: Value description: The site's url. url_type: anyOf: - type: string - type: 'null' enum: - PERSONAL - COMPANY - PORTFOLIO - BLOG - SOCIAL_MEDIA - OTHER - JOB_POSTING - '-' title: Url Type description: The type of site. If the value is not one of the defined enum values, the original value passed through will be returned. type: object required: - value - url_type title: AtsUrl PostCandidate: properties: first_name: anyOf: - type: string - type: 'null' title: First Name description: The candidate's first name. examples: - John last_name: anyOf: - type: string - type: 'null' title: Last Name description: The candidate's last name. examples: - Doe company: anyOf: - type: string - type: 'null' title: Company description: The name of the company where candidate has applied. examples: - Google title: anyOf: - type: string - type: 'null' title: Title description: The position for which the candidate has applied examples: - SOFTWARE ENGINEER is_private: anyOf: - type: boolean - type: 'null' title: Is Private description: Whether the candidate's information is private. examples: - true can_email: anyOf: - type: boolean - type: 'null' title: Can Email description: Whether the candidate can be emailed. examples: - true locations: anyOf: - items: type: string type: array - type: 'null' title: Locations description: The location of the candidate. examples: - San Francisco - New York phone_numbers: anyOf: - items: type: string type: array - type: 'null' title: Phone Numbers description: The candidate's phone numbers. examples: - 123-456-7890 email_addresses: anyOf: - items: type: string type: array - type: 'null' title: Email Addresses description: The candidate's email addresses. examples: - john@doe.com urls: anyOf: - items: $ref: '#/components/schemas/AtsUrl' type: array - type: 'null' title: Urls description: The candidate's URLs. This can include a personal website, LinkedIn profile, or other relevant URLs. examples: - type: LINKEDIN value: https://www.linkedin.com/in/johndoe tags: anyOf: - items: type: string type: array - type: 'null' title: Tags description: The candidate's tags. Tags are used to categorize candidates and can be used to filter candidates in the UI. examples: - JUNIOR - INTERMEDIATE applications: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Applications description: The candidate's applications. examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 attachments: anyOf: - items: type: string format: uuid type: array - type: 'null' title: Attachments description: The candidate's attachments. examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 avatar: anyOf: - type: string - type: 'null' title: Avatar description: The candidate's avatar. examples: - https://www.example.com/avatar.jpg job_interview_stage_id: anyOf: - type: string format: uuid - type: 'null' title: Job Interview Stage Id description: The job stage id for the candidate examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 job_id: anyOf: - type: string format: uuid - type: 'null' title: Job Id description: The job id for the candidate examples: - 018b4bfb-5ece-70b1-ad5e-862a9433aa65 type: object title: PostCandidate securitySchemes: HTTPBearer: type: http scheme: bearer