openapi: 3.1.0 info: title: Endpoints subpackage_costCenters API version: 1.0.0 servers: - url: https://api.letsdeel.com/rest/v2 - url: https://api-staging.letsdeel.com/rest/v2 tags: - name: subpackage_costCenters paths: /legal-entities/{legal_entity_id}/cost-centers: get: operationId: get-legal-entity-cost-centers summary: Get cost centers by legal entity description: "Fetch all cost centers related to a given legal entity id\n **Token scopes**: `legal-entity:read`" tags: - subpackage_costCenters parameters: - name: legal_entity_id in: path description: Legal entity id 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: Cost center data was successfully fetched content: application/json: schema: $ref: '#/components/schemas/cost-centers_getLegalEntityCostCenters_Response_200' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/GetCostCentersByLegalEntityRequestBadRequestError' '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' /contracts/{contract_id}/cost-centers: post: operationId: assign-cost-centers-to-an-employment-contract-v-2026-01-01 summary: Assign cost centers to an employment contract description: "Assign cost centers to employment by contract id\n **Token scopes**: `contracts:write`" tags: - subpackage_costCenters parameters: - name: contract_id in: path description: Employment's contract 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: '201': description: Cost center allocation was successfully added to the contract content: application/json: schema: $ref: '#/components/schemas/Cost Centers_assignCostCentersToAnEmploymentContract-v2026-01-01_Response_201' '400': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/AssignCostCentersToAnEmploymentContract-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/ApiErrorContainer' requestBody: description: Cost center information to allocate to the contract content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ContractsContractIdCostCentersPostRequestBodyContentApplicationJsonSchemaData' required: - data /legal-entities/{legal_entity_id}/cost-centers/synchronize: post: operationId: sync-cost-centers-for-legal-entity-v-2026-01-01 summary: Sync cost centers for legal entity description: "Update legal entity cost center's data to replicate the data provided on the request\n **Token scopes**: `legal-entity:write`" tags: - subpackage_costCenters parameters: - name: legal_entity_id in: path description: Legal entity 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: '201': description: Cost center data was successfully updated content: application/json: schema: $ref: '#/components/schemas/Cost Centers_syncCostCentersForLegalEntity-v2026-01-01_Response_201' '400': description: Cannot define legal entity cost centers as the provided data. content: application/json: schema: $ref: '#/components/schemas/SyncCostCentersForLegalEntity-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: Unexpected error content: application/json: schema: $ref: '#/components/schemas/SyncCostCentersForLegalEntity-v2026-01-01RequestInternalServerError' requestBody: description: Cost center data to overwrite current configuration content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/LegalEntitiesLegalEntityIdCostCentersSynchronizePostRequestBodyContentApplicationJsonSchemaDataItems' required: - data components: schemas: LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaDataItems: type: object properties: id: type: integer format: int64 description: Cost center id created_at: type: string format: date-time description: Cost center date of registration on Deel. Long date-time format following ISO-8601 updated_at: type: string format: date-time description: Cost center date of most recent update on Deel. Long date-time format following ISO-8601 cost_center_name: type: string description: Cost center name to be displayed cost_center_number: type: string description: Cost center code title: LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaDataItems SyncCostCentersForLegalEntity-v2026-01-01RequestInternalServerError: type: object properties: errors: type: array items: $ref: '#/components/schemas/LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaErrorsItems' request: $ref: '#/components/schemas/LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaRequest' title: SyncCostCentersForLegalEntity-v2026-01-01RequestInternalServerError AssignCostCentersToAnEmploymentContract-v2026-01-01RequestBadRequestError: type: object properties: errors: type: array items: $ref: '#/components/schemas/ContractsContractIdCostCentersPostResponsesContentApplicationJsonSchemaErrorsItems' request: $ref: '#/components/schemas/ContractsContractIdCostCentersPostResponsesContentApplicationJsonSchemaRequest' title: AssignCostCentersToAnEmploymentContract-v2026-01-01RequestBadRequestError LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaRequest: type: object properties: url: type: string description: The relative URL of the failed request code: type: number format: double description: The code of the source handler which produced the returned error docs: type: string description: A link to the official documentation for the requested endpoint resource method: type: string description: The HTTP method of the failed request source: type: string description: The source handler which produced the returned error 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 title: LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaRequest LegalEntitiesLegalEntityIdCostCentersGetResponsesContentApplicationJsonSchemaRequest: type: object properties: url: type: string description: The relative URL of the failed request code: type: number format: double description: The code of the source handler which produced the returned error docs: type: string description: A link to the official documentation for the requested endpoint resource method: type: string description: The HTTP method of the failed request source: type: string description: The source handler which produced the returned error 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 title: LegalEntitiesLegalEntityIdCostCentersGetResponsesContentApplicationJsonSchemaRequest SyncCostCentersForLegalEntity-v2026-01-01RequestBadRequestError: type: object properties: errors: type: array items: $ref: '#/components/schemas/LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaErrorsItems' request: $ref: '#/components/schemas/LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaRequest' title: SyncCostCentersForLegalEntity-v2026-01-01RequestBadRequestError ContractsContractIdCostCentersPostResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: error: type: string description: A description of the returned error title: ContractsContractIdCostCentersPostResponsesContentApplicationJsonSchemaErrorsItems cost-centers_getLegalEntityCostCenters_Response_200: type: object properties: data: type: array items: $ref: '#/components/schemas/LegalEntitiesLegalEntityIdCostCentersGetResponsesContentApplicationJsonSchemaDataItems' title: cost-centers_getLegalEntityCostCenters_Response_200 LegalEntitiesLegalEntityIdCostCentersGetResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: code: type: number format: double description: The code of the source handler which produced the returned error message: type: string description: A description of the returned error title: LegalEntitiesLegalEntityIdCostCentersGetResponsesContentApplicationJsonSchemaErrorsItems LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: error: type: string description: A description of the returned error title: LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaErrorsItems ContractsContractIdCostCentersPostResponsesContentApplicationJsonSchemaRequest: type: object properties: url: type: string description: The relative URL of the failed request code: type: number format: double description: The code of the source handler which produced the returned error docs: type: string description: A link to the official documentation for the requested endpoint resource method: type: string description: The HTTP method of the failed request source: type: string description: The source handler which produced the returned error 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 title: ContractsContractIdCostCentersPostResponsesContentApplicationJsonSchemaRequest GetCostCentersByLegalEntityRequestBadRequestError: type: object properties: errors: type: array items: $ref: '#/components/schemas/LegalEntitiesLegalEntityIdCostCentersGetResponsesContentApplicationJsonSchemaErrorsItems' request: $ref: '#/components/schemas/LegalEntitiesLegalEntityIdCostCentersGetResponsesContentApplicationJsonSchemaRequest' title: GetCostCentersByLegalEntityRequestBadRequestError Cost Centers_syncCostCentersForLegalEntity-v2026-01-01_Response_201: type: object properties: data: type: array items: $ref: '#/components/schemas/LegalEntitiesLegalEntityIdCostCentersSynchronizePostResponsesContentApplicationJsonSchemaDataItems' title: Cost Centers_syncCostCentersForLegalEntity-v2026-01-01_Response_201 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 ContractsContractIdCostCentersPostRequestBodyContentApplicationJsonSchemaDataValueItems: type: object properties: cost_center_id: type: integer format: int64 description: Cost center id allocation_percentage: type: number format: double description: Cost center allocation for this employment, between 0 (none) and 1 (100%) required: - cost_center_id - allocation_percentage title: ContractsContractIdCostCentersPostRequestBodyContentApplicationJsonSchemaDataValueItems ContractsContractIdCostCentersPostResponsesContentApplicationJsonSchemaData: type: object properties: id: type: string description: Updated employment term id title: ContractsContractIdCostCentersPostResponsesContentApplicationJsonSchemaData ApiErrorContainer: type: object properties: request: $ref: '#/components/schemas/ApiErrorRequest' errors: type: array items: $ref: '#/components/schemas/ApiError' title: ApiErrorContainer LegalEntitiesLegalEntityIdCostCentersGetResponsesContentApplicationJsonSchemaDataItems: type: object properties: id: type: integer format: int64 description: Cost center Id created_at: type: string format: date-time description: Cost center date of registration on Deel updated_at: type: string format: date-time description: Cost center date of most recent update on Deel cost_center_name: type: string description: Cost center name to be displayed cost_center_number: type: string description: Cost center code title: LegalEntitiesLegalEntityIdCostCentersGetResponsesContentApplicationJsonSchemaDataItems ContractsContractIdCostCentersPostRequestBodyContentApplicationJsonSchemaData: type: object properties: value: type: array items: $ref: '#/components/schemas/ContractsContractIdCostCentersPostRequestBodyContentApplicationJsonSchemaDataValueItems' effective_date: type: string format: date description: Allocation start date required: - value - effective_date title: ContractsContractIdCostCentersPostRequestBodyContentApplicationJsonSchemaData LegalEntitiesLegalEntityIdCostCentersSynchronizePostRequestBodyContentApplicationJsonSchemaDataItems: type: object properties: cost_center_name: type: string description: Cost center name to be displayed cost_center_number: type: string description: Cost center code required: - cost_center_name - cost_center_number title: LegalEntitiesLegalEntityIdCostCentersSynchronizePostRequestBodyContentApplicationJsonSchemaDataItems Cost Centers_assignCostCentersToAnEmploymentContract-v2026-01-01_Response_201: type: object properties: data: $ref: '#/components/schemas/ContractsContractIdCostCentersPostResponsesContentApplicationJsonSchemaData' title: Cost Centers_assignCostCentersToAnEmploymentContract-v2026-01-01_Response_201 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 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/