openapi: 3.1.0 info: title: Endpoints subpackage_organizationStructure API version: 1.0.0 servers: - url: https://api.letsdeel.com/rest/v2 - url: https://api-staging.letsdeel.com/rest/v2 tags: - name: subpackage_organizationStructure paths: /hris/organization_structures: post: operationId: create-organization-structure summary: Create a new HRIS Organization Structure. description: "Create a new HRIS Organization Structure.\n **Token scopes**: `organizations:write`" tags: - subpackage_organizationStructure parameters: - 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 operation content: application/json: schema: $ref: '#/components/schemas/organization-structure_createOrganizationStructure_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: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HrisOrganizationStructuresPostRequestBodyContentApplicationJsonSchemaData' get: operationId: get-organization-structures summary: Get Organization Structure description: "Retrieves detailed information about the organization's hierarchical structure, including departments and teams.\n **Token scopes**: `organizations:read`" tags: - subpackage_organizationStructure parameters: - name: offset in: query description: Return a page of results with given number of records. required: false schema: type: integer format: int64 default: 0 - name: limit in: query description: Return a page of results with given number of records. required: false schema: type: number format: double - 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 operation content: application/json: schema: $ref: '#/components/schemas/organization-structure_getOrganizationStructures_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: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /hris/organization_structures/external/{external_id}: delete: operationId: delete-organization-structure-by-external-id summary: Delete an Org Structure from the Organization by external ID description: "undefined\n **Token scopes**: `organizations:write`" tags: - subpackage_organizationStructure parameters: - name: external_id in: path description: 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: Successfully deleted content: application/json: schema: $ref: '#/components/schemas/organization-structure_deleteOrganizationStructureByExternalId_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: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' get: operationId: get-organization-structure-by-external-id summary: Fetch an Org Structure from the Organization description: "undefined\n **Token scopes**: `organizations:read`" tags: - subpackage_organizationStructure parameters: - name: external_id in: path description: 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 operation content: application/json: schema: $ref: '#/components/schemas/organization-structure_getOrganizationStructureByExternalId_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: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' patch: operationId: update-organization-structure-by-external-id summary: Update an existing HRIS Org Structure by external ID description: "undefined\n **Token scopes**: `organizations:write`" tags: - subpackage_organizationStructure parameters: - name: external_id in: path description: 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 operation content: application/json: schema: $ref: '#/components/schemas/organization-structure_updateOrganizationStructureByExternalId_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: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HrisOrganizationStructuresExternalExternalIdPatchRequestBodyContentApplicationJsonSchemaData' /hris/organization_structures/{hrisOrgStr_id}: delete: operationId: delete-organization-structure summary: Delete Organization Structure tags: - subpackage_organizationStructure parameters: - name: hrisOrgStr_id in: path required: true schema: type: string responses: '200': description: Successful response get: operationId: get-organization-structure summary: Get Organization Structure tags: - subpackage_organizationStructure parameters: - name: hrisOrgStr_id in: path required: true schema: type: string responses: '200': description: Successful response patch: operationId: update-organization-structure summary: Update Organization Structure tags: - subpackage_organizationStructure parameters: - name: hrisOrgStr_id in: path required: true schema: type: string responses: '200': description: Successful response /hris/organization-structures/teams/{team_id}/custom-fields: get: operationId: get-team-custom-fields summary: Retrieve custom fields for organization description: "Retrieves custom field values for a specific organization structure (team). This endpoint returns all custom fields configured for organization structures, including their current values, inheritance status, and any pending change requests. Custom fields can be inherited from parent teams in the organizational hierarchy, and the response indicates whether each value is inherited or set directly on the specified team. If the user has permission to view data change requests, pending changes will also be included in the response.\n **Token scopes**: `organizations:read`" tags: - subpackage_organizationStructure parameters: - name: team_id in: path description: Public ID (UUID) of the HRIS team/organization structure required: true schema: type: string format: uuid - name: limit in: query description: Max items per page (default 20, max 100) required: false schema: type: integer default: 20 - name: cursor in: query description: Opaque cursor for pagination required: false 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: Custom field values retrieved successfully content: application/json: schema: $ref: '#/components/schemas/organization-structure_getTeamCustomFields_Response_200' '400': description: Bad request - Organization is not set or Deel HR is not enabled for this organization. content: application/json: schema: $ref: '#/components/schemas/RetrieveCustomFieldsForOrganizationRequestBadRequestError' '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-team-custom-fields summary: Update organization structure team custom fields description: "Use this endpoint to keep team metadata current or to schedule future organizational changes. Provide the custom field IDs to modify and use an effective date to schedule updates. Set the value to null to delete a field value.\n **Token scopes**: `organizations:read`" tags: - subpackage_organizationStructure parameters: - name: team_id in: path description: Public ID (UUID) of the HRIS team/organization structure 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: '200': description: Organization structure custom fields updated successfully content: application/json: schema: $ref: '#/components/schemas/organization-structure_updateTeamCustomFields_Response_200' '400': description: Bad request - Organization is not set or Deel HR is not enabled for this organization. content: application/json: schema: $ref: '#/components/schemas/UpdateOrganizationStructureTeamCustomFieldsRequestBadRequestError' '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/HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchRequestBodyContentApplicationJsonSchemaData' required: - data /people/{id}/department: put: operationId: update-person-department summary: Update organization structure description: "Update worker's department\n **Token scopes**: `people:write`" tags: - subpackage_organizationStructure parameters: - name: id in: path description: Hris profile ID required: true schema: type: string - name: replace_other_positions in: query description: Indicates if this department position should replace all other positions or only append to the existing ones. required: false schema: type: boolean - 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 operation. content: application/json: schema: $ref: '#/components/schemas/organization-structure_updatePersonDepartment_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: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/PeopleIdDepartmentPutRequestBodyContentApplicationJsonSchemaData' required: - data /hris/organization_structures/{hris_org_structure_id}: delete: operationId: delete-an-org-structure-from-the-organization-v-2026-01-01 summary: Delete an Org Structure from the Organization description: "Delete an Org Structure from the Organization. Use the force flag to bypass validation checks and remove the structure even when profiles are still assigned to it.\n **Token scopes**: `organizations:write`" tags: - subpackage_organizationStructure parameters: - name: hris_org_structure_id in: path description: Org Structure 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: Successfully deleted content: application/json: schema: $ref: '#/components/schemas/Organization structure_deleteAnOrgStructureFromTheOrganization-v2026-01-01_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/DeleteAnOrgStructureFromTheOrganization-v2026-01-01RequestBadRequestError' '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/DeleteAnOrgStructureFromTheOrganization-v2026-01-01RequestInternalServerError' get: operationId: fetch-an-org-structure-from-the-organization-v-2026-01-01 summary: Fetch an Org Structure from the Organization description: "Retrieves detailed information about a specific organizational structure including its teams and roles.\n **Token scopes**: `organizations:read`" tags: - subpackage_organizationStructure parameters: - name: hris_org_structure_id in: path description: HRIS Organization Structure 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 operation content: application/json: schema: $ref: '#/components/schemas/Organization structure_fetchAnOrgStructureFromTheOrganization-v2026-01-01_Response_200' '400': description: Bad request - The provided hrisOrgStructureId is invalid. content: application/json: schema: $ref: '#/components/schemas/FetchAnOrgStructureFromTheOrganization-v2026-01-01RequestBadRequestError' '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: Not found - No organization structure exists for the provided ID. content: application/json: schema: $ref: '#/components/schemas/FetchAnOrgStructureFromTheOrganization-v2026-01-01RequestNotFoundError' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' patch: operationId: update-an-existing-hris-org-structure-v-2026-01-01 summary: Update an existing HRIS Org Structure description: "Update an existing HRIS Org Structure including its name, settings, and teams hierarchy.\n **Token scopes**: `organizations:write`" tags: - subpackage_organizationStructure parameters: - name: hris_org_structure_id in: path description: Org Structure 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 operation content: application/json: schema: $ref: '#/components/schemas/Organization structure_updateAnExistingHrisOrgStructure-v2026-01-01_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/UpdateAnExistingHrisOrgStructure-v2026-01-01RequestBadRequestError' '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/UpdateAnExistingHrisOrgStructure-v2026-01-01RequestInternalServerError' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdPatchRequestBodyContentApplicationJsonSchemaData' components: schemas: RetrieveCustomFieldsForOrganizationRequestBadRequestError: type: object properties: errors: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaErrorsItems' description: Array of error objects required: - errors title: RetrieveCustomFieldsForOrganizationRequestBadRequestError HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsPendingChangeStatus: type: string enum: - PENDING - SCHEDULED - COMMITTED - CANCELLED description: Status of the change request title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsPendingChangeStatus organization-structure_updatePersonDepartment_Response_200: type: object properties: data: $ref: '#/components/schemas/PeopleIdDepartmentPutResponsesContentApplicationJsonSchemaData' required: - data title: organization-structure_updatePersonDepartment_Response_200 HrisOrganizationStructuresPostRequestBodyContentApplicationJsonSchemaDataTeamsItems: type: object properties: name: type: string description: The name of the team. external_id: type: string description: The external identifier of the team. title: HrisOrganizationStructuresPostRequestBodyContentApplicationJsonSchemaDataTeamsItems HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsType: type: string enum: - TEXT - LIST - MULTISELECT - NUMBER - CURRENCY - PERCENTAGE - DATE - NESTED description: Type of the custom field title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsType organization-structure_getOrganizationStructureByExternalId_Response_200: type: object properties: data: $ref: '#/components/schemas/HrisOrganizationStructuresExternalExternalIdGetResponsesContentApplicationJsonSchemaData' title: organization-structure_getOrganizationStructureByExternalId_Response_200 HrisOrganizationStructuresExternalExternalIdPatchRequestBodyContentApplicationJsonSchemaData: type: object properties: name: type: string description: Name of the organization teams: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresExternalExternalIdPatchRequestBodyContentApplicationJsonSchemaDataTeamsItems' external_id: type: string description: External ID enable_roles: type: boolean description: Enable roles is_multiselect: type: boolean description: Is multiselect required: - teams title: HrisOrganizationStructuresExternalExternalIdPatchRequestBodyContentApplicationJsonSchemaData HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchRequestBodyContentApplicationJsonSchemaDataCustomFieldsItems: type: object properties: value: type: - string - 'null' description: The value for the custom field. Use null to delete. currency: type: - string - 'null' description: Currency code for currency-type custom fields (ISO 4217) effective_date: type: - string - 'null' format: date description: Optional effective date for scheduled changes (YYYY-MM-DD) custom_field_id: type: string format: uuid description: The public ID (UUID) of the custom field required: - custom_field_id title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchRequestBodyContentApplicationJsonSchemaDataCustomFieldsItems HrisOrganizationStructuresHrisOrgStructureIdPatchRequestBodyContentApplicationJsonSchemaData: type: object properties: name: type: string description: Name of the Org Structure teams: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdPatchRequestBodyContentApplicationJsonSchemaDataTeamsItems' external_id: type: string description: External ID of the Org Structure enable_roles: type: boolean description: Enable roles for the Org Structure is_multiselect: type: boolean description: Enable multiselect for the Org Structure required: - teams title: HrisOrganizationStructuresHrisOrgStructureIdPatchRequestBodyContentApplicationJsonSchemaData organization-structure_updateTeamCustomFields_Response_200: type: object properties: data: $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchResponsesContentApplicationJsonSchemaData' required: - data title: organization-structure_updateTeamCustomFields_Response_200 organization-structure_getOrganizationStructures_Response_200: type: object properties: data: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItems' title: organization-structure_getOrganizationStructures_Response_200 organization-structure_getTeamCustomFields_Response_200: type: object properties: data: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItems' description: Array of custom field values for the organization structure team has_more: type: boolean description: Whether more pages are available next_cursor: type: - string - 'null' description: Opaque cursor for the next page. Null if no more pages. total_count: type: integer description: Total number of custom field values (across all pages) required: - data - has_more - next_cursor - total_count title: organization-structure_getTeamCustomFields_Response_200 FetchAnOrgStructureFromTheOrganization-v2026-01-01RequestNotFoundError: type: object properties: errors: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaErrorsItems' required: - errors title: FetchAnOrgStructureFromTheOrganization-v2026-01-01RequestNotFoundError HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItems: type: object properties: id: type: string format: uuid description: Public ID (UUID) of the custom field name: type: string description: Name of the custom field type: $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsType' description: Type of the custom field value: type: - string - 'null' description: Formatted value of the custom field. Null if no value is set. values: type: array items: type: string description: Available options for LIST or MULTISELECT type custom fields currency: type: string description: Currency code for CURRENCY type custom fields raw_value: type: - string - 'null' description: Raw/unformatted value. Null if no value is set. created_at: type: string format: date-time description: ISO 8601 timestamp when the resource was created updated_at: type: string format: date-time description: ISO 8601 timestamp when the resource was last updated is_editable: type: boolean description: Indicates whether the custom field value can be edited is_required: type: boolean description: Indicates whether the custom field is required is_inherited: type: boolean description: Indicates whether the value is inherited from a parent team inherited_from: oneOf: - $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsInheritedFrom' - type: 'null' description: Parent team from which the value is inherited. Null if not inherited. pending_change: oneOf: - $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsPendingChange' - type: 'null' description: Pending change request information (only included if user has 'data_change_request.view' permission) required: - id - name - type - value - raw_value - created_at - updated_at - is_inherited - inherited_from title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItems PeopleIdDepartmentPutResponsesContentApplicationJsonSchemaData: type: object properties: updated: type: boolean description: Indicates if the resource was updated successfully. required: - updated title: PeopleIdDepartmentPutResponsesContentApplicationJsonSchemaData HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: code: type: string description: Error code identifying the type of error field: type: string description: The field name that caused the error, if applicable message: type: string description: Human-readable error message required: - code - message title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchResponsesContentApplicationJsonSchemaErrorsItems DeleteAnOrgStructureFromTheOrganization-v2026-01-01RequestBadRequestError: type: object properties: errors: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdDeleteResponsesContentApplicationJsonSchemaErrorsItems' title: DeleteAnOrgStructureFromTheOrganization-v2026-01-01RequestBadRequestError HrisOrganizationStructuresExternalExternalIdGetResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string format: uuid description: Organization ID name: type: string description: Organization name type: type: string description: Organization type roles: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresExternalExternalIdGetResponsesContentApplicationJsonSchemaDataRolesItems' teams: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresExternalExternalIdGetResponsesContentApplicationJsonSchemaDataTeamsItems' external_id: type: string description: External ID teams_count: type: integer description: Number of teams in the organization enable_roles: type: boolean description: Flag to enable roles in the organization is_multiselect: type: boolean description: Flag to enable multiselect in the organization title: HrisOrganizationStructuresExternalExternalIdGetResponsesContentApplicationJsonSchemaData HrisOrganizationStructuresExternalExternalIdGetResponsesContentApplicationJsonSchemaDataTeamsItems: type: object properties: {} title: HrisOrganizationStructuresExternalExternalIdGetResponsesContentApplicationJsonSchemaDataTeamsItems HrisOrganizationStructuresExternalExternalIdGetResponsesContentApplicationJsonSchemaDataRolesItems: type: object properties: id: type: integer description: Role ID name: type: string description: Role name title: HrisOrganizationStructuresExternalExternalIdGetResponsesContentApplicationJsonSchemaDataRolesItems HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: code: type: string field: type: string message: type: string required: - code - message title: HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaErrorsItems HrisOrganizationStructuresPostResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string description: The unique identifier of the organization structure. name: type: string description: The name of the organization structure. type: type: string description: The type of the organization structure. created_at: type: string format: date-time description: The date and time when the organization structure was created. updated_at: type: string format: date-time description: The date and time when the organization structure was last updated. external_id: type: string description: The external identifier of the organization structure. enable_roles: type: boolean description: Whether roles are enabled for the organization structure. is_multi_select: type: boolean description: Whether multiple selection is enabled for the organization structure. organization_id: type: integer description: The unique identifier of the organization. title: HrisOrganizationStructuresPostResponsesContentApplicationJsonSchemaData UpdateAnExistingHrisOrgStructure-v2026-01-01RequestInternalServerError: type: object properties: errors: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdPatchResponsesContentApplicationJsonSchemaErrorsItems' title: UpdateAnExistingHrisOrgStructure-v2026-01-01RequestInternalServerError organization-structure_updateOrganizationStructureByExternalId_Response_200: type: object properties: {} description: Empty response body title: organization-structure_updateOrganizationStructureByExternalId_Response_200 HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaDataTeamsItems: type: object properties: {} title: HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaDataTeamsItems Organization structure_fetchAnOrgStructureFromTheOrganization-v2026-01-01_Response_200: type: object properties: data: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaData' title: Organization structure_fetchAnOrgStructureFromTheOrganization-v2026-01-01_Response_200 organization-structure_deleteOrganizationStructureByExternalId_Response_200: type: object properties: {} description: Empty response body title: organization-structure_deleteOrganizationStructureByExternalId_Response_200 PeopleIdDepartmentPutRequestBodyContentApplicationJsonSchemaData: type: object properties: department_id: type: string format: uuid description: Unique identifier of this resource. effective_date: type: string format: date description: Effective date in YYYY-MM-DD format. required: - department_id title: PeopleIdDepartmentPutRequestBodyContentApplicationJsonSchemaData HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItemsTeamsItems: type: object properties: id: type: string format: uuid description: The unique identifier of the Team. name: type: string description: The name of the Team. parent: type: - string - 'null' description: The name of the parent Org Structure. children: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItemsTeamsItemsChildrenItems' created_at: type: string format: date-time description: The date and time when the Org Structure was created. name_route: type: - string - 'null' description: The route name of the Team. external_id: type: - string - 'null' description: The external identifier of the Team. title: HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItemsTeamsItems HrisOrganizationStructuresPostRequestBodyContentApplicationJsonSchemaData: type: object properties: name: type: string description: The name of the organization structure. teams: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresPostRequestBodyContentApplicationJsonSchemaDataTeamsItems' external_id: type: string description: The external identifier of the organization structure. enable_roles: type: boolean default: true description: Whether roles are enabled for the organization structure. is_multiple_select: type: boolean default: true description: Whether multiple selection is enabled for the organization structure. title: HrisOrganizationStructuresPostRequestBodyContentApplicationJsonSchemaData Organization structure_updateAnExistingHrisOrgStructure-v2026-01-01_Response_200: type: object properties: {} description: Empty response body title: Organization structure_updateAnExistingHrisOrgStructure-v2026-01-01_Response_200 Organization structure_deleteAnOrgStructureFromTheOrganization-v2026-01-01_Response_200: type: object properties: {} description: Empty response body title: Organization structure_deleteAnOrgStructureFromTheOrganization-v2026-01-01_Response_200 ? HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsPendingChangeHrisCustomFieldValueIdsItems : type: object properties: id: type: string format: uuid description: Public ID (UUID) of the nested custom field value value: type: string description: Value of the nested custom field parent_id: type: - string - 'null' format: uuid description: Public ID (UUID) of the parent nested custom field value, if applicable title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsPendingChangeHrisCustomFieldValueIdsItems HrisOrganizationStructuresExternalExternalIdPatchRequestBodyContentApplicationJsonSchemaDataTeamsItems: type: object properties: {} title: HrisOrganizationStructuresExternalExternalIdPatchRequestBodyContentApplicationJsonSchemaDataTeamsItems HrisOrganizationStructuresHrisOrgStructureIdDeleteResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: code: type: string description: Machine-readable error code message: type: string description: Human-readable explanation of the error title: HrisOrganizationStructuresHrisOrgStructureIdDeleteResponsesContentApplicationJsonSchemaErrorsItems 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 DeleteAnOrgStructureFromTheOrganization-v2026-01-01RequestInternalServerError: type: object properties: errors: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdDeleteResponsesContentApplicationJsonSchemaErrorsItems' title: DeleteAnOrgStructureFromTheOrganization-v2026-01-01RequestInternalServerError HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItemsRolesItems: type: object properties: id: type: string format: uuid description: The unique identifier of the Role. name: type: string description: The name of the Role. title: HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItemsRolesItems HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsInheritedFrom: type: object properties: team_id: type: string format: uuid description: Public ID of the parent team from which the value is inherited team_name: type: string description: Name of the parent team from which the value is inherited required: - team_id - team_name description: Parent team from which the value is inherited. Null if not inherited. title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsInheritedFrom UpdateOrganizationStructureTeamCustomFieldsRequestBadRequestError: type: object properties: errors: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchResponsesContentApplicationJsonSchemaErrorsItems' description: Array of error objects required: - errors title: UpdateOrganizationStructureTeamCustomFieldsRequestBadRequestError HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsPendingChange: type: object properties: value: type: - string - 'null' description: Pending value for the custom field (type depends on field type - can be string, number, array, or null) status: $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsPendingChangeStatus' description: Status of the change request edited_by: type: - string - 'null' description: Full name of the user who requested the change raw_value: type: - string - 'null' description: Pending raw value for the custom field (type depends on field type - can be string, number, array, or null) requested_at: type: - string - 'null' format: date description: Date when the change was requested (YYYY-MM-DD format) is_approvable: type: boolean description: Indicates whether the current user can approve this change request effective_date: type: - string - 'null' format: date description: Effective date for the change (YYYY-MM-DD format) change_request_id: type: string format: uuid description: Public ID (UUID) of the change request approval_request_id: type: - string - 'null' format: uuid description: Public ID (UUID) of the approval request associated with the change request modification_reason: type: - string - 'null' description: Reason for the modification hris_custom_field_value_ids: type: - array - 'null' items: $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsPendingChangeHrisCustomFieldValueIdsItems' description: Array of nested custom field value IDs (for NESTED type fields) modification_reason_additional_info: type: - string - 'null' description: Additional information about the modification reason required: - value - status - raw_value - is_approvable - change_request_id description: Pending change request information (only included if user has 'data_change_request.view' permission) title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaDataItemsPendingChange ApiErrorContainer: type: object properties: request: $ref: '#/components/schemas/ApiErrorRequest' errors: type: array items: $ref: '#/components/schemas/ApiError' title: ApiErrorContainer organization-structure_createOrganizationStructure_Response_200: type: object properties: data: $ref: '#/components/schemas/HrisOrganizationStructuresPostResponsesContentApplicationJsonSchemaData' title: organization-structure_createOrganizationStructure_Response_200 HrisOrganizationStructuresHrisOrgStructureIdPatchRequestBodyContentApplicationJsonSchemaDataTeamsItems: type: object properties: {} title: HrisOrganizationStructuresHrisOrgStructureIdPatchRequestBodyContentApplicationJsonSchemaDataTeamsItems HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItems: type: object properties: id: type: string format: uuid description: The unique identifier of the Org Structure. name: type: string description: The name of the Org Structure. type: type: string description: The type of the Org Structure. roles: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItemsRolesItems' teams: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItemsTeamsItems' created_at: type: string format: date-time description: The date and time when the Org Structure was created. external_id: type: - string - 'null' description: The external identifier of the Org Structure. teams_count: type: integer description: The number of Teams in the Org Structure. enable_roles: type: boolean description: Whether the Org Structure has Roles enabled. is_multiselect: type: boolean description: Whether the Org Structure is multiselect. title: HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItems HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchRequestBodyContentApplicationJsonSchemaDataEditReason: type: object properties: reason_oid: type: string format: uuid description: The public ID (UUID) of the modification reason effective_date: type: - string - 'null' format: date description: Effective date for the modification reason additional_info: type: - string - 'null' description: Additional information about the modification reason description: Optional reason for the modification title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchRequestBodyContentApplicationJsonSchemaDataEditReason UpdateAnExistingHrisOrgStructure-v2026-01-01RequestBadRequestError: type: object properties: errors: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdPatchResponsesContentApplicationJsonSchemaErrorsItems' title: UpdateAnExistingHrisOrgStructure-v2026-01-01RequestBadRequestError HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string format: uuid description: HRIS Organization Structure ID name: type: string description: HRIS Organization Structure Name type: type: string description: HRIS Organization Structure Type roles: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaDataRolesItems' teams: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaDataTeamsItems' external_id: type: string description: HRIS Organization Structure External ID teams_count: type: integer description: HRIS Organization Structure Teams Count enable_roles: type: boolean description: HRIS Organization Structure Enable Roles is_multiselect: type: boolean description: HRIS Organization Structure Is Multiselect title: HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaData HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaDataRolesItems: type: object properties: id: type: integer description: Role ID name: type: string description: Role Name title: HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaDataRolesItems HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: code: type: string description: Error code identifying the type of error field: type: string description: The field name that caused the error, if applicable message: type: string description: Human-readable error message required: - code - message title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsGetResponsesContentApplicationJsonSchemaErrorsItems HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItemsTeamsItemsChildrenItems: type: object properties: {} title: HrisOrganizationStructuresGetResponsesContentApplicationJsonSchemaDataItemsTeamsItemsChildrenItems FetchAnOrgStructureFromTheOrganization-v2026-01-01RequestBadRequestError: type: object properties: errors: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresHrisOrgStructureIdGetResponsesContentApplicationJsonSchemaErrorsItems' required: - errors title: FetchAnOrgStructureFromTheOrganization-v2026-01-01RequestBadRequestError HrisOrganizationStructuresHrisOrgStructureIdPatchResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: code: type: string description: Machine-readable error code message: type: string description: Human-readable explanation of the error title: HrisOrganizationStructuresHrisOrgStructureIdPatchResponsesContentApplicationJsonSchemaErrorsItems HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string format: uuid description: System-generated ID of the resource message: type: string description: Success message created_at: type: string format: date-time description: Timestamp when the resource was created required: - id - message - created_at title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchResponsesContentApplicationJsonSchemaData 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 HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchRequestBodyContentApplicationJsonSchemaData: type: object properties: edit_reason: oneOf: - $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchRequestBodyContentApplicationJsonSchemaDataEditReason' - type: 'null' description: Optional reason for the modification custom_fields: type: array items: $ref: '#/components/schemas/HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchRequestBodyContentApplicationJsonSchemaDataCustomFieldsItems' description: Array of custom field values to update. Set value to null to delete a custom field. required: - custom_fields title: HrisOrganizationStructuresTeamsTeamIdCustomFieldsPatchRequestBodyContentApplicationJsonSchemaData 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/