Remote Time & Attendance API
The Time & Attendance API from Remote — 21 operation(s) for time & attendance.
The Time & Attendance API from Remote — 21 operation(s) for time & attendance.
openapi: 3.0.0
info:
title: Remote Address Details Time & Attendance API
version: 0.1.0
servers:
- url: https://gateway.remote.com/
variables: {}
- url: https://gateway.remote-sandbox.com/
variables: {}
security:
- OAuth2: []
tags:
- name: Time & Attendance
paths:
/v1/timesheets/{id}:
get:
callbacks: {}
deprecated: false
description: 'Shows a timesheet by its ID.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | View timesheets (`timesheet:read`) | Manage timesheets (`timesheet:write`) |
'
operationId: get_v1_timesheets_id
parameters:
- description: Timesheet ID
example: ec23ebda-4b7a-4dbd-9d79-bd1eec3f83c9
in: path
name: id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TimesheetResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- timesheet:read
- timesheet:write
- time_and_attendance
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- timesheet:read
- timesheet:write
- time_and_attendance
- all:write
- all:read
summary: Show timesheet
tags:
- Time & Attendance
/v1/timeoff/{timeoff_id}/cancel:
post:
callbacks: {}
deprecated: false
description: 'Cancel a time off request that was already approved.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | - | Manage timeoffs (`timeoff:write`) |
'
operationId: post_v1_timeoff_timeoff_id_cancel
parameters:
- description: Time Off ID
example: 93t3j-timeoff-id-9suej43
in: path
name: timeoff_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CancelTimeoffParams'
description: CancelTimeoff
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TimeoffResponse'
description: Success
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- timeoff:write
- time_and_attendance
- all:write
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- timeoff:write
- time_and_attendance
- all:write
summary: Cancel Time Off
tags:
- Time & Attendance
/v1/employee/timeoff/{id}:
patch:
callbacks: {}
deprecated: false
description: 'Updates a Time Off record as Employee
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | - | Manage timeoffs (`timeoff:write`) |
'
operationId: patch_v1_employee_timeoff_id (2)
parameters:
- description: Timeoff ID
example: 93t3j-timeoff-id-9suej43
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEmployeeTimeoffParams'
description: UpdateTimeoff
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TimeoffResponse'
description: Success
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Unprocessable Entity
security:
- OAuth2Assertion:
- https://gateway.remote.com/employment.manage
- timeoff:write
- time_and_attendance
- all:write
summary: Update Time Off as Employee
tags:
- Time & Attendance
put:
callbacks: {}
deprecated: false
description: 'Updates a Time Off record as Employee
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | - | Manage timeoffs (`timeoff:write`) |
'
operationId: patch_v1_employee_timeoff_id
parameters:
- description: Timeoff ID
example: 93t3j-timeoff-id-9suej43
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEmployeeTimeoffParams'
description: UpdateTimeoff
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TimeoffResponse'
description: Success
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Unprocessable Entity
security:
- OAuth2Assertion:
- https://gateway.remote.com/employment.manage
- timeoff:write
- time_and_attendance
- all:write
summary: Update Time Off as Employee
tags:
- Time & Attendance
/v1/contractors/employments/{employment_id}/timesheets:
post:
callbacks: {}
deprecated: false
description: 'Creates a timesheet on behalf of a contractor employment.
The submitted hours are immediately available to the contractor in the Remote UI for
self-serve invoice creation (Invoices → Create invoice → "Use Time Tracking").
This endpoint is restricted to contractor employments. Calls against EOR or Global Payroll
employments are rejected with `422`.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | - | Manage timesheets (`timesheet:write`) |
'
operationId: post_v1_contractors_employments_employment_id_timesheets
parameters:
- description: Contractor employment ID
example: c0a167b8-459d-4e96-9766-7a04c160892e
in: path
name: employment_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ContractorCreateTimesheetParams'
description: ContractorCreateTimesheetParams
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ContractorTimesheetResponse'
description: Success
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/ContractorCreateTimesheetUnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- timesheet:write
- time_and_attendance
- all:write
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- timesheet:write
- time_and_attendance
- all:write
summary: Create a contractor timesheet
tags:
- Time & Attendance
/v1/employee/leave-policies:
get:
callbacks: {}
deprecated: false
description: 'List the leave policies for the current employee
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | View timeoffs (`timeoff:read`) | Manage timeoffs (`timeoff:write`) |
'
operationId: get_v1_employee_leave-policies
parameters: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListLeavePoliciesDetailsResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
security:
- OAuth2Assertion:
- https://gateway.remote.com/employment.manage
- timeoff:read
- timeoff:write
- time_and_attendance
- all:write
- all:read
summary: List Employee Leave Policies
tags:
- Time & Attendance
/v1/employee/leave-policies/summary:
get:
callbacks: {}
deprecated: false
description: 'List the leave policies summary (balances and entitlements) for the current employee
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | View timeoffs (`timeoff:read`) | Manage timeoffs (`timeoff:write`) |
'
operationId: get_v1_employee_leave-policies_summary
parameters: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListLeavePoliciesSummaryResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
security:
- OAuth2Assertion:
- https://gateway.remote.com/employment.manage
- timeoff:read
- timeoff:write
- time_and_attendance
- all:write
- all:read
summary: List Employee Leave Policies Summary
tags:
- Time & Attendance
/v1/timeoff-balances/{employment_id}:
get:
callbacks: {}
deprecated: true
description: 'Shows the time off balance for the given employment_id.
Deprecated since February 2025 in favour of **[List Leave Policies Summary](#tag/Leave-Policies/operation/get_index_leave_policies_summary)** endpoint.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | View timeoffs (`timeoff:read`) | Manage timeoffs (`timeoff:write`) |
'
operationId: get_v1_timeoff-balances_employment_id
parameters:
- description: 'Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow.
The refresh token needs to have been obtained through the Authorization Code flow.
'
example: Bearer <COMPANY-SCOPED ACCESS TOKEN>
in: header
name: Authorization
required: true
schema:
type: string
- description: Employment ID for which to show the time off balance
example: 03675381-50c9-492d-b8ed-e84e99046091
in: path
name: employment_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TimeoffBalanceResponse'
description: Success
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/TimeoffBalanceNotFoundResponse'
description: TimeoffBalanceNotFoundResponse
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too many requests
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- timeoff:read
- timeoff:write
- time_and_attendance
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- timeoff:read
- timeoff:write
- time_and_attendance
- all:write
- all:read
summary: Show Time Off Balance
tags:
- Time & Attendance
/v1/employee/timeoff/{id}/cancel:
post:
callbacks: {}
deprecated: false
description: 'Cancels a Time Off record as Employee
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | - | Manage timeoffs (`timeoff:write`) |
'
operationId: post_v1_employee_timeoff_id_cancel
parameters:
- description: Timeoff ID
example: 93t3j-timeoff-id-9suej43
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CancelTimeoffParams'
description: CancelTimeoff
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TimeoffResponse'
description: Success
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Unprocessable Entity
security:
- OAuth2Assertion:
- https://gateway.remote.com/employment.manage
- timeoff:write
- time_and_attendance
- all:write
summary: Cancel Time Off as Employee
tags:
- Time & Attendance
/v1/timesheets/{timesheet_id}/approve:
post:
callbacks: {}
deprecated: false
description: 'Approves the given timesheet.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | - | Manage timesheets (`timesheet:write`) |
'
operationId: post_v1_timesheets_timesheet_id_approve
parameters:
- description: Timesheet ID
example: ec23ebda-4b7a-4dbd-9d79-bd1eec3f83c9
in: path
name: timesheet_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MinimalTimesheetResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- timesheet:write
- time_and_attendance
- all:write
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- timesheet:write
- time_and_attendance
- all:write
summary: Approve timesheet
tags:
- Time & Attendance
/v1/leave-policies/summary/{employment_id}:
get:
callbacks: {}
deprecated: false
description: 'List all the data related to time off for a given employment
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | View timeoffs (`timeoff:read`) | Manage timeoffs (`timeoff:write`) |
'
operationId: get_v1_leave-policies_summary_employment_id
parameters:
- description: Employment ID
example: ec23ebda-4b7a-4dbd-9d79-bd1eec3f83c9
in: path
name: employment_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListLeavePoliciesSummaryResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- timeoff:read
- timeoff:write
- time_and_attendance
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- timeoff:read
- timeoff:write
- time_and_attendance
- all:write
- all:read
summary: List Leave Policies Summary
tags:
- Time & Attendance
/v1/timeoff/{timeoff_id}/cancel-request/decline:
post:
callbacks: {}
deprecated: false
description: 'Decline a time off cancellation request.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | - | Manage timeoffs (`timeoff:write`) |
'
operationId: post_v1_timeoff_timeoff_id_cancel-request_decline
parameters:
- description: Time Off ID
example: 93t3j-timeoff-id-9suej43
in: path
name: timeoff_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeclineTimeoffParams'
description: Timeoff
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictResponse'
description: Conflict
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- timeoff:write
- time_and_attendance
- all:write
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- timeoff:write
- time_and_attendance
- all:write
summary: Decline a time off cancellation request
tags:
- Time & Attendance
/v1/timesheets:
get:
callbacks: {}
deprecated: false
description: 'Lists all timesheets.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | View timesheets (`timesheet:read`) | Manage timesheets (`timesheet:write`) |
'
operationId: get_v1_timesheets
parameters:
- description: Filter timesheets by their status
in: query
name: status
required: false
schema:
$ref: '#/components/schemas/TimesheetStatus'
- description: Sort order
example: asc
in: query
name: order
required: false
schema:
enum:
- asc
- desc
type: string
- description: Field to sort by
example: submitted_at
in: query
name: sort_by
required: false
schema:
enum:
- submitted_at
type: string
- description: Starts fetching records after the given page
example: 1
in: query
name: page
required: false
schema:
default: 1
minimum: 1
type: integer
- description: Number of items per page
example: 20
in: query
name: page_size
required: false
schema:
default: 20
maximum: 100
minimum: 1
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListTimesheetsResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- timesheet:read
- timesheet:write
- time_and_attendance
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- timesheet:read
- timesheet:write
- time_and_attendance
- all:write
- all:read
summary: List timesheets
tags:
- Time & Attendance
/v1/leave-policies/details/{employment_id}:
get:
callbacks: {}
deprecated: false
description: 'Describe the leave policies (custom or not) for a given employment
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | View timeoffs (`timeoff:read`) | Manage timeoffs (`timeoff:write`) |
'
operationId: get_v1_leave-policies_details_employment_id
parameters:
- description: Employment ID
example: ec23ebda-4b7a-4dbd-9d79-bd1eec3f83c9
in: path
name: employment_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListLeavePoliciesDetailsResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- timeoff:read
- timeoff:write
- time_and_attendance
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- timeoff:read
- timeoff:write
- time_and_attendance
- all:write
- all:read
summary: List Leave Policies Details
tags:
- Time & Attendance
/v1/timeoff/types:
get:
callbacks: {}
deprecated: false
description: 'Lists all time off types that can be used for the `timeoff_type` parameter.
**Backward compatibility:** Calling this endpoint without the `type` query parameter returns the same response as before (time off types for full-time employments). Existing integrations do not need to change.
Optionally, pass `type=contractor` to get time off types for contractor employments, or `type=full_time` for full-time employments (same as omitting the parameter).
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage timeoffs (`time_and_attendance`) | View timeoffs (`timeoff:read`) | Manage timeoffs (`timeoff:write`) |
'
operationId: get_v1_timeoff_types
parameters:
- description: 'Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow.
The refresh token needs to have been obtained through the Authorization Code flow.
'
example: Bearer <COMPANY-SCOPED ACCESS TOKEN>
in: header
name: Authorization
required: true
schema:
type: string
- description: 'Optional. Employment type to list time off types for: `contractor` or `full_time`. Omit for backward-compatible behavior (full-time types).'
example: full_time
in: query
name: type
required: false
schema:
$ref: '#/components/schemas/TimeoffTypesEmploymentType'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListTimeoffTypesResponse'
description: Success
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request
'401':
content:
application/json:
schema:
# --- truncated at 32 KB (153 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/remote/refs/heads/main/openapi/remote-time-attendance-api-openapi.yml