> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.spott.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a candidate

> Updates the candidate with the specified ID. Only provided fields are updated. You can update personal details, contact information, and other candidate attributes.



## OpenAPI

````yaml /openapi-private.json patch /candidates/{id}
openapi: 3.1.0
info:
  title: Spott API Reference
  version: '0.1'
servers:
  - url: https://api.gospott.com
security: []
tags: []
paths:
  /candidates/{id}:
    patch:
      tags:
        - Candidates
      summary: Update a candidate
      description: >-
        Updates the candidate with the specified ID. Only provided fields are
        updated. You can update personal details, contact information, and other
        candidate attributes.
      operationId: updateCandidatePartial
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCandidatePartialDto'
      responses:
        '200':
          description: Candidate updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CandidateDto'
        '400':
          description: Bad request - validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
        '401':
          description: Unauthorized - invalid or missing authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
        '404':
          description: Candidate not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
        '409':
          description: >-
            The contact identifier is already in use by another candidate or
            user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
        '500':
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
      security:
        - x-api-key: []
components:
  schemas:
    UpdateCandidatePartialDto:
      type: object
      properties:
        firstName:
          description: The first name of the candidate
          example: John
          type: string
          minLength: 1
          maxLength: 100
          pattern: ^(?=.*\p{L})[\p{L}\p{M} '’.-]+$
        middleName:
          description: The middle name of the candidate
          example: William
          type: string
        lastName:
          description: The last name of the candidate
          example: Doe
          type: string
          minLength: 1
          maxLength: 100
          pattern: ^(?=.*\p{L})[\p{L}\p{M} '’.-]+$
        secondLastName:
          description: >-
            The second last name of the candidate (common in Spanish-speaking
            countries)
          example: Garcia
          type: string
        compensation:
          description: Compensation expectations for the candidate
          anyOf:
            - $ref: '#/components/schemas/UpdateCandidateCompensationDto'
            - type: 'null'
        mainContact:
          description: The main contact (recruiter) assigned to this candidate
          anyOf:
            - $ref: '#/components/schemas/UpdateCandidateMainContactDto'
            - type: 'null'
        languages:
          description: Languages spoken by the candidate
          type: array
          items:
            $ref: '#/components/schemas/UpdateCandidateLanguageDto'
        gender:
          description: The gender of the candidate
          anyOf:
            - type: string
              enum:
                - male
                - female
                - x
            - type: 'null'
        nationality:
          description: The nationalities of the candidate
          type: array
          items:
            $ref: '#/components/schemas/ECandidateNationality'
        status:
          description: The current status(es) of the candidate in the recruitment process
          type: array
          items:
            $ref: '#/components/schemas/ECandidateStatus'
        acquisitionSource:
          description: How the candidate was acquired (e.g., referral, job board, LinkedIn)
          anyOf:
            - $ref: '#/components/schemas/ECandidateAcquisitionSource'
            - type: 'null'
        locations:
          description: Physical locations associated with the candidate
          type: array
          items:
            $ref: '#/components/schemas/UpdateCandidateLocationDto'
        socialMedia:
          description: Social media profiles of the candidate (e.g., LinkedIn URL)
          type: array
          items:
            type: object
            properties:
              url:
                format: uri
                type: string
              type:
                type: string
                enum:
                  - LINKEDIN
                  - TWITTER
                  - FACEBOOK
                  - INSTAGRAM
              isPrimary:
                type: boolean
            required:
              - url
              - type
        emails:
          description: Email addresses of the candidate
          type: array
          items:
            $ref: '#/components/schemas/CreateCandidateEmailDto'
        phoneNumbers:
          description: Phone numbers of the candidate
          type: array
          items:
            $ref: '#/components/schemas/CreateCandidatePhoneNumberDto'
        visibleIfClientContact:
          description: >-
            Whether this candidate should be visible when they are also a client
            contact
          anyOf:
            - type: boolean
            - type: 'null'
        dateOfBirth:
          description: The date of birth of the candidate
          example: '1990-05-15T00:00:00.000Z'
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        lastInteractionAt:
          description: The date and time of the last interaction with the candidate
          example: '2024-01-15T14:30:00.000Z'
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        lastInteractionWithId:
          description: The user ID of the person who last interacted with the candidate
          example: user-uuid-here
          anyOf:
            - type: string
            - type: 'null'
      id: PrivateUpdateCandidatePartialDto
    CandidateDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        name:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateName
            avatarUrl:
              anyOf:
                - type: string
                - type: 'null'
            firstName:
              type: string
            lastName:
              type: string
          required:
            - viewType
            - avatarUrl
            - firstName
            - lastName
        gender:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateGender
            gender:
              type:
                - string
                - 'null'
              enum:
                - male
                - female
                - x
                - null
          required:
            - viewType
            - gender
        nationality:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateNationality
            nationality:
              type: array
              items:
                type: string
                enum:
                  - Afghan
                  - Albanian
                  - Algerian
                  - American
                  - Andorran
                  - Angolan
                  - Antiguan
                  - Argentinean
                  - Armenian
                  - Australian
                  - Austrian
                  - Azerbaijani
                  - Bahamian
                  - Bahraini
                  - Bangladeshi
                  - Barbadian
                  - Barbudan
                  - Batswana
                  - Belarusian
                  - Belgian
                  - Belizean
                  - Beninese
                  - Bhutanese
                  - Bolivian
                  - Bosnian
                  - Brazilian
                  - British
                  - Bruneian
                  - Bulgarian
                  - Burkinabe
                  - Burmese
                  - Burundian
                  - Cambodian
                  - Cameroonian
                  - Canadian
                  - Cape Verdean
                  - Central African
                  - Chadian
                  - Chilean
                  - Chinese
                  - Colombian
                  - Comoran
                  - Congolese
                  - Costa Rican
                  - Croatian
                  - Cuban
                  - Cypriot
                  - Czech
                  - Danish
                  - Djibouti
                  - Dominican
                  - Dutch
                  - East Timorese
                  - Ecuadorean
                  - Egyptian
                  - Emirian
                  - Equatorial Guinean
                  - Eritrean
                  - Estonian
                  - Ethiopian
                  - Fijian
                  - Filipino
                  - Finnish
                  - French
                  - Gabonese
                  - Gambian
                  - Georgian
                  - German
                  - Ghanaian
                  - Greek
                  - Grenadian
                  - Guatemalan
                  - Guinea-Bissauan
                  - Guinean
                  - Guyanese
                  - Haitian
                  - Herzegovinian
                  - Honduran
                  - Hungarian
                  - I-Kiribati
                  - Icelander
                  - Indian
                  - Indonesian
                  - Iranian
                  - Iraqi
                  - Irish
                  - Israeli
                  - Italian
                  - Ivorian
                  - Jamaican
                  - Japanese
                  - Jordanian
                  - Kazakhstani
                  - Kenyan
                  - Kittian and Nevisian
                  - Kuwaiti
                  - Kyrgyz
                  - Laotian
                  - Latvian
                  - Lebanese
                  - Liberian
                  - Libyan
                  - Liechtensteiner
                  - Lithuanian
                  - Luxembourger
                  - Macedonian
                  - Malagasy
                  - Malawian
                  - Malaysian
                  - Maldivian
                  - Malian
                  - Maltese
                  - Marshallese
                  - Mauritanian
                  - Mauritian
                  - Mexican
                  - Micronesian
                  - Moldovan
                  - Monacan
                  - Mongolian
                  - Moroccan
                  - Mosotho
                  - Motswana
                  - Mozambican
                  - Namibian
                  - Nauruan
                  - Nepalese
                  - New Zealander
                  - Ni-Vanuatu
                  - Nicaraguan
                  - Nigerian
                  - Nigerien
                  - North Korean
                  - Northern Irish
                  - Norwegian
                  - Omani
                  - Pakistani
                  - Palauan
                  - Panamanian
                  - Papua New Guinean
                  - Paraguayan
                  - Peruvian
                  - Polish
                  - Portuguese
                  - Qatari
                  - Romanian
                  - Russian
                  - Rwandan
                  - Saint Lucian
                  - Salvadoran
                  - Samoan
                  - San Marinese
                  - Sao Tomean
                  - Saudi
                  - Scottish
                  - Senegalese
                  - Serbian
                  - Seychellois
                  - Sierra Leonean
                  - Singaporean
                  - Slovakian
                  - Slovenian
                  - Solomon Islander
                  - Somali
                  - South African
                  - South Korean
                  - Spanish
                  - Sri Lankan
                  - Sudanese
                  - Surinamer
                  - Swazi
                  - Swedish
                  - Swiss
                  - Syrian
                  - Taiwanese
                  - Tajik
                  - Tanzanian
                  - Thai
                  - Togolese
                  - Tongan
                  - Trinidadian or Tobagonian
                  - Tunisian
                  - Turkish
                  - Tuvaluan
                  - Ugandan
                  - Ukrainian
                  - Uruguayan
                  - Uzbekistani
                  - Venezuelan
                  - Vietnamese
                  - Welsh
                  - Yemenite
                  - Zambian
                  - Zimbabwean
          required:
            - viewType
            - nationality
        status:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateStatus
            status:
              type: array
              items:
                type: string
                enum:
                  - actively_looking
                  - approachable_but_not_actively_looking
                  - do_not_contact
                  - do_not_poach
                  - not_actively_looking
          required:
            - viewType
            - status
        emails:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateEmails
            emails:
              type: array
              items:
                type: object
                properties:
                  email:
                    type: string
                  purpose:
                    type:
                      - string
                      - 'null'
                    enum:
                      - personal
                      - work
                      - null
                  isPrimary:
                    type: boolean
                required:
                  - email
                  - purpose
                  - isPrimary
          required:
            - viewType
            - emails
        phoneNumbers:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidatePhoneNumbers
            phoneNumbers:
              type: array
              items:
                type: object
                properties:
                  phoneNumber:
                    type: string
                  purpose:
                    type:
                      - string
                      - 'null'
                    enum:
                      - personal
                      - work
                      - null
                  isPrimary:
                    type: boolean
                required:
                  - phoneNumber
                  - purpose
                  - isPrimary
          required:
            - viewType
            - phoneNumbers
        locations:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateLocation
            locations:
              type: array
              items:
                $ref: '#/components/schemas/LocationDto'
          required:
            - viewType
            - locations
        dateOfBirth:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateDateOfBirth
            dateOfBirth:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
          required:
            - viewType
            - dateOfBirth
        socialMedia:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateSocialMedia
            socialMedia:
              type: array
              items:
                type: object
                properties:
                  url:
                    type: string
                  type:
                    type: string
                    enum:
                      - LINKEDIN
                      - TWITTER
                      - FACEBOOK
                      - INSTAGRAM
                  isPrimary:
                    type: boolean
                required:
                  - url
                  - type
                  - isPrimary
          required:
            - viewType
            - socialMedia
        lastInteractionDate:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateLastInteractionDate
            lastInteractionDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
          required:
            - viewType
            - lastInteractionDate
        lastInteractionWith:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateLastInteractionWith
            user:
              anyOf:
                - $ref: '#/components/schemas/UserDto'
                - type: 'null'
          required:
            - viewType
            - user
        nextInteractionDate:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateNextInteractionDate
            nextInteractionDate:
              anyOf:
                - $ref: '#/components/schemas/DateISO'
                - type: 'null'
          required:
            - viewType
            - nextInteractionDate
        nextInteractionWith:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateNextInteractionWith
            user:
              anyOf:
                - $ref: '#/components/schemas/UserDto'
                - type: 'null'
          required:
            - viewType
            - user
        mainContact:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateMainContact
            user:
              anyOf:
                - $ref: '#/components/schemas/UserDto'
                - type: 'null'
          required:
            - viewType
            - user
        languages:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateLanguages
            languages:
              type: array
              items:
                $ref: '#/components/schemas/LanguageDto'
          required:
            - viewType
            - languages
        compensation:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateCompensation
            compensation:
              anyOf:
                - $ref: '#/components/schemas/CompensationDto'
                - type: 'null'
          required:
            - viewType
            - compensation
        currentPlacements:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateCurrentPlacements
            hasCurrentPlacement:
              type: boolean
            placements:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  company:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      logoUrl:
                        anyOf:
                          - type: string
                          - type: 'null'
                    required:
                      - id
                      - name
                      - logoUrl
                  startDate:
                    anyOf:
                      - $ref: '#/components/schemas/DateISO'
                      - type: 'null'
                  endDate:
                    anyOf:
                      - $ref: '#/components/schemas/DateISO'
                      - type: 'null'
                required:
                  - id
                  - company
                  - startDate
                  - endDate
          required:
            - viewType
            - hasCurrentPlacement
            - placements
        nextTaskDue:
          type: object
          properties:
            viewType:
              type: string
              enum:
                - candidateNextTaskDue
            nextTaskDue:
              anyOf:
                - $ref: '#/components/schemas/NextTaskDueDto'
                - type: 'null'
          required:
            - viewType
            - nextTaskDue
        createdAt:
          $ref: '#/components/schemas/DateISO'
        modifiedAt:
          $ref: '#/components/schemas/DateISO'
        lastActivityDate:
          $ref: '#/components/schemas/DateISO'
        acquisitionSource:
          anyOf:
            - type: object
              properties:
                viewType:
                  type: string
                  enum:
                    - candidateAcquisitionSource
                acquisitionSource:
                  type:
                    - string
                    - 'null'
                  enum:
                    - manual
                    - cv_parse
                    - inbound_vacancy_portal
                    - inbound_spontaneous_application
                    - chrome_extension_linkedin
                    - inbound_from_linkedin_jobboard_email
                    - inbound_from_external_jobboard
                    - juicebox
                    - pin
                    - maildrop
                    - csv_import
                    - vdab
                    - advertsdata
                    - null
              required:
                - viewType
                - acquisitionSource
            - type: 'null'
        latestWorkExperience:
          anyOf:
            - $ref: '#/components/schemas/WorkExperienceBadgeDto'
            - type: 'null'
        customAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CustomAttributeItemDto'
        aiSummary:
          anyOf:
            - type: string
            - type: 'null'
        isVisibleIfClientContact:
          anyOf:
            - type: boolean
            - type: 'null'
        skills:
          type: array
          items:
            $ref: '#/components/schemas/SkillBadgeDto'
        clientContacts:
          anyOf:
            - $ref: '#/components/schemas/CandidateClientContactsTypeDto'
            - type: 'null'
        hasClientContacts:
          type: boolean
        hasActiveClientContacts:
          type: boolean
      required:
        - id
        - name
        - gender
        - nationality
        - status
        - emails
        - phoneNumbers
        - locations
        - dateOfBirth
        - socialMedia
        - lastInteractionDate
        - lastInteractionWith
        - nextInteractionDate
        - nextInteractionWith
        - mainContact
        - languages
        - compensation
        - currentPlacements
        - nextTaskDue
        - createdAt
        - modifiedAt
        - lastActivityDate
        - acquisitionSource
        - latestWorkExperience
        - customAttributes
        - aiSummary
        - isVisibleIfClientContact
        - clientContacts
        - hasClientContacts
        - hasActiveClientContacts
      id: PrivateCandidateDto
    ExceptionBaseDto:
      type: object
      properties:
        status:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        message:
          type: string
        requestId:
          type: string
      required:
        - status
        - message
        - requestId
      id: ExceptionBaseDto
    UpdateCandidateCompensationDto:
      $ref: '#/components/schemas/CompensationDto'
      id: PrivateUpdateCandidateCompensationDto
    UpdateCandidateMainContactDto:
      type: object
      properties:
        userId:
          type: string
          minLength: 1
      required:
        - userId
      id: PrivateUpdateCandidateMainContactDto
    UpdateCandidateLanguageDto:
      $ref: '#/components/schemas/LanguageDto'
      id: PrivateUpdateCandidateLanguageDto
    ECandidateNationality:
      type: string
      enum:
        - Afghan
        - Albanian
        - Algerian
        - American
        - Andorran
        - Angolan
        - Antiguan
        - Argentinean
        - Armenian
        - Australian
        - Austrian
        - Azerbaijani
        - Bahamian
        - Bahraini
        - Bangladeshi
        - Barbadian
        - Barbudan
        - Batswana
        - Belarusian
        - Belgian
        - Belizean
        - Beninese
        - Bhutanese
        - Bolivian
        - Bosnian
        - Brazilian
        - British
        - Bruneian
        - Bulgarian
        - Burkinabe
        - Burmese
        - Burundian
        - Cambodian
        - Cameroonian
        - Canadian
        - Cape Verdean
        - Central African
        - Chadian
        - Chilean
        - Chinese
        - Colombian
        - Comoran
        - Congolese
        - Costa Rican
        - Croatian
        - Cuban
        - Cypriot
        - Czech
        - Danish
        - Djibouti
        - Dominican
        - Dutch
        - East Timorese
        - Ecuadorean
        - Egyptian
        - Emirian
        - Equatorial Guinean
        - Eritrean
        - Estonian
        - Ethiopian
        - Fijian
        - Filipino
        - Finnish
        - French
        - Gabonese
        - Gambian
        - Georgian
        - German
        - Ghanaian
        - Greek
        - Grenadian
        - Guatemalan
        - Guinea-Bissauan
        - Guinean
        - Guyanese
        - Haitian
        - Herzegovinian
        - Honduran
        - Hungarian
        - I-Kiribati
        - Icelander
        - Indian
        - Indonesian
        - Iranian
        - Iraqi
        - Irish
        - Israeli
        - Italian
        - Ivorian
        - Jamaican
        - Japanese
        - Jordanian
        - Kazakhstani
        - Kenyan
        - Kittian and Nevisian
        - Kuwaiti
        - Kyrgyz
        - Laotian
        - Latvian
        - Lebanese
        - Liberian
        - Libyan
        - Liechtensteiner
        - Lithuanian
        - Luxembourger
        - Macedonian
        - Malagasy
        - Malawian
        - Malaysian
        - Maldivian
        - Malian
        - Maltese
        - Marshallese
        - Mauritanian
        - Mauritian
        - Mexican
        - Micronesian
        - Moldovan
        - Monacan
        - Mongolian
        - Moroccan
        - Mosotho
        - Motswana
        - Mozambican
        - Namibian
        - Nauruan
        - Nepalese
        - New Zealander
        - Ni-Vanuatu
        - Nicaraguan
        - Nigerian
        - Nigerien
        - North Korean
        - Northern Irish
        - Norwegian
        - Omani
        - Pakistani
        - Palauan
        - Panamanian
        - Papua New Guinean
        - Paraguayan
        - Peruvian
        - Polish
        - Portuguese
        - Qatari
        - Romanian
        - Russian
        - Rwandan
        - Saint Lucian
        - Salvadoran
        - Samoan
        - San Marinese
        - Sao Tomean
        - Saudi
        - Scottish
        - Senegalese
        - Serbian
        - Seychellois
        - Sierra Leonean
        - Singaporean
        - Slovakian
        - Slovenian
        - Solomon Islander
        - Somali
        - South African
        - South Korean
        - Spanish
        - Sri Lankan
        - Sudanese
        - Surinamer
        - Swazi
        - Swedish
        - Swiss
        - Syrian
        - Taiwanese
        - Tajik
        - Tanzanian
        - Thai
        - Togolese
        - Tongan
        - Trinidadian or Tobagonian
        - Tunisian
        - Turkish
        - Tuvaluan
        - Ugandan
        - Ukrainian
        - Uruguayan
        - Uzbekistani
        - Venezuelan
        - Vietnamese
        - Welsh
        - Yemenite
        - Zambian
        - Zimbabwean
      id: ECandidateNationality
    ECandidateStatus:
      type: string
      enum:
        - actively_looking
        - approachable_but_not_actively_looking
        - do_not_contact
        - do_not_poach
        - not_actively_looking
      id: ECandidateStatus
    ECandidateAcquisitionSource:
      anyOf:
        - type: string
          enum:
            - manual
            - cv_parse
            - inbound_vacancy_portal
            - inbound_spontaneous_application
            - chrome_extension_linkedin
            - inbound_from_linkedin_jobboard_email
            - inbound_from_external_jobboard
            - juicebox
            - pin
            - maildrop
            - csv_import
            - vdab
            - advertsdata
        - type: 'null'
      id: ECandidateAcquisitionSource
    UpdateCandidateLocationDto:
      $ref: '#/components/schemas/CreateLocationDto'
      id: PrivateUpdateCandidateLocationDto
    CreateCandidateEmailDto:
      type: object
      properties:
        email:
          type: string
          format: email
          pattern: >-
            ^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$
        purpose:
          anyOf:
            - type: string
              enum:
                - personal
                - work
            - type: 'null'
        isPrimary:
          type: boolean
      required:
        - email
        - purpose
      id: PrivateCreateCandidateEmailDto
    CreateCandidatePhoneNumberDto:
      type: object
      properties:
        phoneNumber:
          type: string
        purpose:
          anyOf:
            - type: string
              enum:
                - personal
                - work
            - type: 'null'
        isPrimary:
          type: boolean
      required:
        - phoneNumber
        - purpose
      id: PrivateCreateCandidatePhoneNumberDto
    DateISO:
      id: DateISO
      format: date-time
      anyOf:
        - type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
        - type: string
          format: date
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
    LocationDto:
      type: object
      properties:
        street1:
          anyOf:
            - type: string
            - type: 'null'
        street2:
          anyOf:
            - type: string
            - type: 'null'
        postalCode:
          anyOf:
            - type: string
            - type: 'null'
        city:
          anyOf:
            - type: string
            - type: 'null'
        region:
          anyOf:
            - type: string
            - type: 'null'
        state:
          anyOf:
            - type: string
            - type: 'null'
        country:
          anyOf:
            - type: string
            - type: 'null'
        rawCityCountry:
          anyOf:
            - type: string
            - type: 'null'
        latitude:
          anyOf:
            - type: number
            - type: 'null'
        longitude:
          anyOf:
            - type: number
            - type: 'null'
        formattedAddress:
          anyOf:
            - type: string
            - type: 'null'
        type:
          anyOf:
            - $ref: '#/components/schemas/LocationType'
            - type: 'null'
      required:
        - street1
        - street2
        - postalCode
        - city
        - region
        - state
        - country
        - rawCityCountry
        - latitude
        - longitude
        - formattedAddress
        - type
      id: PrivateLocationDto
    UserDto:
      type: object
      properties:
        userId:
          type: string
        name:
          type: string
        email:
          type: string
          format: email
          pattern: >-
            ^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$
        avatarUrl:
          anyOf:
            - type: string
            - type: 'null'
        deactivatedAt:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - userId
        - name
        - email
        - avatarUrl
        - deactivatedAt
      id: PrivateUserDto
    LanguageDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        language:
          $ref: '#/components/schemas/CandidateLanguage'
        fluency:
          $ref: '#/components/schemas/CandidateFluency'
      required:
        - language
      id: PrivateLanguageDto
    CompensationDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        currency:
          $ref: '#/components/schemas/CandidateCurrency'
        totalCompensation:
          anyOf:
            - type: number
            - type: 'null'
        baseCompensation:
          anyOf:
            - type: number
            - type: 'null'
      required:
        - currency
      id: PrivateCompensationDto
    NextTaskDueDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        content:
          type: string
        dueDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - id
        - content
        - dueDate
      id: PrivateNextTaskDueDto
    WorkExperienceBadgeDto:
      type: object
      properties:
        title:
          anyOf:
            - type: string
            - type: 'null'
        company:
          anyOf:
            - $ref: '#/components/schemas/CompanyBadgeDto'
            - type: 'null'
      required:
        - title
        - company
      id: PrivateWorkExperienceBadgeDto
    CustomAttributeItemDto:
      type: object
      properties:
        attributeDefinitionId:
          type: string
          minLength: 1
        label:
          type: string
        aiFillOngoing:
          type: boolean
        aiOverridden:
          type: boolean
        isFilledByAI:
          type: boolean
        value:
          $ref: '#/components/schemas/SharedCustomAttributeTypeDto'
      required:
        - attributeDefinitionId
        - label
        - aiFillOngoing
        - aiOverridden
        - isFilledByAI
        - value
      id: PrivateCustomAttributeItemDto
    SkillBadgeDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
      id: PrivateSkillBadgeDto
    CandidateClientContactsTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - candidateClientContacts
        clientContacts:
          type: array
          items:
            $ref: '#/components/schemas/CandidateClientContactOverviewItemDto'
      required:
        - viewType
        - clientContacts
      id: PrivateCandidateClientContactsTypeDto
    CreateLocationDto:
      type: object
      properties:
        street1:
          anyOf:
            - type: string
            - type: 'null'
        street2:
          anyOf:
            - type: string
            - type: 'null'
        postalCode:
          anyOf:
            - type: string
            - type: 'null'
        city:
          anyOf:
            - type: string
            - type: 'null'
        region:
          anyOf:
            - type: string
            - type: 'null'
        state:
          anyOf:
            - type: string
            - type: 'null'
        country:
          anyOf:
            - type: string
            - type: 'null'
        latitude:
          anyOf:
            - type: number
            - type: 'null'
        longitude:
          anyOf:
            - type: number
            - type: 'null'
        type:
          anyOf:
            - $ref: '#/components/schemas/LocationType'
            - type: 'null'
      required:
        - street1
        - street2
        - postalCode
        - city
        - region
        - state
        - country
        - type
      id: PrivateCreateLocationDto
    LocationType:
      type: string
      enum:
        - primary_home
        - secondary_home
        - primary_work
        - headquarters
        - regional_office
      id: LocationType
    CandidateLanguage:
      type: string
      enum:
        - Afrikaans
        - Albanian
        - Amharic
        - Arabic
        - Armenian
        - Assamese
        - Aymara
        - Azerbaijani
        - Bangla
        - Basque
        - Belarusian
        - Bemba
        - Berber
        - Bislama
        - Bosnian
        - Bulgarian
        - Burman
        - Catalan
        - Chechen
        - Chewa
        - Chinese (Mandarin)
        - Chinese (Cantonese)
        - Chittagonian
        - Croatian
        - Czech
        - Danish
        - Dari
        - Dhivehi
        - Dutch
        - Dzongkha
        - English
        - Estonian
        - Ewe
        - Fijian
        - Filipino
        - Finnish
        - French
        - Galician
        - Georgian
        - German
        - Greek
        - Guarani
        - Gujarati
        - Haitian Creole
        - Hausa
        - Hebrew
        - Hindi
        - Hungarian
        - Icelandic
        - Igbo
        - Indonesian
        - Irish
        - Italian
        - Japanese
        - Kannada
        - Kazakh
        - Khmer
        - Kinyarwanda
        - Kirundi
        - Korean
        - Kurdish
        - Kyrgyz
        - Lao
        - Latvian
        - Lingala
        - Lithuanian
        - Luganda
        - Luxembourgish
        - Macedonian
        - Malagasy
        - Malay
        - Malayalam
        - Maltese
        - Maori
        - Marathi
        - Moldovan
        - Mongolian
        - Montenegrin
        - Ndebele
        - Nepali
        - Norwegian
        - Odia
        - Oromo
        - Pashto
        - Persian
        - Polish
        - Portuguese
        - Punjabi
        - Quechua
        - Romanian
        - Russian
        - Samoan
        - Sango
        - Serbian
        - Sesotho
        - Setswana
        - Shona
        - Sindhi
        - Sinhala
        - Slovak
        - Slovenian
        - Somali
        - Spanish
        - Swahili
        - Swedish
        - Tajik
        - Tamil
        - Telugu
        - Tetum
        - Thai
        - Tigrinya
        - Tok Pisin
        - Tongan
        - Tsonga
        - Tswana
        - Turkish
        - Turkmen
        - Ukrainian
        - Urdu
        - Uzbek
        - Venda
        - Vietnamese
        - Welsh
        - Xhosa
        - Yoruba
        - Zulu
      id: PrivateCandidateLanguage
    CandidateFluency:
      anyOf:
        - type: string
          enum:
            - Elementary proficiency
            - Limited working proficiency
            - Professional working proficiency
            - Full professional proficiency
            - Native or bilingual proficiency
        - type: 'null'
      id: PrivateCandidateFluency
    CandidateCurrency:
      $ref: '#/components/schemas/DmCurrency'
      id: PrivateCandidateCurrency
    CompanyBadgeDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        logoUrl:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - id
        - name
        - logoUrl
      id: PrivateCompanyBadgeDto
    SharedCustomAttributeTypeDto:
      oneOf:
        - $ref: '#/components/schemas/CustomTextTypeDto'
        - $ref: '#/components/schemas/CustomNumberTypeDto'
        - $ref: '#/components/schemas/CustomCheckboxTypeDto'
        - $ref: '#/components/schemas/CustomDateTypeDto'
        - $ref: '#/components/schemas/CustomTimestampTypeDto'
        - $ref: '#/components/schemas/CustomRatingTypeDto'
        - $ref: '#/components/schemas/CustomSelectTypeDto'
        - $ref: '#/components/schemas/CustomMultiSelectTypeDto'
        - $ref: '#/components/schemas/CustomCurrencyTypeDto'
        - $ref: '#/components/schemas/CustomDateRangeTypeDto'
        - $ref: '#/components/schemas/CustomDurationTypeDto'
        - $ref: '#/components/schemas/CustomUrlTypeDto'
        - $ref: '#/components/schemas/CustomEntityTypeDto'
        - $ref: '#/components/schemas/CustomMultiEntityTypeDto'
      id: SharedPrivateCustomAttributeTypeDto
    CandidateClientContactOverviewItemDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        company:
          $ref: '#/components/schemas/ClientBadgeDto'
        role:
          anyOf:
            - type: string
            - type: 'null'
        department:
          anyOf:
            - type: string
            - type: 'null'
        startDate:
          $ref: '#/components/schemas/DateISO'
        endDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        active:
          type: boolean
        emailAddresses:
          type: array
          items:
            $ref: '#/components/schemas/CandidateEmailDto'
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/CandidatePhoneNumberDto'
        stage:
          $ref: '#/components/schemas/ClientStageDto'
        customAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CustomAttributeItemDto'
      required:
        - id
        - company
        - role
        - department
        - startDate
        - endDate
        - active
        - emailAddresses
        - phoneNumbers
        - stage
        - customAttributes
      id: PrivateCandidateClientContactOverviewItemDto
    DmCurrency:
      type: string
      enum:
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - ARS
        - AUD
        - AWG
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BHD
        - BIF
        - BMD
        - BND
        - BOB
        - BRL
        - BSD
        - BTC
        - BTN
        - BWP
        - BYN
        - BZD
        - CAD
        - CDF
        - CHF
        - CLF
        - CLP
        - CNH
        - CNY
        - COP
        - CRC
        - CUC
        - CUP
        - CVE
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - EGP
        - ERN
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GGP
        - GHS
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HRK
        - HTG
        - HUF
        - IDR
        - ILS
        - IMP
        - INR
        - IQD
        - IRR
        - ISK
        - JEP
        - JMD
        - JOD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KPW
        - KRW
        - KWD
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - LYD
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRU
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - OMR
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SDG
        - SEK
        - SGD
        - SHP
        - SLE
        - SLL
        - SOS
        - SRD
        - SSP
        - STD
        - STN
        - SVC
        - SYP
        - SZL
        - THB
        - TJS
        - TMT
        - TND
        - TOP
        - TRY
        - TTD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VEF
        - VES
        - VND
        - VUV
        - WST
        - XAF
        - XAG
        - XAU
        - XCD
        - XCG
        - XDR
        - XOF
        - XPD
        - XPF
        - XPT
        - YER
        - ZAR
        - ZMW
        - ZWG
        - ZWL
      id: DmCurrency
    CustomTextTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customText
        text:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - viewType
        - text
      id: PrivateCustomTextTypeDto
    CustomNumberTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customNumber
        number:
          anyOf:
            - type: number
            - type: 'null'
      required:
        - viewType
        - number
      id: PrivateCustomNumberTypeDto
    CustomCheckboxTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customCheckbox
        checked:
          anyOf:
            - type: boolean
            - type: 'null'
      required:
        - viewType
        - checked
      id: PrivateCustomCheckboxTypeDto
    CustomDateTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customDate
        date:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - viewType
        - date
      id: PrivateCustomDateTypeDto
    CustomTimestampTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customTimestamp
        timestamp:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - viewType
        - timestamp
      id: PrivateCustomTimestampTypeDto
    CustomRatingTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customRating
        rating:
          anyOf:
            - type: number
            - type: 'null'
      required:
        - viewType
        - rating
      id: PrivateCustomRatingTypeDto
    CustomSelectTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customSelect
        select:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - viewType
        - select
      id: PrivateCustomSelectTypeDto
    CustomMultiSelectTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customMultiSelect
        multiSelect:
          type: array
          items:
            type: string
      required:
        - viewType
        - multiSelect
      id: PrivateCustomMultiSelectTypeDto
    CustomCurrencyTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customCurrency
        monetaryAmount:
          anyOf:
            - $ref: '#/components/schemas/MonetaryAmountDto'
            - type: 'null'
      required:
        - viewType
        - monetaryAmount
      id: PrivateCustomCurrencyTypeDto
    CustomDateRangeTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customDateRange
        dateRange:
          anyOf:
            - $ref: '#/components/schemas/DateRangeDto'
            - type: 'null'
      required:
        - viewType
        - dateRange
      id: PrivateCustomDateRangeTypeDto
    CustomDurationTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customDuration
        duration:
          anyOf:
            - type: number
            - type: 'null'
      required:
        - viewType
        - duration
      id: PrivateCustomDurationTypeDto
    CustomUrlTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customUrl
        url:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - viewType
        - url
      id: PrivateCustomUrlTypeDto
    CustomEntityTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customEntity
        type:
          type: string
          enum:
            - user
        id:
          anyOf:
            - type: string
            - type: 'null'
        entity:
          anyOf:
            - $ref: '#/components/schemas/UserBadgeDto'
            - type: 'null'
      required:
        - viewType
        - type
        - id
      id: PrivateCustomEntityTypeDto
    CustomMultiEntityTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customMultiEntity
        type:
          type: string
          enum:
            - user
        ids:
          type: array
          items:
            type: string
        entities:
          type: array
          items:
            $ref: '#/components/schemas/UserBadgeDto'
      required:
        - viewType
        - type
        - ids
      id: PrivateCustomMultiEntityTypeDto
    ClientBadgeDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        logoUrl:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - id
        - name
        - logoUrl
      id: PrivateClientBadgeDto
    CandidateEmailDto:
      type: object
      properties:
        email:
          type: string
        purpose:
          type:
            - string
            - 'null'
          enum:
            - personal
            - work
            - null
        isPrimary:
          type: boolean
      required:
        - email
        - purpose
        - isPrimary
      id: PrivateCandidateEmailDto
    CandidatePhoneNumberDto:
      type: object
      properties:
        phoneNumber:
          type: string
        purpose:
          type:
            - string
            - 'null'
          enum:
            - personal
            - work
            - null
        isPrimary:
          type: boolean
      required:
        - phoneNumber
        - purpose
        - isPrimary
      id: PrivateCandidatePhoneNumberDto
    ClientStageDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        order:
          type: number
        name:
          type: string
        colorHex:
          type: string
      required:
        - id
        - order
        - name
        - colorHex
      id: PrivateClientStageDto
    MonetaryAmountDto:
      type: object
      properties:
        currency:
          $ref: '#/components/schemas/DmCurrency'
        amount:
          type: number
      required:
        - currency
        - amount
      id: PrivateMonetaryAmountDto
    DateRangeDto:
      type: object
      properties:
        startDate:
          $ref: '#/components/schemas/DateISO'
        endDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - startDate
        - endDate
      id: PrivateDateRangeDto
    UserBadgeDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        avatarUrl:
          anyOf:
            - type: string
            - type: 'null'
        deactivatedAt:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - id
        - name
        - avatarUrl
        - deactivatedAt
      id: PrivateUserBadgeDto
  securitySchemes:
    x-api-key:
      type: apiKey
      name: x-api-key
      in: header
      description: >-
        API key for authentication. Get your API key from Settings → API Keys in
        your Spott dashboard.

````