openapi: 3.1.0 info: title: Endpoints subpackage_eorWorkerAgreements API version: 1.0.0 servers: - url: https://api.letsdeel.com/rest/v2 - url: https://api-staging.letsdeel.com/rest/v2 tags: - name: subpackage_eorWorkerAgreements paths: /eor/workers/contracts/{contract_id}/employee-agreement/download: get: operationId: download-worker-employee-agreement summary: Download employee agreement PDF description: "Get link to download the employee agreement PDF.\n **Token scopes**: `worker:read`" tags: - subpackage_eorWorkerAgreements parameters: - name: contract_id in: path description: The unique identifier of the employee contract. required: true schema: type: string - name: version in: query description: Optional version of the Employment Agreement to be signed. If informed and in the case of a mismatch, the API will return an error. 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: Successful operation. content: application/json: schema: $ref: '#/components/schemas/eor-worker-agreements_downloadWorkerEmployeeAgreement_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' '409': description: Employment Agreement version mismatch. content: application/json: schema: $ref: '#/components/schemas/DownloadEmployeeAgreementPdfRequestConflictError' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' /eor/workers/contracts/{contract_id}/offer-letter: get: operationId: download-worker-offer-letter summary: Preview job offer letter description: "Retrieve an EOR job offer letter in HTML. This endpoint does not support IC and Global Payroll contract types.\n **Token scopes**: `worker:read`" tags: - subpackage_eorWorkerAgreements parameters: - name: contract_id in: path description: Deel 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: '200': description: Successful operation. content: application/json: schema: type: object properties: {} '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' /eor/workers/contracts/{contract_id}/signatures: post: operationId: sign-eor-contract-as-worker summary: 'Sign a contract ' description: "Sign a contract as a employee.\n **Token scopes**: `worker:write`" tags: - subpackage_eorWorkerAgreements parameters: - name: contract_id in: path description: The unique identifier of the employee contract. 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: Successful operation. content: application/json: schema: $ref: '#/components/schemas/eor-worker-agreements_signEORContractAsWorker_Response_201' '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' '409': description: Employment Agreement version mismatch. content: application/json: schema: $ref: '#/components/schemas/SignAContractRequestConflictError' '500': description: Operation failed. content: application/json: schema: $ref: '#/components/schemas/ApiErrorContainer' requestBody: content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/EorWorkersContractsContractIdSignaturesPostRequestBodyContentApplicationJsonSchemaData' components: schemas: EorWorkersContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaRequest: type: object properties: url: type: string description: The relative URL of the failed request 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: EorWorkersContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaRequest EorWorkersContractsContractIdEmployeeAgreementDownloadGetResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: message: type: string description: The error message title: EorWorkersContractsContractIdEmployeeAgreementDownloadGetResponsesContentApplicationJsonSchemaErrorsItems DownloadEmployeeAgreementPdfRequestConflictError: type: object properties: errors: type: array items: $ref: '#/components/schemas/EorWorkersContractsContractIdEmployeeAgreementDownloadGetResponsesContentApplicationJsonSchemaErrorsItems' request: $ref: '#/components/schemas/EorWorkersContractsContractIdEmployeeAgreementDownloadGetResponsesContentApplicationJsonSchemaRequest' title: DownloadEmployeeAgreementPdfRequestConflictError 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 eor-worker-agreements_downloadWorkerEmployeeAgreement_Response_200: type: object properties: data: $ref: '#/components/schemas/EorWorkersContractsContractIdEmployeeAgreementDownloadGetResponsesContentApplicationJsonSchemaData' required: - data title: eor-worker-agreements_downloadWorkerEmployeeAgreement_Response_200 eor-worker-agreements_signEORContractAsWorker_Response_201: type: object properties: data: $ref: '#/components/schemas/EorWorkersContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaData' required: - data title: eor-worker-agreements_signEORContractAsWorker_Response_201 EorWorkersContractsContractIdEmployeeAgreementDownloadGetResponsesContentApplicationJsonSchemaData: type: object properties: url: type: string description: URL to requested employee agreement to download. expires_at: type: string format: date-time description: Expiration date time of download URL. title: EorWorkersContractsContractIdEmployeeAgreementDownloadGetResponsesContentApplicationJsonSchemaData SignAContractRequestConflictError: type: object properties: errors: type: array items: $ref: '#/components/schemas/EorWorkersContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaErrorsItems' request: $ref: '#/components/schemas/EorWorkersContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaRequest' title: SignAContractRequestConflictError EorWorkersContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaData: type: object properties: created: type: boolean required: - created title: EorWorkersContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaData EorWorkersContractsContractIdEmployeeAgreementDownloadGetResponsesContentApplicationJsonSchemaRequest: type: object properties: url: type: string description: The relative URL of the failed request 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: EorWorkersContractsContractIdEmployeeAgreementDownloadGetResponsesContentApplicationJsonSchemaRequest ApiErrorContainer: type: object properties: request: $ref: '#/components/schemas/ApiErrorRequest' errors: type: array items: $ref: '#/components/schemas/ApiError' title: ApiErrorContainer EorWorkersContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaErrorsItems: type: object properties: message: type: string description: The error message title: EorWorkersContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaErrorsItems 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 EorWorkersContractsContractIdSignaturesPostRequestBodyContentApplicationJsonSchemaData: type: object properties: version: type: string description: Optional version of the Employment Agreement to be signed. If informed and in the case of a mismatch, the API will return an error. signature: type: string description: Signature of employee. required: - signature title: EorWorkersContractsContractIdSignaturesPostRequestBodyContentApplicationJsonSchemaData 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/