openapi: 3.0.3 info: title: WorkMotion Partner Absences Contracts API description: 'Partner / Open API for the WorkMotion global employment and Employer of Record (EOR) platform. It exposes employees (talents), employment contracts, onboarding workflows, absences and time-off, documents, employment cost calculations, and webhook subscriptions so that HRIS and payroll systems can integrate with WorkMotion''s managed employment infrastructure across 160+ countries. NOTE: WorkMotion''s partner API is access-gated and its reference documentation is not fully published to the open web. The paths and schemas below are a faithful, honest model of the documented product surfaces (employees, contracts, onboarding, absences, documents, cost calculator, webhooks) rather than a verbatim copy of an official OpenAPI file. Verify exact paths, fields, and semantics against the WorkMotion partner documentation during reconciliation.' termsOfService: https://workmotion.com/terms-and-conditions/ contact: name: WorkMotion url: https://workmotion.com/integrations/ version: '1.0' servers: - url: https://api.workmotion.com/v1 description: Production (modeled base URL; confirm with partner documentation) security: - bearerAuth: [] tags: - name: Contracts description: Employment contracts and contract changes. paths: /employees/{employeeId}/contracts: parameters: - $ref: '#/components/parameters/EmployeeIdParam' get: operationId: listEmployeeContracts tags: - Contracts summary: List contracts for an employee responses: '200': description: Contracts belonging to the employee. content: application/json: schema: $ref: '#/components/schemas/ContractList' post: operationId: createContract tags: - Contracts summary: Generate a contract for an employee description: Generates a legally compliant employment contract for the talent. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContractCreate' responses: '201': description: Contract created. content: application/json: schema: $ref: '#/components/schemas/Contract' /contracts/{contractId}: parameters: - $ref: '#/components/parameters/ContractIdParam' get: operationId: getContract tags: - Contracts summary: Retrieve a contract responses: '200': description: The requested contract. content: application/json: schema: $ref: '#/components/schemas/Contract' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateContract tags: - Contracts summary: Amend a contract description: Applies a contract change (e.g., compensation or terms) to an existing contract. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ContractChange' responses: '200': description: The amended contract. content: application/json: schema: $ref: '#/components/schemas/Contract' components: responses: NotFound: description: Resource not found. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: ContractList: type: object properties: data: type: array items: $ref: '#/components/schemas/Contract' pagination: $ref: '#/components/schemas/Pagination' Contract: type: object properties: id: type: string employeeId: type: string country: type: string status: type: string enum: - draft - pending_signature - active - amended - terminated grossSalary: type: number currency: type: string paidTimeOffDays: type: integer startDate: type: string format: date createdAt: type: string format: date-time ContractCreate: type: object required: - grossSalary - currency properties: grossSalary: type: number currency: type: string paidTimeOffDays: type: integer startDate: type: string format: date Pagination: type: object properties: page: type: integer pageSize: type: integer total: type: integer ContractChange: type: object description: A change applied to an existing contract. properties: grossSalary: type: number currency: type: string paidTimeOffDays: type: integer effectiveDate: type: string format: date Error: type: object properties: code: type: string message: type: string parameters: EmployeeIdParam: name: employeeId in: path required: true schema: type: string ContractIdParam: name: contractId in: path required: true schema: type: string securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: OAuth 2.0 access token supplied as a Bearer token in the Authorization header. Partner credentials are issued by WorkMotion.