openapi: 3.1.0 info: title: Endpoints subpackage_personalInformation API version: 1.0.0 servers: - url: https://api.letsdeel.com/rest/v2 - url: https://api-staging.letsdeel.com/rest/v2 tags: - name: subpackage_personalInformation paths: /people/{worker_id}/personal: get: operationId: get-person-personal-info summary: Get personal information by id description: "Get worker's personal information by using identifier.\n **Token scopes**: `people:read`" tags: - subpackage_personalInformation parameters: - name: worker_id in: path description: Unique identifier for a worker (External ID). required: true schema: type: string - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/personal-information_getPersonPersonalInfo_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/GetPersonalInformationByIdRequestInternalServerError' patch: operationId: update-person-personal-info summary: Update personal information description: "Update worker's personal information.\n **Token scopes**: `people:write`" tags: - subpackage_personalInformation parameters: - name: worker_id in: path description: Unique identifier for a worker. required: true schema: type: string format: uuid - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '204': description: Successful response content: application/json: schema: $ref: '#/components/schemas/personal-information_updatePersonPersonalInfo_Response_204' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PeopleWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaData' required: - data /people/external/{worker_id}/personal: get: operationId: get-person-personal-info-external-id summary: Get worker profile by external ID description: "Retrieve a worker profile record using an external worker identifier.\n **Token scopes**: `people:read`" tags: - subpackage_personalInformation parameters: - name: worker_id in: path description: System-wide external identifier for a worker record. required: true schema: type: string - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '204': description: Successful response content: application/json: schema: $ref: '#/components/schemas/personal-information_getPersonPersonalInfoExternalID_Response_204' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' patch: operationId: update-person-personal-info-external-id summary: Update personal information by external id description: "Update worker's personal information by using an external identifier.\n **Token scopes**: `people:write`" tags: - subpackage_personalInformation parameters: - name: worker_id in: path description: Unique identifier for a worker (External ID). required: true schema: type: string - name: Authorization in: header description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" required: true schema: type: string responses: '204': description: Successful response content: application/json: schema: $ref: '#/components/schemas/personal-information_updatePersonPersonalInfoExternalID_Response_204' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '401': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '403': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '404': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PeopleExternalWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaData' required: - data components: schemas: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaError: type: object properties: code: type: string description: Error code identifying the type of error. details: type: - string - 'null' description: Additional details about the error. message: type: string description: Error message describing what went wrong. required: - code - message title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaError PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataOoo: type: object properties: name: type: string description: The worker out of office name. end_date: type: string description: The worker out of office end date. leave_type: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataOooLeaveType' description: The worker leave type. start_date: type: string format: date description: The worker out of office start date. required: - name - end_date - leave_type - start_date description: Out of office information for the worker, including leave type and dates. title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataOoo PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataDemographicsGender: type: object properties: id: type: string format: uuid description: Unique identifier for the gender. name: type: string description: The name of the gender. other_name: type: - string - 'null' description: Gender added by user when "Other" option was chosen. required: - id - name - other_name description: Gender information for the worker. title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataDemographicsGender PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataAddressesItemsType: type: string enum: - HOME - POSTAL - CONTRACT description: The type of the address. title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataAddressesItemsType PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataKyc: type: object properties: is_kyc_approved: type: boolean description: Boolean to identify if the user is KYC verified kyc_approval_date: type: - string - 'null' description: The Date the user was KYC verified if applicable required: - is_kyc_approved - kyc_approval_date description: KYC (Know Your Customer) verification information for the worker. title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataKyc personal-information_getPersonPersonalInfoExternalID_Response_204: type: object properties: {} description: Empty response body title: personal-information_getPersonPersonalInfoExternalID_Response_204 PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataEmergencyContactsItems: type: object properties: id: type: string format: uuid description: Unique identifier for the emergency contact. name: type: string description: The name of the emergency contact. email: type: - string - 'null' format: email description: The email of the emergency contact. phone: type: string description: The phone number of the emergency contact. relationship: type: string description: The type of relationship between the owner and the emergency contact. preferred_language: oneOf: - $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataEmergencyContactsItemsPreferredLanguage' - type: 'null' description: The preferred language in which the emergency contact should be contacted. required: - id - name - email - phone - relationship - preferred_language title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataEmergencyContactsItems PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataEmergencyContactsItemsPreferredLanguage: type: object properties: id: type: integer description: Unique identifier for the preferred language. language: type: string description: The name of the language. required: - id - language description: The preferred language in which the emergency contact should be contacted. title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataEmergencyContactsItemsPreferredLanguage PeopleExternalWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaData: type: object properties: date_of_birth: type: string format: date description: 'The date of birth of the worker. Format: YYYY-MM-DD.' personal_email: type: string format: email description: The personal email of the worker. preferred_name: type: - string - 'null' description: The preferred name of the worker. legal_last_name: type: string description: The legal last name of the worker. legal_first_name: type: string description: The legal first name of the worker. title: PeopleExternalWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaData GetPersonalInformationByIdRequestInternalServerError: type: object properties: error: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaError' required: - error title: GetPersonalInformationByIdRequestInternalServerError PeopleWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaDataPhoneNumbersItemsType: type: string enum: - PERSONAL - WORK - HOME description: The type of the phone number. title: PeopleWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaDataPhoneNumbersItemsType personal-information_updatePersonPersonalInfoExternalID_Response_204: type: object properties: {} description: Empty response body title: personal-information_updatePersonPersonalInfoExternalID_Response_204 PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataPhoneNumbersItems: type: object properties: type: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataPhoneNumbersItemsType' description: The type of the phone number. dial_code: type: string description: The dial code (also known as country code). phone_number: type: string description: The phone number. required: - type - dial_code - phone_number title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataPhoneNumbersItems ApiError: type: object properties: message: type: string description: A description of the returned error path: type: string description: The JSON path where input validation failed title: ApiError ApiErrorContainer: type: object properties: request: $ref: '#/components/schemas/ApiErrorRequest' errors: type: array items: $ref: '#/components/schemas/ApiError' title: ApiErrorContainer PeopleWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaData: type: object properties: work_email: type: string format: email description: The personal email of the worker. date_of_birth: type: string format: date description: 'The date of birth of the worker. Format: YYYY-MM-DD.' phone_numbers: type: array items: $ref: '#/components/schemas/PeopleWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaDataPhoneNumbersItems' personal_email: type: string format: email description: The personal email of the worker. preferred_name: type: - string - 'null' description: The preferred name of the worker. legal_last_name: type: string description: The legal last name of the worker. legal_first_name: type: string description: The legal first name of the worker. title: PeopleWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaData PeopleWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaDataPhoneNumbersItems: type: object properties: type: $ref: '#/components/schemas/PeopleWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaDataPhoneNumbersItemsType' description: The type of the phone number. dial_code: type: string description: The dial code (also known as country code). phone_number: type: string description: The phone number. required: - type - dial_code - phone_number title: PeopleWorkerIdPersonalPatchRequestBodyContentApplicationJsonSchemaDataPhoneNumbersItems PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataDemographics: type: object properties: gender: oneOf: - $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataDemographicsGender' - type: 'null' description: Gender information for the worker. ethnicity: oneOf: - $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataDemographicsEthnicity' - type: 'null' description: Ethnicity information for the worker. required: - gender - ethnicity description: Demographic information for the worker, including gender and ethnicity. title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataDemographics personal-information_updatePersonPersonalInfo_Response_204: type: object properties: {} description: Empty response body title: personal-information_updatePersonPersonalInfo_Response_204 PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataPhoneNumbersItemsType: type: string enum: - PERSONAL - WORK - HOME description: The type of the phone number. title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataPhoneNumbersItemsType PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataAddressesItems: type: object properties: id: type: string format: uuid description: Unique identifier for the address. zip: type: - string - 'null' description: The zip code. city: type: - string - 'null' description: The city. type: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataAddressesItemsType' description: The type of the address. state: type: - string - 'null' description: The state. street: type: - string - 'null' description: The street address. country: type: string description: The country. required: - id - zip - city - type - state - street - country title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataAddressesItems PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataNationalitiesItems: type: object properties: code: type: string description: Unique 2-letters ISO country code. name: type: string description: The name of the country. required: - code - name title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataNationalitiesItems PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataDemographicsEthnicity: type: object properties: id: type: string format: uuid description: Unique identifier for the ethnicity. name: type: string description: The name of the ethnicity. other_name: type: - string - 'null' description: Ethnicity added by user when "Other" option was chosen. required: - id - name - other_name description: Ethnicity information for the worker. title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataDemographicsEthnicity PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string format: uuid description: Unique identifier for the worker. kyc: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataKyc' description: KYC (Know Your Customer) verification information for the worker. ooo: oneOf: - $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataOoo' - type: 'null' description: Out of office information for the worker, including leave type and dates. addresses: type: - array - 'null' items: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataAddressesItems' description: Array of addresses associated with the worker. worker_id: type: integer description: The worker id. work_email: type: - string - 'null' format: email description: The work email of the worker. external_id: type: - string - 'null' description: The external id of the worker. demographics: oneOf: - $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataDemographics' - type: 'null' description: Demographic information for the worker, including gender and ethnicity. date_of_birth: type: - string - 'null' format: date description: The date of birth of the worker. nationalities: type: - array - 'null' items: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataNationalitiesItems' description: Array of nationalities associated with the worker. phone_numbers: type: - array - 'null' items: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataPhoneNumbersItems' description: Array of phone numbers associated with the worker. personal_email: type: - string - 'null' format: email description: The personal email of the worker. preferred_name: type: - string - 'null' description: The preferred name of the worker. legal_last_name: type: - string - 'null' description: The legal last name of the worker. legal_first_name: type: - string - 'null' description: The legal first name of the worker. emergency_contacts: type: array items: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataEmergencyContactsItems' description: Array of emergency contacts associated with the worker. required: - id - worker_id - emergency_contacts title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaData PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataOooLeaveType: type: string enum: - LONG_TERM_LEAVE - SHORT_TERM_LEAVE description: The worker leave type. title: PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaDataOooLeaveType ApiErrorRequest: type: object properties: method: type: string description: The HTTP method of the failed request url: type: string description: The relative URL of the failed request status: type: number format: double description: The status code of the response api_req_id: type: string description: The request ID of the failed request docs: type: string description: A link to the official documentation for the requested endpoint resource source: type: string description: The source handler which produced the returned error code: type: number format: double description: The code of the source handler which produced the returned error title: ApiErrorRequest personal-information_getPersonPersonalInfo_Response_200: type: object properties: data: $ref: '#/components/schemas/PeopleWorkerIdPersonalGetResponsesContentApplicationJsonSchemaData' required: - data title: personal-information_getPersonPersonalInfo_Response_200 securitySchemes: deelToken: type: http scheme: bearer description: "## Authentication\nThe Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n" oauth2: type: http scheme: bearer description: Standard OAuth2 security scheme based on https://swagger.io/docs/specification/authentication/