openapi: 3.1.0 info: title: Remote Benefits Benefit Offers Time Off API description: 'List, select, and renew localized employee benefits across the countries Remote supports. Benefit offers and renewal requests use JSON Schema forms that vary per country and employment. ' version: '2026-05-22' contact: name: Remote API Support url: https://support.remote.com/ x-logo: url: https://remote.com/favicon.ico servers: - url: https://gateway.remote.com/v1 description: Production - url: https://gateway.remote-sandbox.com/v1 description: Sandbox security: - BearerAuth: [] tags: - name: Time Off description: Time-off requests and approvals paths: /timeoff: get: summary: List Time Off Requests operationId: listTimeOffRequests tags: - Time Off parameters: - name: employment_id in: query schema: type: string format: uuid - name: status in: query schema: $ref: '#/components/schemas/TimeOffStatus' - name: starts_after in: query schema: type: string format: date - name: ends_before in: query schema: type: string format: date responses: '200': description: Time-off requests. content: application/json: schema: $ref: '#/components/schemas/TimeOffList' post: summary: Create A Time Off Request operationId: createTimeOffRequest tags: - Time Off requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TimeOffCreateRequest' responses: '201': description: Created. content: application/json: schema: $ref: '#/components/schemas/TimeOffEnvelope' /timeoff/{timeoff_id}: parameters: - name: timeoff_id in: path required: true schema: type: string format: uuid get: summary: Show A Time Off Request operationId: showTimeOffRequest tags: - Time Off responses: '200': description: Request. content: application/json: schema: $ref: '#/components/schemas/TimeOffEnvelope' patch: summary: Update A Time Off Request operationId: updateTimeOffRequest tags: - Time Off requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TimeOffCreateRequest' responses: '200': description: Updated. content: application/json: schema: $ref: '#/components/schemas/TimeOffEnvelope' /timeoff/{timeoff_id}/approve: parameters: - name: timeoff_id in: path required: true schema: type: string format: uuid post: summary: Approve A Time Off Request operationId: approveTimeOffRequest tags: - Time Off responses: '200': description: Approved. content: application/json: schema: $ref: '#/components/schemas/TimeOffEnvelope' /timeoff/{timeoff_id}/decline: parameters: - name: timeoff_id in: path required: true schema: type: string format: uuid post: summary: Decline A Time Off Request operationId: declineTimeOffRequest tags: - Time Off requestBody: required: true content: application/json: schema: type: object required: - reason properties: reason: type: string responses: '200': description: Declined. content: application/json: schema: $ref: '#/components/schemas/TimeOffEnvelope' /timeoff/{timeoff_id}/cancel: parameters: - name: timeoff_id in: path required: true schema: type: string format: uuid post: summary: Cancel A Time Off Request operationId: cancelTimeOffRequest tags: - Time Off responses: '200': description: Canceled. content: application/json: schema: $ref: '#/components/schemas/TimeOffEnvelope' components: schemas: TimeOffList: type: object properties: data: type: object properties: timeoff: type: array items: $ref: '#/components/schemas/TimeOff' TimeOff: type: object properties: id: type: string format: uuid employment_id: type: string format: uuid leave_type: type: string leave_policy_id: type: string format: uuid status: $ref: '#/components/schemas/TimeOffStatus' start_date: type: string format: date end_date: type: string format: date total_days: type: number note: type: string created_at: type: string format: date-time TimeOffEnvelope: type: object properties: data: type: object properties: timeoff: $ref: '#/components/schemas/TimeOff' TimeOffCreateRequest: type: object required: - employment_id - leave_type - start_date - end_date properties: employment_id: type: string format: uuid leave_type: type: string leave_policy_id: type: string format: uuid start_date: type: string format: date end_date: type: string format: date note: type: string TimeOffStatus: type: string enum: - requested - approved - declined - cancellation_requested - canceled - started - taken securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT