Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://gateway.remote.com
https://gateway.remote-sandbox.com
/v1/benefit-offers/country-summaries
List benefit offers for each country.
Success
Not Found
Unprocessable Entity
GET /v1/benefit-offers/country-summaries
/v1/benefit-offers
List benefit offers by employment.
Success
Not Found
GET /v1/benefit-offers
/v1/billing-documents
List billing documents for a company
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| period | query | optional | string | The month for the billing documents (in ISO-8601 format) |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/billing-documents
/v1/billing-documents/{billing_document_id}
Shows a billing document details.
Please contact api-support@remote.com to request access to this endpoint.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| billing_document_id | path | required | string | The billing document’s ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Unprocessable Entity
GET /v1/billing-documents/{billing_document_id}
/v1/billing-documents/{billing_document_id}/pdf
Downloads a billing document PDF
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| billing_document_id | path | required | string | The billing document’s ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/billing-documents/{billing_document_id}/pdf
/v1/companies
List all companies that authorized your integration to act on their behalf. In other words, these are all the companies that your integration can manage. Any company that has completed the authorization flow for your integration will be included in the response.
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/companies
/v1/companies/{company_id}
Given an ID, shows a company
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | required | string | Company ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/companies/{company_id}
/v1/company-departments
Lists all departments for the authorized company specified in the request.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | query | required | string | Company ID |
| paginate | query | optional | boolean | Paginate option. Default: true. When true, paginates response; otherwise, does not. |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Number of items per page |
Success
Not Found
Unprocessable Entity
GET /v1/company-departments
/v1/company-managers
List all company managers of an integration. If filtered by the company_id param,
it lists only company managers belonging to the specified company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | query | optional | string | A Company ID to filter the results (only applicable for Integration Partners). |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/company-managers
/v1/company-managers/{user_id}
Shows a single company manager user
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| user_id | path | required | string | User ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/company-managers/{user_id}
/v1/contract-amendments
List Contract Amendment requests.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Number of items per page |
Success
Unauthorized
Not Found
Unprocessable Entity
GET /v1/contract-amendments
/v1/contract-amendments/{id}
Show a single Contract Amendment request.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Contract amendment request ID |
Success
Unauthorized
Not Found
Unprocessable Entity
GET /v1/contract-amendments/{id}
/v1/cost-calculator/countries
Lists active and processing countries
Success
GET /v1/cost-calculator/countries
/v1/cost-calculator/regions/{slug}/fields
Returns required fields JSON Schema for a given region. These are required in order to calculate
the cost of employment for the region. These fields are based on employer contributions that are associated
with the region or any of it’s parent regions.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| slug | path | required | string | Slug |
Success
Unauthorized
Internal Server Error
GET /v1/cost-calculator/regions/{slug}/fields
/v1/countries
Returns a list of all countries that are supported by Remote API alphabetically ordered. The supported list accounts for creating employment with basic information and it does not imply fully onboarding employment via JSON Schema.
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/countries
/v1/countries/{country_code}/holidays/{year}
List all holidays of a country for a specific year. Optionally, it can be filtered by country subdivision.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| country_code | path | required | string | Country code according to ISO 3166-1 3-digit alphabetic codes |
| year | path | required | string | Year for the holidays |
| country_subdivision_code | query | optional | string | Country subdivision code according to ISO 3166-2 codes |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/countries/{country_code}/holidays/{year}
/v1/countries/{country_code}/{form}
Returns the json schema of a supported form. Possible form names are:
- address_details
- administrative_details
- bank_account_details
- employment_basic_information
- billing_address_details
- contract_details
- emergency_contact
- employment_document_details
- personal_details
- pricing_plan_details
This endpoint requires a company access token, as forms are dependent on certain
properties of companies and their current employments.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| country_code | path | required | string | Country code according to ISO 3-digit alphabetic codes |
| form | path | required | string | Name of the desired form |
| employment_id | query | optional | string | Required for |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Unprocessable Entity
GET /v1/countries/{country_code}/{form}
/v1/custom-fields
Returns custom fields definitions
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/custom-fields
/v1/custom-fields/{custom_field_id}/values/{employment_id}
Returns a custom field value for a given employment
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| custom_field_id | path | required | string | Custom field ID |
| employment_id | path | required | string | Employment ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/custom-fields/{custom_field_id}/values/{employment_id}
/v1/employment-contracts
Get the employment contract history (list of all contracts active or not) for a given employment.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | query | required | string | Employment ID |
Success
Unauthorized
Forbidden
Not Found
Unprocessable Entity
GET /v1/employment-contracts
/v1/employment-contracts/{employment_id}/pending-changes
Get all the pending changes (waiting for aproval or signature) for the employment contract.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
Success
Unauthorized
Forbidden
Not Found
Unprocessable Entity
GET /v1/employment-contracts/{employment_id}/pending-changes
/v1/employments
Lists all employments, except for the deleted ones.
This endpoint requires and returns country-specific data. The exact required and returned fields will
vary depending on which country the employment is in. To see the list of parameters for each country,
see the Show form schema endpoint under the Countries category.
Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | query | optional | string | Company ID |
| query | optional | string | Filters the results by employments whose login email matches the value |
|
| status | query | optional | string | Filters the results by employments whose status matches the value |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/employments
/v1/employments/{employment_id}
Shows all the information of an employment.
This endpoint requires and returns country-specific data. The exact required and returned fields will
vary depending on which country the employment is in. To see the list of parameters for each country,
see the Show form schema endpoint under the Countries category.
Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/employments/{employment_id}
/v1/expenses
Lists all expenses records
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/expenses
/v1/expenses/{expense_id}/receipts/{receipt_id}
Download a receipt by id.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| expense_id | path | required | string | The expense ID |
| receipt_id | path | required | string | The receipt ID |
Success
Bad Request
Unauthorized
Forbidden
Not Found
Unprocessable Entity
Unprocessable Entity
Internal Server Error
GET /v1/expenses/{expense_id}/receipts/{receipt_id}
/v1/expenses/{id}
Shows a single expense record
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Expense ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/expenses/{id}
/v1/files/{id}
Downloads a file.
Please contact api-support@remote.com to request access to this endpoint.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | File ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/files/{id}
/v1/identity/current
Shows information about the entities that can be controlled by the current auth token.
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/identity/current
/v1/identity-verification/{employment_id}
Gets necessary information to perform the identity verification of an employee.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/identity-verification/{employment_id}
/v1/incentives
Lists all Incentives of a company
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | query | optional | string | Filter by Employment ID |
| status | query | optional | string | Filter by Incentive status |
| recurring_incentive_id | query | optional | string | Filter by Recurring Incentive id |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/incentives
/v1/incentives/{id}
Show an Incentive’s details
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Incentive ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/incentives/{id}
/v1/offboardings
Lists Offboarding requests.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | query | optional | string | Filter by Employment ID |
| type | query | optional | string | Filter by offboarding type |
| include_confidential | query | optional | string | By default, the results do not include confidential termination requests. |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/offboardings
/v1/offboardings/{id}
Shows an Offboarding request.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Offboarding request ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/offboardings/{id}
/v1/payslips
Lists all payslips belonging to a company. Can also filter for a single employment belonging
to that company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | query | optional | string | Employment ID |
| start_date | query | optional | string | Filters by payslips |
| end_date | query | optional | string | Filters by payslips |
| expected_payout_start_date | query | optional | string | Filters by payslips |
| expected_payout_end_date | query | optional | string | Filters by payslips |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/payslips
/v1/payslips/{id}
Given an ID, shows a payslip.
Please contact api-support@remote.com to request access to this endpoint.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Payslip ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/payslips/{id}
/v1/payslips/{payslip_id}/pdf
Given a Payslip ID, downloads a payslip.
It is important to note that each country has a different payslip format and they are not authored by Remote.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| payslip_id | path | required | string | Payslip ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/payslips/{payslip_id}/pdf
/v1/incentives/recurring
List all Recurring Incentives of a company.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| status | query | optional | string | Filter by recurring incentive status: active or deactive. |
| type | query | optional | string | Filter by recurring incentive type. |
| note | query | optional | string | Filter by recurring incentives that contain the value in their notes. |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/incentives/recurring
/v1/resignations/{employment_request_id}/resignation-letter
Downloads a resignation letter from an employment request.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_request_id | path | required | string | The employment request ID |
Success
Bad Request
Unauthorized
Forbidden
Not Found
Unprocessable Entity
Unprocessable Entity
Internal Server Error
GET /v1/resignations/{employment_request_id}/resignation-letter
/v1/timeoff
Lists all Time Off records.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | query | optional | string | Only show time off for a specific employment |
| timeoff_type | query | optional | Filter time off by its type |
|
| status | query | optional | Filter time off by its status |
|
| order | query | optional | string | Sort order |
| sort_by | query | optional | string | Field to sort by |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Number of items per page |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Unprocessable Entity
GET /v1/timeoff
/v1/timeoff/types
Lists all time off types that can be used for the timeoff_type parameter
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Unprocessable Entity
GET /v1/timeoff/types
/v1/timeoff/{id}
Shows a single Time Off record
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Timeoff ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Unprocessable Entity
GET /v1/timeoff/{id}
/v1/timeoff-balances/{employment_id}
Shows the time off balance for the given employment_id.
Please note, this endpoint is only supported for employments in certain countries.
For countries where it’s not supported, this endpoint will respond with a 404 Not Found.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID for which to show the time off balance |
Success
Bad Request
Unauthorized
TimeoffBalanceNotFoundResponse
Unprocessable Entity
Too many requests
GET /v1/timeoff-balances/{employment_id}
ActionError
{
"type": "object",
"title": "ActionError",
"required": [
"code",
"message",
"action"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "An error code that describes the nature of the error."
},
"action": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The action that lead to the error message."
},
"message": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "A developer friendly error message that gives details on what the error was and how it may be remedied."
}
},
"x-validate": null
}
ActionErrors
{
"type": "array",
"items": {
"$ref": "#/components/schemas/ActionError"
},
"title": "ActionErrors",
"x-struct": null,
"x-validate": null
}
AmountTaxType
{
"enum": [
"gross",
"net"
],
"type": "string",
"title": "AmountTaxType",
"example": "net",
"x-struct": null,
"x-validate": null,
"description": " Whether the amount given accounts for taxes or not.\n\n `gross` indicates that the amount given is the amount to be paid before taxes\n are subtracted.\n\n `net` indicates that the amount given is the amount which will be paid to the\n employee after taxes. Remote will gross this up to ensure the taxes are\n included and employee receives the amount requested without further reduction.\n"
}
ApproveExpenseParams
{
"type": "object",
"title": "ApproveExpenseParams",
"example": {
"status": "approved"
},
"required": [
"status"
],
"x-struct": null,
"properties": {
"status": {
"enum": [
"approved"
],
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Approve an expense"
}
AuthorizationCodeParams
{
"type": "object",
"title": "AuthorizationCodeParams",
"example": {
"code": "eyJhbG...xb6H0",
"grant_type": "authorization_code"
},
"required": [
"grant_type",
"code"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The authorization code generated in Authorization Code flow"
},
"grant_type": {
"enum": [
"authorization_code"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The Authorization flow"
}
},
"x-validate": null
}
AuthorizationCodeResponse
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BaseTokenResponse"
},
{
"type": "object",
"example": {
"user_id": "6550e536-8655-4bce-8bd9-b295f786ad71",
"company_id": "6e60f5f9-e6a6-4b04-b13c-84bced848bab",
"expires_in": 7200,
"token_type": "Bearer",
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ",
"refresh_token": "b480036a-d229-49ef-a606-7e8fba58a5eb"
},
"x-struct": null,
"properties": {
"user_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The ID of the user who connected the company."
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The ID of the connected company."
},
"refresh_token": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The refresh token. This token must be stored and used for issuing new access tokens for managing the company's resources."
}
},
"x-validate": null
}
],
"title": "AuthorizationCodeResponse",
"x-struct": null,
"x-validate": null
}
BadRequestResponse
{
"type": "object",
"oneOf": [
{
"type": "object",
"required": [
"message"
],
"x-struct": null,
"properties": {
"message": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
},
{
"type": "object",
"x-struct": null,
"properties": {
"message": {
"type": "object",
"required": [
"code",
"message"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"message": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null
}
],
"title": "BadRequestResponse",
"example": {
"message": "invalid {resource}"
},
"x-struct": null,
"x-validate": null
}
Base64File
{
"type": "object",
"title": "Base64File",
"example": {
"name": "receipt.pdf",
"content": "UGVyaW9kIEVuZCBEYXRlLFBheSBEYXRlLEVtcG...5jZSBPZiBSZXNpZGVuYdXJyZW50LEFsbG93"
},
"required": [
"name",
"content"
],
"x-struct": null,
"properties": {
"name": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The file name."
},
"content": {
"type": "string",
"format": "binary",
"x-struct": null,
"x-validate": null,
"description": "The content in base64 encoding."
}
},
"x-validate": null,
"description": "All the params needed upload a base64 file."
}
BaseTokenResponse
{
"type": "object",
"title": "BaseTokenResponse",
"example": {
"expires_in": 7200,
"token_type": "Bearer",
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ"
},
"x-struct": null,
"properties": {
"expires_in": {
"type": "integer",
"format": "int32",
"x-struct": null,
"x-validate": null,
"description": "Number of seconds until token is expired."
},
"token_type": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The type of the token. For now, always `Bearer`."
},
"access_token": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "A JWT token."
}
},
"x-validate": null
}
Benefit
{
"type": "object",
"title": "Benefit",
"example": {
"id": "562977cfd-cf60-4cf4-a70f-ac2061d709088X",
"name": "benefit name",
"type": "benefit type",
"costs": {
"employee_cost": 234,
"employer_cost": 44
},
"status": "enrolled",
"provider": {
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
},
"projected_costs": null,
"coverage_end_date": "2025-02-28",
"coverage_start_date": "2024-03-18"
},
"required": [
"id",
"status",
"name",
"type",
"coverage_start_date",
"coverage_end_date",
"provider",
"costs",
"projected_costs"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"type": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"costs": {
"$ref": "#/components/schemas/Costs"
},
"status": {
"enum": [
"initiated",
"enrolled",
"waived"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"provider": {
"$ref": "#/components/schemas/BenefitProvider"
},
"projected_costs": {
"$ref": "#/components/schemas/Costs"
},
"coverage_end_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"coverage_start_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Benefits with status enrolled have their summed costs in costs.\nBenefits with status initiated have their summed costs in projected_costs.\nBenefit-offers where the employer opted-out have benefit_tier: null in the response.\n"
}
BenefitGroup
{
"type": "object",
"title": "BenefitGroup",
"example": {
"id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
"name": "Health",
"policy_end_date": "2024-12-31",
"policy_start_date": "2024-01-01"
},
"required": [
"id",
"name",
"policy_start_date",
"policy_end_date"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"policy_end_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"policy_start_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
BenefitOffer
{
"type": "object",
"title": "BenefitOffer",
"example": {
"costs": {
"employee_cost": 234,
"employer_cost": 44
},
"benefits": [
{
"id": "562977cfd-cf60-4cf4-a70f-ac2061d709088",
"name": "benefit name",
"type": "benefit type",
"costs": {
"employee_cost": 234,
"employer_cost": 44
},
"status": "enrolled",
"provider": {
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
},
"projected_costs": null,
"coverage_end_date": "2025-02-28",
"coverage_start_date": "2024-03-18"
}
],
"benefit_tier": {
"id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
"name": "Premium 2023 (Medical, Dental and Vision)",
"providers": [
{
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
}
]
},
"benefit_group": {
"id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
"name": "Health",
"policy_end_date": "2024-12-31",
"policy_start_date": "2024-01-01"
}
},
"required": [
"benefit_group",
"benefit_tier",
"costs",
"benefits"
],
"x-struct": null,
"properties": {
"costs": {
"$ref": "#/components/schemas/Costs"
},
"benefits": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Benefit"
},
"x-struct": null,
"x-validate": null
},
"benefit_tier": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BenefitTier"
}
],
"title": "MaybeBenefitTier",
"example": {
"id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
"name": "Premium 2023 (Medical, Dental and Vision)",
"providers": [
{
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
}
]
},
"nullable": true,
"x-struct": null,
"x-validate": null
},
"benefit_group": {
"$ref": "#/components/schemas/BenefitGroup"
}
},
"x-validate": null
}
BenefitOfferByEmploymentResponse
{
"type": "object",
"title": "BenefitOfferByEmploymentResponse",
"example": {
"data": {
"currency": [
{
"code": "EUR",
"name": "European Euro",
"slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
"symbol": "€"
}
],
"company_id": "79297cfd-cf60-4cf4-a70f-ac2061d72a74",
"benefit_offers_by_employment": [
{
"costs": {
"employee_cost": 234,
"employer_cost": 44
},
"employment": {
"id": "67897cfd-cf60-4cf4-a70f-ac2061d72984X",
"name": "Name",
"country": {
"code": "PRT",
"name": "Portugal",
"alpha_2_code": "PT",
"country_subdivisions": [
{
"code": "PT-06",
"name": "Coimbra",
"subdivision_type": "District"
},
{
"code": "PT-11",
"name": "Lisboa",
"subdivision_type": "District"
}
],
"supported_json_schemas": [
"additional_documents",
"address_details",
"administrative_details",
"employment-basic-information",
"bank_account_details",
"contract_details",
"emergency_contact"
]
},
"surname": "Surname",
"given_name": "Given Name"
},
"benefit_offers": [
{
"costs": {
"employee_cost": 234,
"employer_cost": 44
},
"benefits": [
{
"id": "562977cfd-cf60-4cf4-a70f-ac2061d709088X",
"name": "benefit name",
"type": "benefit type",
"costs": {
"employee_cost": 234,
"employer_cost": 44
},
"status": "enrolled",
"provider": {
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
},
"projected_costs": null,
"coverage_end_date": "2025-02-28",
"coverage_start_date": "2024-03-18"
}
],
"benefit_tier": {
"id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
"name": "Premium 2023 (Medical, Dental and Vision)",
"providers": [
{
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
}
]
},
"benefit_group": {
"id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
"name": "Health",
"policy_end_date": "2024-12-31",
"policy_start_date": "2024-01-01"
}
}
]
}
]
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"benefit_offers_by_employment",
"company_id",
"currency"
],
"x-struct": null,
"properties": {
"currency": {
"$ref": "#/components/schemas/Currency"
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"benefit_offers_by_employment": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BenefitOffersByEmployment"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null
}
BenefitOffersByEmployment
{
"type": "object",
"title": "BenefitOffersByEmployment",
"example": {
"costs": {
"employee_cost": 234,
"employer_cost": 44
},
"employment": {
"id": "67897cfd-cf60-4cf4-a70f-ac2061d72984X",
"name": "Name",
"country": {
"code": "PRT",
"name": "Portugal",
"alpha_2_code": "PT",
"country_subdivisions": [
{
"code": "PT-06",
"name": "Coimbra",
"subdivision_type": "District"
},
{
"code": "PT-11",
"name": "Lisboa",
"subdivision_type": "District"
}
],
"supported_json_schemas": [
"additional_documents",
"address_details",
"administrative_details",
"employment-basic-information",
"bank_account_details",
"contract_details",
"emergency_contact"
]
},
"surname": "Surname",
"given_name": "Given Name"
},
"benefit_offers": [
{
"costs": {
"employee_cost": 234,
"employer_cost": 44
},
"benefits": [
{
"id": "562977cfd-cf60-4cf4-a70f-ac2061d709088X",
"name": "benefit name",
"type": "benefit type",
"costs": {
"employee_cost": 234,
"employer_cost": 44
},
"status": "enrolled",
"provider": {
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
},
"projected_costs": null,
"coverage_end_date": "2025-02-28",
"coverage_start_date": "2024-03-18"
}
],
"benefit_tier": {
"id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
"name": "Premium 2023 (Medical, Dental and Vision)",
"providers": [
{
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
}
]
},
"benefit_group": {
"id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
"name": "Health",
"policy_end_date": "2024-12-31",
"policy_start_date": "2024-01-01"
}
}
]
},
"required": [
"employment",
"costs",
"benefit_offers"
],
"x-struct": null,
"properties": {
"costs": {
"$ref": "#/components/schemas/Costs"
},
"employment": {
"$ref": "#/components/schemas/Employment"
},
"benefit_offers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BenefitOffer"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
BenefitProvider
{
"type": "object",
"title": "BenefitProvider",
"example": {
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
},
"required": [
"id",
"name"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
BenefitTier
{
"type": "object",
"title": "BenefitTier",
"example": {
"id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
"name": "Premium 2023 (Medical, Dental and Vision)",
"providers": [
{
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
"name": "Health Provider"
}
]
},
"required": [
"id",
"name",
"providers"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"providers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BenefitProvider"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
BillingDocument
{
"type": "object",
"title": "BillingDocument",
"example": {
"id": "8772a9f1-b43c-46be-a1ce-e50b6819f5eeX",
"items": [
{
"type": "base_salary",
"employment_id": "0d25c513-employment-id-198557128104",
"source_amount": 50000,
"source_currency": "EUR",
"billing_document_amount": 1000000,
"billing_document_currency": "CAD"
}
],
"total": 1100000,
"company_id": "2f889520-9a21-44b0-990d-e4ae37d8db53",
"issued_date": "2023-08-22",
"billing_document_type": "reconciliation_invoice",
"billing_document_period": "2021-12",
"billing_document_currency": "EUR"
},
"required": [
"company_id",
"id",
"billing_document_period",
"issued_date",
"billing_document_type",
"billing_document_currency",
"total",
"items"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BillingDocumentAmountItem"
},
"x-struct": null,
"x-validate": null
},
"total": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"issued_date": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"billing_document_type": {
"enum": [
"reconciliation_invoice",
"prefunding_invoice",
"supplemental_service_invoice",
"reconciliation_credit_note"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"billing_document_period": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"billing_document_currency": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Information of a billing document"
}
BillingDocumentAmountItem
{
"type": "object",
"title": "BillingDocumentAmountItem",
"example": {
"type": "base_salary",
"employment_id": "0d25c513-employment-id-198557128104",
"source_amount": 50000,
"source_currency": "EUR",
"billing_document_amount": 1000000,
"billing_document_currency": "CAD"
},
"required": [
"type",
"billing_document_amount",
"billing_document_currency"
],
"x-struct": null,
"properties": {
"type": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"source_amount": {
"type": "integer",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"source_currency": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"billing_document_amount": {
"type": "integer",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"billing_document_currency": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
BillingDocumentResponse
{
"type": "object",
"title": "BillingDocumentResponse",
"example": {
"data": {
"billing_document": {
"id": "8772a9f1-b43c-46be-a1ce-e50b6819f5eeX",
"items": [
{
"type": "base_salary",
"employment_id": "0d25c513-employment-id-198557128104",
"source_amount": 50000,
"source_currency": "EUR",
"billing_document_amount": 1000000,
"billing_document_currency": "CAD"
}
],
"total": 1100000,
"company_id": "2f889520-9a21-44b0-990d-e4ae37d8db53",
"issued_date": "2023-08-22",
"billing_document_type": "reconciliation_invoice",
"billing_document_period": "2021-12",
"billing_document_currency": "EUR"
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"billing_document"
],
"x-struct": null,
"properties": {
"billing_document": {
"$ref": "#/components/schemas/BillingDocument"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Information of a billing document"
}
BillingDocumentsResponse
{
"type": "object",
"title": "BillingDocumentsResponse",
"example": {
"data": {
"total_count": 1,
"total_pages": 1,
"current_page": 1,
"billing_documents": [
{
"id": "8772a9f1-b43c-46be-a1ce-e50b6819f5ee",
"billing_document_type": "base_salary",
"billing_document_period": "2023-12"
}
]
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"billing_documents",
"current_page",
"total_pages",
"total_count"
],
"x-struct": null,
"properties": {
"total_count": {
"type": "integer",
"example": 100,
"x-struct": null,
"x-validate": null,
"description": "The total number of records returned counting all pages"
},
"total_pages": {
"type": "integer",
"example": 10,
"x-struct": null,
"x-validate": null,
"description": "The total number of pages the user can go through"
},
"current_page": {
"type": "integer",
"example": 1,
"x-struct": null,
"x-validate": null,
"description": "The current page among all of the total_pages"
},
"billing_documents": {
"type": "array",
"items": {
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"billing_document_type": {
"enum": [
"reconciliation_invoice",
"prefunding_invoice",
"supplemental_service_invoice",
"reconciliation_credit_note"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"billing_document_period": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Information about a list of billing documents"
}
ClientCredentialsParams
{
"type": "object",
"title": "ClientCredentialsParams",
"example": {
"client_id": "<client_id>",
"grant_type": "client_credentials"
},
"required": [
"grant_type",
"client_id"
],
"x-struct": null,
"properties": {
"client_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The client id generated during registration"
},
"grant_type": {
"enum": [
"client_credentials"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The Authorization flow"
}
},
"x-validate": null
}
CommonIncentiveParams
{
"type": "object",
"title": "CommonIncentiveParams",
"example": {
"note": "Bonus for moving start date to an earlier date",
"amount": 50000,
"effective_date": "2021-12-20",
"amount_tax_type": "net"
},
"x-struct": null,
"properties": {
"note": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"amount": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The amount (in the currency of the employment) to be given to the employee.\n\nThis field accepts fractional amounts as well. However to avoid precision issues\nand errors that can arise from storing fractional amounts, the Remote API only\naccepts currencies and their fractional amounts as integers. This means you\nshould append fractional amounts to the end of the amount you're passing in with\nthis field.\n\nFor example, if the incentive you're offering is EUR 500.25, you would specify `50025` as\nthe amount for this field.\n"
},
"effective_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null,
"description": "The date at which the incentive should take effect.\n\nNote that the incentive is not paid out on the effective date, but during the\nnext payroll cycle. The effective date determines which payroll cycle the\nincentive will be paid out in.\n\nThe effective date needs to be today or a future date.\n\nNote for recurring incentives: since the months don't have the same amount of days,\nif day of month of `effective_date` is one of [28, 29, 30, 31] it will be transformed to\nthe last day of each month, avoiding the possibility of skipping a month in the recurrence.\n"
},
"amount_tax_type": {
"$ref": "#/components/schemas/AmountTaxType"
}
},
"x-validate": null
}
CompaniesResponse
{
"type": "object",
"title": "CompaniesResponse",
"example": {
"data": {
"companies": [
{
"id": "e5a8b061-company-id-4c5c81ac885eX",
"name": "Your Company Name",
"status": "active",
"created_at": "2021-10-29T12:39:13",
"updated_at": "2021-10-29T12:39:15",
"external_id": "00001111",
"country_code": "USA",
"phone_number": "+1123123456",
"address_details": {
"city": "San Francisco",
"state": "CA",
"address": "1709 Broderick St",
"postal_code": "94115",
"address_line_2": "Flat number 123"
},
"desired_currency": "USD",
"company_owner_name": "Joe Smith",
"company_owner_email": "te@remote.com",
"bank_account_details": {
"name": "Bank name",
"account_type": "savings",
"account_holder": "Joe Smith",
"account_number": "31234123123",
"ownership_type": "BUSINESS",
"routing_number": "123124123"
},
"terms_of_service_accepted_at": "2021-10-29T12:39:15Z"
}
]
}
},
"x-struct": null,
"properties": {
"companies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Company"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Shows a list of companies"
}
Company
{
"type": "object",
"title": "Company",
"example": {
"id": "e5a8b061-company-id-4c5c81ac885eX",
"name": "Your Company Name",
"status": "active",
"created_at": "2021-10-29T12:39:13",
"updated_at": "2021-10-29T12:39:15",
"external_id": "00001111",
"country_code": "USA",
"phone_number": "+1123123456",
"address_details": {
"city": "San Francisco",
"state": "CA",
"address": "1709 Broderick St",
"postal_code": "94115",
"address_line_2": "Flat number 123"
},
"desired_currency": "USD",
"company_owner_name": "Joe Smith",
"company_owner_email": "te@remote.com",
"bank_account_details": {
"name": "Bank name",
"account_type": "savings",
"account_holder": "Joe Smith",
"account_number": "31234123123",
"ownership_type": "BUSINESS",
"routing_number": "123124123"
},
"terms_of_service_accepted_at": "2021-10-29T12:39:15Z"
},
"required": [
"address_details",
"company_owner_email",
"country_code",
"created_at",
"desired_currency",
"id",
"name",
"status",
"updated_at",
"terms_of_service_accepted_at"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"status": {
"enum": [
"pending",
"review",
"active",
"archived"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The company status determines what a company is allowed to do:\n- `pending`: The company has been created and the company owner invited. Remote is waiting for the company owner to complete onboarding.\n- `review`: The company is under review. In rare occasions, a company may not automatically get created in `active` status because Remote needs to\n manually review the company that was created. The company will become `active` once the review is completed and no further action is necessary\n through the Remote API.\n- `active`: The company owner has completed onboarding and the company is ready to employ.\n- `archived`: The company is no longer active on the Remote platform and no changes can be made to the company.\n"
},
"created_at": {
"type": "string",
"format": "date-time",
"x-struct": null,
"x-validate": null
},
"tax_number": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"updated_at": {
"type": "string",
"format": "date-time",
"x-struct": null,
"x-validate": null
},
"external_id": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"country_code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"phone_number": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"address_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Fields can vary depending on the country. Please, check the required fields structure using the [Show form schema endpoint](https://gateway.remote.com/v1/docs/openapi.html).\nUse the desired country and `address_details` as the form name for the placeholders.\nThe response complies with the [JSON Schema](https://remote.com/resources/api/how-json-schemas-work) specification.\n"
},
"desired_currency": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"company_owner_name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"company_owner_email": {
"type": "string",
"format": "email",
"x-struct": null,
"x-validate": null
},
"registration_number": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"bank_account_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Fields can vary depending on the country. Please, check the required fields structure using the [Show form schema endpoint](https://gateway.remote.com/v1/docs/openapi.html).\nUse the desired country and `bank_account_details` as the form name for the placeholders.\nThe response complies with the [JSON Schema](https://remote.com/resources/api/how-json-schemas-work) specification.\n"
},
"terms_of_service_accepted_at": {
"type": "string",
"format": "date-time",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CompanyAlreadyExistsErrorResponse
{
"type": "object",
"title": "CompanyAlreadyExistsErrorResponse",
"example": {
"message": {
"code": "resource_already_exists",
"message": "The company with the provided EIN is already registered.",
"resource_id": "d1bb9535-3296-4240-8a67-81475bd24e80",
"resource_type": "company_creation"
}
},
"x-struct": null,
"properties": {
"code": {
"type": "string",
"pattern": "resource_already_exists",
"x-struct": null,
"x-validate": null
},
"message": {
"type": "string",
"pattern": "The company with the provided EIN is already registered.",
"x-struct": null,
"x-validate": null
},
"resource_id": {
"type": "string",
"format": "uuid",
"x-struct": null,
"x-validate": null
},
"resource_type": {
"type": "string",
"pattern": "company_creation",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Error returned when a company with matching criteria already exists"
}
CompanyCreationConflictErrorResponse
{
"type": "object",
"title": "CompanyCreationConflictErrorResponse",
"x-struct": null,
"properties": {
"message": {
"oneOf": [
{
"$ref": "#/components/schemas/CompanyAlreadyExistsErrorResponse"
},
{
"$ref": "#/components/schemas/CompanyNotEligibleForCreationErrorResponse"
}
],
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CompanyCreationResponse
{
"type": "object",
"title": "CompanyCreationResponse",
"x-struct": null,
"properties": {
"data": {
"oneOf": [
{
"$ref": "#/components/schemas/CompanyResponse"
},
{
"$ref": "#/components/schemas/CompanyWithTokensResponse"
}
],
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CompanyDepartment
{
"type": "object",
"title": "CompanyDepartment",
"example": {
"id": "89c4fbb2-cd1f-4334-8e4b-280f8795bbd8X",
"name": "Marketing",
"company_id": "669f9e18-889f-4c2c-95b8-67795a3113cc"
},
"required": [
"id",
"company_id",
"name"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"format": "uuid",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Company ID"
}
},
"x-validate": null
}
CompanyDepartmentCreatedResponse
{
"type": "object",
"title": "CompanyDepartmentCreatedResponse",
"example": {
"data": {
"company_department": {
"id": "89c4fbb2-cd1f-4334-8e4b-280f8795bbd8X",
"name": "Marketing",
"company_id": "669f9e18-889f-4c2c-95b8-67795a3113cc"
}
}
},
"x-struct": null,
"properties": {
"company_department": {
"$ref": "#/components/schemas/CompanyDepartment"
}
},
"x-validate": null
}
CompanyManager
{
"type": "object",
"title": "CompanyManager",
"example": {
"role": "owner",
"user_id": "983088c9-user-id-023fc08b8625",
"user_name": "Anne White",
"company_id": "0a8s2d1-company-id-2e3f4th",
"user_email": "user@example.com"
},
"required": [
"company_id",
"user_id",
"user_name",
"user_email",
"role"
],
"x-struct": null,
"properties": {
"role": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Company Manager role."
},
"user_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "User ID"
},
"user_name": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "User's name"
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Company ID"
},
"user_email": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "User Email"
}
},
"x-validate": null
}
CompanyManagerData
{
"type": "object",
"title": "CompanyManagerData",
"example": {
"company_manager": {
"role": "owner",
"user_id": "983088c9-user-id-023fc08b8625",
"user_name": "Anne White",
"company_id": "0a8s2d1-company-id-2e3f4th",
"user_email": "user@example.com"
}
},
"required": [
"company_manager"
],
"x-struct": null,
"properties": {
"company_manager": {
"$ref": "#/components/schemas/CompanyManager"
}
},
"x-validate": null
}
CompanyManagerParams
{
"type": "object",
"title": "CompanyManagerParams",
"required": [
"name",
"email",
"role"
],
"x-struct": null,
"properties": {
"name": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The name of the company manager"
},
"role": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The role assigned for the new manager. The value should be one of the following:\n\n- `admin`: an Admin can manage most of the resources in remote.\n- `onboarding_manager`: an Onboarding Manager can add, see and manage new hires.\n- `people_manager`: a People Manager can view employee profiles of the team members they manage and approve and decline time off and expenses for their employees.\n"
},
"email": {
"type": "string",
"format": "email",
"x-struct": null,
"x-validate": null,
"description": "The work email of the company manager"
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The Company ID. Required if the access token can access multiple companies. Optional otherwise."
}
},
"x-validate": null
}
CompanyManagerResponse
{
"type": "object",
"title": "CompanyManagerResponse",
"example": {
"data": {
"company_manager": {
"role": "owner",
"user_id": "983088c9-user-id-023fc08b8625",
"user_name": "Anne White",
"company_id": "0a8s2d1-company-id-2e3f4th",
"user_email": "user@example.com"
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"$ref": "#/components/schemas/CompanyManagerData"
}
},
"x-validate": null
}
CompanyManagersResponse
{
"type": "object",
"title": "CompanyManagersResponse",
"example": {
"total_count": 1,
"total_pages": 1,
"current_page": 1,
"company_managers": [
{
"role": "owner",
"user_id": "983088c9-user-id-023fc08b8625",
"user_name": "Anne White",
"company_id": "0a8s2d1-company-id-2e3f4th",
"user_email": "user@example.com"
}
]
},
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"total_count": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The total number of records in the result"
},
"total_pages": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The total number of pages the user can go through"
},
"current_page": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The current page among all of the total_pages"
},
"company_managers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CompanyManager"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many company_managers"
}
CompanyNotEligibleForCreationErrorResponse
{
"type": "object",
"title": "CompanyNotEligibleForCreationErrorResponse",
"example": {
"message": {
"code": "resource_not_eligible",
"message": "The company already have employees in integration supported countries.",
"resource_id": "d1bb9535-3296-4240-8a67-81475bd24e80",
"resource_type": "company_creation"
}
},
"x-struct": null,
"properties": {
"code": {
"type": "string",
"pattern": "resource_not_eligible",
"x-struct": null,
"x-validate": null
},
"message": {
"type": "string",
"pattern": "The company already have employees in integration supported countries.",
"x-struct": null,
"x-validate": null
},
"resource_id": {
"type": "string",
"format": "uuid",
"x-struct": null,
"x-validate": null
},
"resource_type": {
"type": "string",
"pattern": "company_creation",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Error returned when the company already have employees in countries supported by the integration."
}
CompanyResponse
{
"type": "object",
"title": "CompanyResponse",
"example": {
"data": {
"company": {
"id": "e5a8b061-company-id-4c5c81ac885eX",
"name": "Your Company Name",
"status": "active",
"created_at": "2021-10-29T12:39:13",
"updated_at": "2021-10-29T12:39:15",
"external_id": "00001111",
"country_code": "USA",
"phone_number": "+1123123456",
"address_details": {
"city": "San Francisco",
"state": "CA",
"address": "1709 Broderick St",
"postal_code": "94115",
"address_line_2": "Flat number 123"
},
"desired_currency": "USD",
"company_owner_name": "Joe Smith",
"company_owner_email": "te@remote.com",
"bank_account_details": {
"name": "Bank name",
"account_type": "savings",
"account_holder": "Joe Smith",
"account_number": "31234123123",
"ownership_type": "BUSINESS",
"routing_number": "123124123"
},
"terms_of_service_accepted_at": "2021-10-29T12:39:15Z"
}
}
},
"x-struct": null,
"properties": {
"company": {
"$ref": "#/components/schemas/Company"
}
},
"x-validate": null,
"description": "Shows a company"
}
CompanyWithTokensResponse
{
"type": "object",
"title": "CompanyWithTokensResponse",
"example": {
"data": {
"tokens": {
"user_id": "6550e536-8655-4bce-8bd9-b295f786ad71",
"company_id": "6e60f5f9-e6a6-4b04-b13c-84bced848bab",
"expires_in": 7200,
"token_type": "Bearer",
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ",
"refresh_token": "b480036a-d229-49ef-a606-7e8fba58a5eb"
},
"company": {
"id": "e5a8b061-company-id-4c5c81ac885e",
"name": "Your Company Name",
"status": "active",
"created_at": "2021-10-29T12:39:13",
"updated_at": "2021-10-29T12:39:15",
"external_id": "00001111",
"country_code": "USA",
"phone_number": "+1123123456",
"address_details": {
"city": "San Francisco",
"state": "CA",
"address": "1709 Broderick St",
"postal_code": "94115",
"address_line_2": "Flat number 123"
},
"desired_currency": "USD",
"company_owner_name": "Joe Smith",
"company_owner_email": "te@remote.com",
"bank_account_details": {
"name": "Bank name",
"account_type": "savings",
"account_holder": "Joe Smith",
"account_number": "31234123123",
"ownership_type": "BUSINESS",
"routing_number": "123124123"
},
"terms_of_service_accepted_at": "2021-10-29T12:39:15Z"
}
}
},
"x-struct": null,
"properties": {
"tokens": {
"$ref": "#/components/schemas/OAuth2Tokens"
},
"company": {
"$ref": "#/components/schemas/Company"
}
},
"x-validate": null,
"description": "Shows a company with its refresh and access tokens. Please contact Remote if you need the tokens when creating a company."
}
Compensation
{
"type": "object",
"title": "Compensation",
"example": {
"amount": 33000,
"currency_code": "CAD"
},
"required": [
"amount",
"currency_code"
],
"x-struct": null,
"properties": {
"amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"currency_code": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CompleteOnboarding
{
"type": "object",
"title": "CompleteOnboarding",
"x-struct": null,
"properties": {
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Parameters to complete onboarding"
}
ConflictResponse
{
"type": "object",
"title": "ConflictResponse",
"example": {
"message": "Company needs to be in status active to manage employments"
},
"x-struct": null,
"properties": {
"message": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
ContractAmendment
{
"type": "object",
"title": "ContractAmendment",
"example": {
"id": "ba310525-9282-40c9-8977-14d844bf891aX",
"status": "submitted",
"changes": {
"contract.job_title": {
"current": "A new job title",
"previous": "An old job title"
},
"compensation.amount": {
"current": 500000,
"previous": 400000
},
"contract_details.details.contract_duration_type": {
"current": "fixed_term",
"previous": "indefinite"
}
},
"requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
"submitted_at": "2023-04-13T13:35:06Z",
"employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
"requested_details": {
"effective_date": "2024-03-04",
"reason_for_change": "annual_pay_adjustment",
"additional_comments": null,
"salary_decrease_details": null,
"reason_for_change_description": null
},
"zendesk_ticket_url": "https://zendesk.com/ticket-23333",
"amendment_contract_id": "8772a9f1-b43c-46be-a1ce-e50b6819f5ee"
},
"required": [
"id",
"amendment_contract_id",
"employment_id",
"status",
"requested_by",
"submitted_at",
"request_details",
"changes",
"zendesk_ticket_url"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"status": {
"enum": [
"submitted",
"in_review",
"done",
"canceled",
"deleted"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"changes": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Describes all the changes requested for the contract and contract details with all their previous and current values."
},
"requested_by": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"submitted_at": {
"type": "string",
"format": "datetime",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"request_details": {
"$ref": "#/components/schemas/RequestDetails"
},
"zendesk_ticket_url": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"amendment_contract_id": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Contract Amendment"
}
ContractAmendmentAutomatableResponse
{
"type": "object",
"title": "ContractAmendmentAutomatableResponse",
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"message": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The message to explain how the contract amendment request will be processed depending if it is automatable or not."
},
"automatable": {
"type": "boolean",
"x-struct": null,
"x-validate": null,
"description": "If true, it means that the contract amendment request is automatable."
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Contract Amendment Automatable response"
}
ContractAmendmentFormResponse
{
"type": "object",
"title": "ContractAmendmentFormResponse",
"example": {
"data": {
"type": "object",
"required": [
"job_title",
"effective_date"
],
"properties": {
"job_title": {
"type": "string",
"title": "Job title",
"maxLength": 255,
"description": "What is their job title? E.g. Product designer"
},
"effective_date": {
"type": "date",
"title": "Effective date of change",
"description": "If you want to backdate this amendment, we cannot guarantee your preferred date is possible due to country-specific laws.\nPlease enter your preferred date, and we’ll reach out to you if there are any issues.\n"
}
}
}
},
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Object with required and optional fields, its descriptions and suggested presentation"
}
ContractAmendmentResponse
{
"type": "object",
"title": "ContractAmendmentResponse",
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"contract_amendment"
],
"x-struct": null,
"properties": {
"contract_amendment": {
"$ref": "#/components/schemas/ContractAmendment"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Contract Amendment response"
}
ContractAmendmentSchemaParams
{
"type": "object",
"title": "ContractAmendmentSchemaParams",
"required": [
"country_code",
"employment_id"
],
"x-struct": null,
"properties": {
"form": {
"enum": [
"contract_amendment"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Name of the desired form"
},
"country_code": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Country code according to ISO 3-digit alphabetic codes."
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The ID of the employment concerned by the contract amendment request."
}
},
"x-validate": null
}
ContractPendingChanges
{
"type": "object",
"title": "ContractPendingChanges",
"example": {
"changes": {
"contract.job_title": {
"current": "Senior Engineer",
"previous": "Engineer"
}
},
"contract_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
"effective_at": "2021-07-15T18:18:17Z"
},
"required": [
"effective_at",
"contract_id",
"changes"
],
"x-struct": null,
"properties": {
"changes": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Describes all the changes requested for the contract and contract details with all their previous and current values.\nIts properties may vary depending on the country.\n"
},
"contract_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"effective_at": {
"$ref": "#/components/schemas/DateTimeIso8601"
}
},
"x-validate": null
}
CostCalculator.CountryAvailability
{
"enum": [
"active",
"coming_soon"
],
"type": "string",
"title": "CostCalculator.CountryAvailability",
"example": "active",
"x-struct": null,
"x-validate": null,
"description": "- active: country is ready to onboard employee\n- coming_soon: country is in process of getting ready\n"
}
CostCalculator.CountryLevelRegion
{
"type": "object",
"title": "CostCalculator.CountryLevelRegion",
"example": {
"code": "PRT",
"name": "Portugal",
"currency": {
"code": "EUR",
"name": "European Euro",
"slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
"symbol": "€"
},
"region_slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
"availability": "active",
"child_regions": {
"code": "USA",
"name": "United States",
"slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5"
},
"has_additional_fields": "true",
"original_country_slug": "portugal-ab18d96a-a9fd-42c0-9688-24f963d8bdc1"
},
"required": [
"code",
"currency",
"name",
"original_country_slug",
"region_slug",
"availability",
"child_regions"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"currency": {
"$ref": "#/components/schemas/Currency"
},
"region_slug": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"availability": {
"$ref": "#/components/schemas/CostCalculator.CountryAvailability"
},
"child_regions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MinimalRegion"
},
"x-struct": null,
"x-validate": null
},
"has_additional_fields": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"original_country_slug": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "A supported country on Remote"
}
CostCalculator.ListCountryResponse
{
"type": "object",
"title": "CostCalculator.ListCountryResponse",
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CostCalculator.CountryLevelRegion"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CostCalculatorCost
{
"type": "object",
"title": "CostCalculatorCost",
"example": {
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
},
"required": [
"amount",
"description",
"name",
"zendesk_article_url"
],
"x-struct": null,
"properties": {
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"description": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"zendesk_article_url": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}