Remote Employment Contracts API
The Employment Contracts API from Remote — 3 operation(s) for employment contracts.
The Employment Contracts API from Remote — 3 operation(s) for employment contracts.
openapi: 3.0.0
info:
title: Remote Address Details Employment Contracts API
version: 0.1.0
servers:
- url: https://gateway.remote.com/
variables: {}
- url: https://gateway.remote-sandbox.com/
variables: {}
security:
- OAuth2: []
tags:
- name: Employment Contracts
paths:
/v1/employments/{employment_id}/contract-documents:
get:
callbacks: {}
deprecated: false
description: 'Only contractor employment types are supported. Lists contract documents for a specific employment with pagination, filtering by status, and sorted by updated_at descending (latest first).
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage employment documents (`employment_documents`) | View documents (`document:read`) | Manage documents (`document:write`) |
'
operationId: get_v1_employments_employment_id_contract-documents
parameters:
- description: Employment ID
example: 1a716003-ae89-4810-aa00-25df6e799162
in: path
name: employment_id
required: true
schema:
type: string
- description: Filter by contract document statuses
example:
- finished
- awaiting_signatures
in: query
name: statuses
required: false
schema:
items:
$ref: '#/components/schemas/ContractorContractDocumentStatus'
type: array
- description: Exclude contract documents with specific statuses
example:
- draft
in: query
name: except_statuses
required: false
schema:
items:
$ref: '#/components/schemas/ContractorContractDocumentStatus'
type: array
- 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/IndexContractDocumentsResponse'
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
- document:read
- document:write
- employment_documents
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- document:read
- document:write
- employment_documents
- all:write
- all:read
summary: List contract documents for an employment
tags:
- Employment Contracts
/v1/employment-contracts/{employment_id}/pending-changes:
get:
callbacks: {}
deprecated: false
description: 'Get all the pending changes (waiting for aproval or signature) for the employment contract.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage employments (`employments`) | View contracts (`contract:read`) | - |
'
operationId: get_v1_employment-contracts_employment_id_pending-changes
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
example: 93t3j-employment_id-9suej43
in: path
name: employment_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EmploymentContractPendingChangesResponse'
description: Success
'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/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- contract:read
- employments
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- contract:read
- employments
- all:write
- all:read
summary: Get employment contract pending changes
tags:
- Employment Contracts
/v1/employment-contracts:
get:
callbacks: {}
deprecated: false
description: 'Get the employment contract history for a given employment. If `only_active` is true, it will return only the active or last active contract.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage employments (`employments`) | View contracts (`contract:read`) | - |
'
operationId: get_v1_employment-contracts
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
example: 93t3j-employment_id-9suej43
in: query
name: employment_id
required: true
schema:
type: string
- description: Only Active
example: 'false'
in: query
name: only_active
required: false
schema:
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListEmploymentContractResponse'
description: Success
'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/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- contract:read
- employments
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- contract:read
- employments
- all:write
- all:read
summary: List Employment Contract.
tags:
- Employment Contracts
components:
schemas:
ParameterError:
example:
code: invalid_param
message: Invalid parameter
param: employment_id
properties:
code:
description: An error code that describes the nature of the error.
type: string
message:
description: A developer friendly error message that gives details on what the error was and how it may be remedied.
type: string
param:
description: The parameter that lead to the error message.
type: string
required:
- code
- message
- param
title: ParameterError
type: object
IndexContractDocuments:
additionalProperties: false
description: Paginated list of contract documents
example:
contract_documents:
- id: 0073fcb5-b669-4e4a-b963-2a47744e75a1
inserted_at: '2024-01-15T10:30:00Z'
name: Contract Agreement.pdf
signatories:
- email: john@example.com
name: John Doe
signed_at: '2024-01-15T10:30:00Z'
status: signed
type: employee
user_id: 0073fcb5-b669-4e4a-b963-2a47744e75a1
status: finished
type: contractor_services_agreement
updated_at: '2024-01-16T14:20:00Z'
current_page: 1
total_count: 1
total_pages: 1
properties:
contract_documents:
description: Array of contract documents
items:
$ref: '#/components/schemas/ContractDocumentItem'
type: array
current_page:
description: Current page number
minimum: 1
type: integer
total_count:
description: Total number of contract documents
minimum: 0
type: integer
total_pages:
description: Total number of pages
minimum: 0
type: integer
required:
- contract_documents
- current_page
- total_pages
- total_count
title: IndexContractDocuments
type: object
EmploymentContract:
example:
activated_at: '2021-07-15T18:18:17Z'
amendment_contract_id: e31adae1-contract-id-af5fba7dd803
compensation:
amount: 33000
currency_code: CAD
wage_type: salary
contract_details: {}
contract_id: 20a72f86-contract-id-9e4942a902ff
country:
alpha_2_code: PT
code: PRT
contractor_products_available:
- standard
- plus
- cor
country_subdivisions:
- code: PT-06
name: Coimbra
subdivision_type: District
- code: PT-11
name: Lisboa
subdivision_type: District
employment_agreement_preview_available: true
eor_onboarding: true
locked_benefits: after_first_hire
name: Portugal
region: Europe
subregion: Southern Europe
supported_json_schemas:
- additional_documents
- address_details
- administrative_details
- employment-basic-information
- bank_account_details
- contract_details
- emergency_contact
effective_at: '2021-07-15T18:18:17Z'
job_title: Engineer
status: active
properties:
activated_at:
$ref: '#/components/schemas/DateTimeIso8601'
amendment_contract_id:
description: The id of the employment contract that was amended by this employment contract, if any.
nullable: true
type: string
compensation:
$ref: '#/components/schemas/Compensation'
contract_details:
description: Contract information. Its properties may vary depending on the country.
type: object
contract_id:
description: The unique identifier (UUID) of this contract.
type: string
country:
$ref: '#/components/schemas/Country'
effective_at:
$ref: '#/components/schemas/DateTimeIso8601'
job_title:
description: The job title as specified in this contract.
type: string
status:
$ref: '#/components/schemas/EmploymentContractStatus'
required:
- contract_id
- amendment_contract_id
- country
- contract_details
- compensation
- job_title
- status
- activated_at
- effective_at
title: EmploymentContract
type: object
IndexContractDocumentsResponse:
additionalProperties: false
description: Paginated list of contract documents
example:
data:
contract_documents:
- id: 0073fcb5-b669-4e4a-b963-2a47744e75a1
inserted_at: '2024-01-15T10:30:00Z'
name: Contract Agreement.pdf
signatories:
- email: john@example.com
name: John Doe
signed_at: '2024-01-15T10:30:00Z'
status: signed
type: employee
user_id: 0073fcb5-b669-4e4a-b963-2a47744e75a1
status: finished
type: contractor_services_agreement
updated_at: '2024-01-16T14:20:00Z'
current_page: 1
total_count: 1
total_pages: 1
properties:
data:
$ref: '#/components/schemas/IndexContractDocuments'
required:
- data
title: IndexContractDocumentsResponse
type: object
EmploymentContractStatus:
description: The status of the employment contract.
enum:
- active
- inactive
- pending
example: active
title: EmploymentContractStatus
type: string
SignatoryStatus:
description: Current signing status of this signatory
enum:
- pending
- signed
- unassigned
example: pending
title: SignatoryStatus
type: string
UnauthorizedResponse:
description: Returned when the request does not include valid authentication credentials. Ensure you are passing a valid OAuth2 access token or API token in the Authorization header.
example:
message: Unauthorized
properties:
message:
pattern: Unauthorized
type: string
required:
- message
title: UnauthorizedResponse
type: object
UnprocessableEntityResponse:
anyOf:
- properties:
errors:
type: object
required:
- errors
type: object
- properties:
message:
oneOf:
- type: string
- $ref: '#/components/schemas/ParameterError'
- items:
$ref: '#/components/schemas/ParameterError'
title: ParameterErrors
type: array
- $ref: '#/components/schemas/ActionError'
- items:
$ref: '#/components/schemas/ActionError'
title: ActionErrors
type: array
required:
- message
type: object
example:
errors:
some_field:
- is invalid
title: UnprocessableEntityResponse
type: object
Country:
description: A supported country on Remote
example:
alpha_2_code: PT
code: PRT
contractor_products_available:
- standard
- plus
- cor
country_subdivisions:
- code: PT-06
name: Coimbra
subdivision_type: District
- code: PT-11
name: Lisboa
subdivision_type: District
employment_agreement_preview_available: true
eor_onboarding: true
locked_benefits: after_first_hire
name: Portugal
region: Europe
subregion: Southern Europe
supported_json_schemas:
- additional_documents
- address_details
- administrative_details
- employment-basic-information
- bank_account_details
- contract_details
- emergency_contact
properties:
alpha_2_code:
description: The ISO 3166-1 alpha-2 country code (e.g., "PT").
type: string
code:
description: The ISO 3166-1 alpha-3 country code (e.g., "PRT"). This is the primary code used across the Remote API.
type: string
contractor_products_available:
description: Contractor product names available for this country
items:
enum:
- standard
- plus
- cor
type: string
type: array
country_subdivisions:
description: Administrative subdivisions of the country (e.g., states, provinces, districts). Null if the country has no subdivisions relevant to Remote's services.
items:
$ref: '#/components/schemas/CountrySubdivision'
nullable: true
type: array
employment_agreement_preview_available:
description: Whether an Employment Agreement preview is available for this country.
type: boolean
eor_onboarding:
description: Whether EOR (Employer of Record) onboarding is available in this country.
type: boolean
locked_benefits:
description: When benefit plan selections become locked for this country (e.g., "after_first_hire" means benefits cannot be changed after the first employee is hired).
type: string
name:
description: The country's full English name.
type: string
region:
description: The geographic region the country belongs to (e.g., "Europe", "Asia", "Americas").
type: string
subregion:
description: The geographic subregion (e.g., "Southern Europe", "Southeast Asia"). Null for some countries.
nullable: true
type: string
supported_json_schemas:
description: The list of JSON schema form names available for this country (e.g., "address_details", "contract_details"). Use these with the Show form schema endpoint to get country-specific field requirements.
items:
type: string
type: array
required:
- alpha_2_code
- code
- name
title: Country
type: object
EmploymentContractPendingChangesResponse:
example:
data:
pending_changes:
- changes:
contract.job_title:
current: Senior Engineer
previous: Engineer
contract_id: 0073fcb5-b669-4e4a-b963-2a47744e75a1
effective_at: '2021-07-15T18:18:17Z'
properties:
data:
additionalProperties: false
properties:
pending_changes:
items:
$ref: '#/components/schemas/ContractPendingChanges'
type: array
required:
- pending_changes
type: object
required:
- data
title: EmploymentContractPendingChangesResponse
type: object
ActionError:
properties:
action:
description: The action that lead to the error message.
type: string
code:
description: An error code that describes the nature of the error.
type: string
message:
description: A developer friendly error message that gives details on what the error was and how it may be remedied.
type: string
required:
- code
- message
- action
title: ActionError
type: object
ContractorContractDocumentStatus:
description: 'The signing status of a contract document.
- `draft`: The document is being prepared and has not been sent for signing.
- `awaiting_signatures`: The document has been sent and is waiting for one or more parties to sign.
- `finished`: All required signatures have been collected and the contract is fully executed.
'
enum:
- draft
- awaiting_signatures
- finished
example: draft
title: ContractorContractDocumentStatus
type: string
SignatoryType:
description: The role of this signatory in the contract signing process
enum:
- company
- employee
- admin
- external
- unknown
example: company
title: SignatoryType
type: string
ContractDocumentItem:
additionalProperties: false
description: Contract document item in list response
example:
id: 0073fcb5-b669-4e4a-b963-2a47744e75a1
inserted_at: '2024-01-15T10:30:00Z'
name: Contract Agreement.pdf
signatories:
- email: john@example.com
name: John Doe
signed_at: '2024-01-15T10:30:00Z'
status: signed
type: employee
user_id: 0073fcb5-b669-4e4a-b963-2a47744e75a1
status: finished
type: contractor_services_agreement
updated_at: '2024-01-16T14:20:00Z'
properties:
id:
description: Contract document slug/ID
type: string
inserted_at:
description: Created timestamp
type: string
name:
description: Contract document name
nullable: true
type: string
signatories:
description: List of signatories for this contract document
items:
$ref: '#/components/schemas/ListSignatory'
type: array
status:
$ref: '#/components/schemas/ContractorContractDocumentStatus'
type:
description: Contract document type
type: string
updated_at:
description: Last updated timestamp
nullable: true
type: string
required:
- id
- name
- status
- type
- inserted_at
- updated_at
- signatories
title: ContractDocumentItem
type: object
ForbiddenResponse:
description: Returned when the authenticated user or token does not have permission to perform the requested action. Check that the token has the required OAuth2 scopes and that the user has the necessary role.
example:
message: Forbidden
properties:
message:
pattern: Forbidden
type: string
required:
- message
title: ForbiddenResponse
type: object
NotFoundResponse:
description: Returned when the requested resource does not exist or is not accessible with the current authentication credentials.
example:
message: '{resource} not found'
properties:
message:
description: A message indicating which resource was not found.
pattern: Not Found
type: string
title: NotFoundResponse
type: object
CountrySubdivision:
description: A subdivision of a supported country on Remote
example:
code: PT-11
name: Lisboa
subdivision_type: District
properties:
code:
description: The ISO 3166-2 subdivision code (e.g., "PT-11" for Lisboa).
type: string
name:
description: The subdivision's name (e.g., "Lisboa", "California").
type: string
subdivision_type:
description: The type of subdivision (e.g., "District", "State", "Province").
type: string
required:
- name
title: CountrySubdivision
type: object
DateTimeIso8601:
description: 'UTC date time in [ISO 8601][] format.
[ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
'
example: '2021-07-15T18:18:17Z'
format: date-time
title: DateTimeIso8601
type: string
ContractPendingChanges:
additionalProperties: false
example:
changes:
contract.job_title:
current: Senior Engineer
previous: Engineer
contract_id: 0073fcb5-b669-4e4a-b963-2a47744e75a1
effective_at: '2021-07-15T18:18:17Z'
properties:
changes:
description: 'Describes all the changes requested for the contract and contract details with all their previous and current values.
Its properties may vary depending on the country.
'
type: object
contract_id:
type: string
effective_at:
$ref: '#/components/schemas/DateTimeIso8601'
pending_action_for_activation:
description: 'Indicates if the contract is pending an action to be activated when effective_at is reached.
If true, it means that an action needs to be performed, either a verification by Remote or a signature from the
employer or the employee. If false, then the contract will be active when effective_at is reached.
'
type: boolean
required:
- effective_at
- contract_id
- changes
title: ContractPendingChanges
type: object
ListEmploymentContractResponse:
example:
data:
employment_contracts:
- activated_at: '2021-07-15T18:18:17Z'
amendment_contract_id: e31adae1-contract-id-af5fba7dd803
compensation:
amount: 33000
currency_code: CAD
wage_type: salary
contract_details: {}
contract_id: 20a72f86-contract-id-9e4942a902ff
country:
alpha_2_code: PT
code: PRT
contractor_products_available:
- standard
- plus
- cor
country_subdivisions:
- code: PT-06
name: Coimbra
subdivision_type: District
- code: PT-11
name: Lisboa
subdivision_type: District
employment_agreement_preview_available: true
eor_onboarding: true
locked_benefits: after_first_hire
name: Portugal
region: Europe
subregion: Southern Europe
supported_json_schemas:
- additional_documents
- address_details
- administrative_details
- employment-basic-information
- bank_account_details
- contract_details
- emergency_contact
effective_at: '2021-07-15T18:18:17Z'
job_title: Engineer
status: active
properties:
data:
additionalProperties: false
properties:
employment_contracts:
items:
$ref: '#/components/schemas/EmploymentContract'
type: array
required:
- employment_contracts
type: object
required:
- data
title: ListEmploymentContractResponse
type: object
ListSignatory:
additionalProperties: false
description: A signatory on a contract document. For company and employee signatories, `user_id` is provided. For other signatory types, `user_id` is null.
example:
email: john@example.com
name: John Doe
signed_at: '2024-01-15T10:30:00Z'
status: signed
type: employee
user_id: 0073fcb5-b669-4e4a-b963-2a47744e75a1
properties:
email:
description: Email address of the signatory
nullable: true
type: string
name:
description: Full name of the signatory
nullable: true
type: string
signature_method:
description: Signing method used by this signatory
enum:
- in_platform
- docusign
type: string
signature_type:
description: Legal signature level applied when signing
enum:
- standard
- qes
- aes
- ses
type: string
signed_at:
description: Timestamp when the signatory signed the document, null if not yet signed
format: date-time
nullable: true
type: string
status:
$ref: '#/components/schemas/SignatoryStatus'
type:
$ref: '#/components/schemas/SignatoryType'
user_id:
description: User identifier for internal signatories, null for external signatories
nullable: true
type: string
required:
- type
- status
title: ListSignatory
type: object
Compensation:
example:
amount: 33000
currency_code: CAD
wage_type: salary
properties:
amount:
description: The compensation amount in cents. Null if compensation is not yet set.
nullable: true
type: integer
currency_code:
description: The ISO 4217 currency code for the compensation. Null if not yet set.
nullable: true
type: string
wage_type:
description: Whether the employee is paid hourly or on a salary basis. Null if not yet set.
enum:
- hourly
- salary
nullable: true
type: string
required:
- amount
- currency_code
- wage_type
title: Compensation
type: object
securitySchemes:
BasicAuth:
description: 'Authenticate using the basic authentication for partners.
Use the CLIENT_ID as login and CLIENT_SECRET as password.
'
scheme: basic
type: http
ClientToken:
description: 'Authenticate a partner using only the the provided `client_token`.
This authentication method only allows accessing marketing endpoints.
'
scheme: bearer
type: http
CustomerAPIToken:
description: 'Authenticate using API Key generated by the customer in their Integration Settings page.
'
scheme: bearer
type: http
OAuth2:
description: 'Authenticate using OAuth 2.0 protocol.
'
flows:
authorizationCode:
authorizationUrl: /auth/oauth2/authorize
scopes:
company_department:read: company_department:read
webhook:write: webhook:write
magic_link:write: magic_link:write
offboarding:write: offboarding:write
custom_field:write: custom_field:write
address:write: address:write
expense:read: expense:read
employment:write: employment:write
identity_verification:write: identity_verification:write
timesheet:write: timesheet:write
travel_letter:write: travel_letter:write
incentive:read: incentive:read
personal_detail:read: personal_detail:read
invoices:write: invoices:write
work_authorization:write: work_authorization:write
timeoff:write: timeoff:write
company_structure:read: company_structure:read
benefit_renewal:write: benefit_renewal:write
benefit_offer:read: benefit_offer:read
employment_documents: employment_documents
onboarding:write: onboarding:write
payroll_run:read: payroll_run:read
risk_reserve:write: risk_reserve:write
invoices: invoices
resignation_letter:read: resignation_letter:read
resignation:read: resignation:read
convert_currency:read: convert_currency:read
employments: employments
probation_document:read: probation_document:read
company_admin: company_admin
payroll: payroll
help_center_article:read: help_center_article:read
timesheet:read: timesheet:read
custom_field_value:write: custom_field_value:write
company_currencies:read: company_currencies:read
payslip:re
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/remote/refs/heads/main/openapi/remote-employment-contracts-api-openapi.yml