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.
GET /v1/benefit-offers/country-summaries
/v1/benefit-offers
List benefit offers by employment.
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 |
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 |
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 |
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.
GET /v1/companies
/v1/companies
Creates a new company. ### Creating a company with only the required request body parameters When you call this endpoint and omit all the optional parameters in the request body, the following resources get created upon a successful response: * A new company with status `pending`. * A company owner for the new company with status `initiated`. See the [update a company endpoint](https://gateway.remote.com/v1/docs/openapi.html) for more details on how to get your company and its owner to `active` status. If you'd like to create a company and its owner with `active` status in a single request, please provide the optional `address_details` parameter as well. ### Accepting the Terms of Service A required step for creating a company in Remote is to accept our Terms of Service (ToS). Company managers need to be aware of our Terms of Service and Privacy Policy, hence **it's the responsibility of our partners to advise and ensure company managers read and accept the ToS**. The terms have to be accepted only once, before creating a company, and the Remote API will collect the acceptance timestamp as its confirmation. To ensure users read the most recent version of Remote's Terms of Service, their **acceptance must be done within the last fifteen minutes prior the company creation action**. To retrieve this information, partners can provide an element with any text and a description explaining that by performing that action they are accepting Remote's Term of Service. For instance, the partner can add a checkbox or a "Create Remote Account" button followed by a description saying "By creating an account, you agree to [Remote's Terms of Service](https://remote.com/terms-of-service). Also see Remote's [Privacy Policy](https://remote.com/privacy-policy)".
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| action | query | optional | string | Complementary action(s) to perform when creating a company: - `get_oauth_access_tokens` returns the user's access and refresh tokens - `send_create_password_email ` sends a reset password token to the company owner's email so they can log in using Remote UI (not needed if integration plans to use SSO only) If `action` contains `send_create_password_email` you can redirect the user to [https://employ.remote.com/api-integration-new-password-send](https://employ.remote.com/api-integration-new-password-send) |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateCompanyParams"
}
}
},
"required": false,
"description": "Create Company params"
}
POST /v1/companies
/v1/companies/{company_id}
Given an ID, shows a company
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | required | string | Company ID |
GET /v1/companies/{company_id}
/v1/companies/{company_id}
Given an ID and a request object with new information, updates a company. ### Getting a company and its owner to `active` status If you created a company using the [create a company endpoint](https://gateway.remote.com/v1/docs/openapi.html) without all the required request body parameters, you can use this endpoint to provide the missing data. Once the company and its owner have all the necessary data, both their statuses will be set to `active` and the company onboarding will be marked as "completed". The following constitutes a company with "all the necessary data": * Complete `address`, with valid `address`, `postal_code`, `country` and `state` parameters (Varies by country. Use the [show form schema endpoint](https://gateway.remote.com/v1/docs/openapi.html) to see which address parameters are required). * Company `tax_number` or `registration_number` is not nil * Company `name` is not nil (already required when creating the company) * Company has a `desired_currency` in their bank account (already required when creating the company) * Company has accepted terms of service (already required when creating the company)
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | required | string | Company ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateCompanyParams"
}
}
},
"required": false,
"description": "Update Company params"
}
PATCH /v1/companies/{company_id}
/v1/companies/{company_id}
Given an ID and a request object with new information, updates a company. ### Getting a company and its owner to `active` status If you created a company using the [create a company endpoint](https://gateway.remote.com/v1/docs/openapi.html) without all the required request body parameters, you can use this endpoint to provide the missing data. Once the company and its owner have all the necessary data, both their statuses will be set to `active` and the company onboarding will be marked as "completed". The following constitutes a company with "all the necessary data": * Complete `address`, with valid `address`, `postal_code`, `country` and `state` parameters (Varies by country. Use the [show form schema endpoint](https://gateway.remote.com/v1/docs/openapi.html) to see which address parameters are required). * Company `tax_number` or `registration_number` is not nil * Company `name` is not nil (already required when creating the company) * Company has a `desired_currency` in their bank account (already required when creating the company) * Company has accepted terms of service (already required when creating the company)
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | required | string | Company ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateCompanyParams"
}
}
},
"required": false,
"description": "Update Company params"
}
PUT /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 |
GET /v1/company-departments
/v1/company-departments
Creates a new department in the specified company. Department names may be non-unique and must be non-empty with no more than 255 characters (Unicode code points).
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateCompanyDepartmentParams"
}
}
},
"required": true,
"description": "Create Company Department request params"
}
POST /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 |
GET /v1/company-managers
/v1/company-managers
Create a Company Manager and sends the invitation email for signing in to the Remote Platform.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompanyManagerParams"
}
}
},
"required": false,
"description": "Company Manager params"
}
POST /v1/company-managers
/v1/company-managers/{user_id}
Deletes a Company Manager user
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| user_id | path | required | string | User ID |
DELETE /v1/company-managers/{user_id}
/v1/company-managers/{user_id}
Shows a single company manager user
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| user_id | path | required | string | User ID |
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 |
GET /v1/contract-amendments
/v1/contract-amendments
Creates a Contract Amendment request. 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 [Contract Amendments](https://gateway.remote.com/v1/docs/openapi.html) 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](https://remote.com/resources/api/how-json-schemas-work) 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](https://remote.com/resources/api/how-json-schemas-work) tool.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateContractAmendmentParams"
}
}
},
"required": false,
"description": "Contract Amendment"
}
POST /v1/contract-amendments
/v1/contract-amendments/automatable
Check if a contract amendment request is automatable. If the contract amendment request is automatable, then after submission, it will instantly amend the employee's contract and send them an updated document. 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 [Contract Amendments](https://gateway.remote.com/v1/docs/openapi.html) 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](https://remote.com/resources/api/how-json-schemas-work) 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](https://remote.com/resources/api/how-json-schemas-work) tool.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateContractAmendmentParams"
}
}
},
"required": false,
"description": "Contract Amendment"
}
POST /v1/contract-amendments/automatable
/v1/contract-amendments/schema
Returns the json schema of the `contract_amendment` form. This endpoint requires a company access token, as forms are dependent on certain properties of companies and their current employments.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ContractAmendmentSchemaParams"
}
}
},
"required": false,
"description": "Contract Amendment Form"
}
POST /v1/contract-amendments/schema
/v1/contract-amendments/{id}
Show a single Contract Amendment request.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Contract amendment request ID |
GET /v1/contract-amendments/{id}
/v1/cost-calculator/countries
Lists active and processing countries
GET /v1/cost-calculator/countries
/v1/cost-calculator/estimation
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CostCalculatorEstimateParams"
}
}
},
"required": false,
"description": "Estimate params"
}
POST /v1/cost-calculator/estimation
/v1/cost-calculator/estimation-pdf
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CostCalculatorEstimateParams"
}
}
},
"required": false,
"description": "Estimate params"
}
POST /v1/cost-calculator/estimation-pdf
/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 |
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.
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 |
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 `contract_amendment` form |
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 |
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 |
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 |
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 |
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](https://gateway.remote.com/v1/docs/openapi.html) 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](https://remote.com/resources/api/how-json-schemas-work) 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](https://remote.com/resources/api/how-json-schemas-work) 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 |
GET /v1/employments
/v1/employments
Creates an employment. We support creating employees and contractors. 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](https://gateway.remote.com/v1/docs/openapi.html) 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](https://remote.com/resources/api/how-json-schemas-work) 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](https://remote.com/resources/api/how-json-schemas-work) tool.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmploymentBasicParams"
}
}
},
"required": false,
"description": "Employment params"
}
POST /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](https://gateway.remote.com/v1/docs/openapi.html) 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](https://remote.com/resources/api/how-json-schemas-work) 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](https://remote.com/resources/api/how-json-schemas-work) tool.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
GET /v1/employments/{employment_id}
/v1/employments/{employment_id}
Updates an employment. **For `created` employments:** You can change all basic params and onboarding tasks or perform a per onboarding task update. You can also update basic_information. **For `active` employments:** You can update the manager (`manager_id` field), emergency_contact_details and address_details. 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](https://gateway.remote.com/v1/docs/openapi.html) 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](https://remote.com/resources/api/how-json-schemas-work) 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](https://remote.com/resources/api/how-json-schemas-work) tool. #### Automatically inviting an employee When you submit the `contract_details` and `pricing_plan_details`, Remote should have all the required data to automatically send an invite to the employee. You can tell if an automatic invite has been sent by looking at the `employment_lifecycle_stage` field value. If its value is `employee_self_enrollment`, it means the employee has received an email to join the Remote platform at their `personal_email`. After an automatic invite is sent to an employee, **you will not be able to update employment data through the Remote API**. After onboarding, only a limited set of employment data will be available for updates, such as `emergency_contact_details`. If you want to provide additional information for an employment, please make sure to do so **before** the employee is invited. We block updates to some employment data because employees need to agree to amendments in certain cases, such as when there are changes to their contract_details. Currently, these amendments can only be done through the Remote UI. Please contact Remote if you need to update contractors via API since it's currently not supported.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmploymentFullParams"
}
}
},
"required": false,
"description": "Employment params"
}
PATCH /v1/employments/{employment_id}
/v1/employments/{employment_id}
Updates an employment. **For `created` employments:** You can change all basic params and onboarding tasks or perform a per onboarding task update. You can also update basic_information. **For `active` employments:** You can update the manager (`manager_id` field), emergency_contact_details and address_details. 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](https://gateway.remote.com/v1/docs/openapi.html) 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](https://remote.com/resources/api/how-json-schemas-work) 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](https://remote.com/resources/api/how-json-schemas-work) tool. #### Automatically inviting an employee When you submit the `contract_details` and `pricing_plan_details`, Remote should have all the required data to automatically send an invite to the employee. You can tell if an automatic invite has been sent by looking at the `employment_lifecycle_stage` field value. If its value is `employee_self_enrollment`, it means the employee has received an email to join the Remote platform at their `personal_email`. After an automatic invite is sent to an employee, **you will not be able to update employment data through the Remote API**. After onboarding, only a limited set of employment data will be available for updates, such as `emergency_contact_details`. If you want to provide additional information for an employment, please make sure to do so **before** the employee is invited. We block updates to some employment data because employees need to agree to amendments in certain cases, such as when there are changes to their contract_details. Currently, these amendments can only be done through the Remote UI. Please contact Remote if you need to update contractors via API since it's currently not supported.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmploymentFullParams"
}
}
},
"required": false,
"description": "Employment params"
}
PUT /v1/employments/{employment_id}
/v1/employments/{employment_id}/invite
Invite an employment to start the self-enrollment. Requirements for the invitation to succeed: * Employment needs to have the following JSON Schema forms filled: `contract_details` and `pricing_plan_details` * `provisional_start_date` must consider the minimum onbaording time of the employment's country If there are validations errors, they are returned with a Conflict HTTP Status (409) and a descriptive message. HTTP Status OK (200) is returned in case of success.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
POST /v1/employments/{employment_id}/invite
/v1/ready
Completes the employee onboarding. When all tasks are completed, the employee is marked as in `review` status
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CompleteOnboarding"
}
}
},
"required": true,
"description": "Employment slug"
}
POST /v1/ready
/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 |
GET /v1/expenses
/v1/expenses
Creates an **approved** expense
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ParamsToCreateExpense"
}
}
},
"required": false,
"description": "Expenses"
}
POST /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 |
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 |
GET /v1/expenses/{id}
/v1/expenses/{id}
Updates an expense
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Expense ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateExpenseParams"
}
}
},
"required": false,
"description": "Expenses"
}
PATCH /v1/expenses/{id}
/v1/expenses/{id}
Updates an expense
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Expense ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateExpenseParams"
}
}
},
"required": false,
"description": "Expenses"
}
PUT /v1/expenses/{id}
/v1/documents
Uploads a file associated with a specified employment. Please contact api-support@remote.com to request access to this endpoint.
{
"content": {
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/FileParams"
}
}
},
"required": true,
"description": "The file to be uploaded"
}
POST /v1/documents
/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 |
GET /v1/files/{id}
/v1/identity/current
Shows information about the entities that can be controlled by the current auth token.
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 |
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 |
GET /v1/incentives
/v1/incentives
Creates an Incentive. Incentives use the currency of the employment specified provided in the `employment_id` field.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOneTimeIncentiveParams"
}
}
},
"required": false,
"description": "Incentive"
}
POST /v1/incentives
/v1/incentives/{id}
Delete an incentive. `one_time` incentives that have the following status **CANNOT** be deleted: * `processing` * `paid`
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Incentive ID |
DELETE /v1/incentives/{id}
/v1/incentives/{id}
Show an Incentive's details
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Incentive ID |
GET /v1/incentives/{id}
/v1/incentives/{id}
Updates an Incentive. Incentives use the currency of the employment specified provided in the `employment_id` field. The API doesn't support updating paid incentives.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Incentive ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateIncentiveParams"
}
}
},
"required": false,
"description": "Incentive"
}
PATCH /v1/incentives/{id}
/v1/incentives/{id}
Updates an Incentive. Incentives use the currency of the employment specified provided in the `employment_id` field. The API doesn't support updating paid incentives.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Incentive ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateIncentiveParams"
}
}
},
"required": false,
"description": "Incentive"
}
PUT /v1/incentives/{id}
/auth/oauth2/token
Endpoint to exchange tokens in the Authorization Code, Client Credentials and Refresh Token flows
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuth2TokenParams"
}
}
},
"required": false,
"description": "OAuth2Token"
}
POST /auth/oauth2/token
/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. Send `include_confidential=true` to include confidential requests in the response. |
| 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 |
GET /v1/offboardings
/v1/offboardings
Creates an Offboarding request.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOffboardingParams"
}
}
},
"required": false,
"description": "Incentive"
}
POST /v1/offboardings
/v1/offboardings/{id}
Shows an Offboarding request.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Offboarding request ID |
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 `issued_at` field, after or on the same day than the given date |
| end_date | query | optional | string | Filters by payslips `issued_at` field, before or or the same day than the given date |
| expected_payout_start_date | query | optional | string | Filters by payslips `expected_payout_date` field, after or on the same day than the given date |
| expected_payout_end_date | query | optional | string | Filters by payslips `expected_payout_date` field, before or or the same day than the given date |
| 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 |
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 |
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 |
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 |
GET /v1/incentives/recurring
/v1/incentives/recurring
Create a Recurring Incentive, that is, a monthly paid incentive. Incentives use the currency of the employment specified provided in the `employment_id` field.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateRecurringIncentiveParams"
}
}
},
"required": false,
"description": "RecurringIncentive"
}
POST /v1/incentives/recurring
/v1/incentives/recurring/{id}
Delete a Recurring Incentive, that is, a monthly paid incentive. Internally, Remote schedules upcoming incentives. As such, when you attempt to delete a recurring incentive, Remote will **ONLY** delete scheduled incentives with the `pending` status. Incentives payments that are already scheduled and cannot be deleted will be included in the response, in case you need to reference them.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Recurring Incentive ID |
DELETE /v1/incentives/recurring/{id}
/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 |
GET /v1/resignations/{employment_request_id}/resignation-letter
/v1/resignations/{employment_request_id}/validate
Validates a resignation employment request
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_request_id | path | required | string | The employment request ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidateResignationRequest"
}
}
},
"required": true,
"description": "ValidateResignation"
}
PUT /v1/resignations/{employment_request_id}/validate
/v1/sandbox/contract-amendments/{contract_amendment_request_id}/approve
Approves a contract amendment request without the intervention of a Remote admin. Approvals done via this endpoint are effective immediately, regardless of the effective date entered on the contract amendment creation. This endpoint is only available in Sandbox, otherwise it will respond with a 404.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_amendment_request_id | path | required | string | Contract amendment request ID |
PUT /v1/sandbox/contract-amendments/{contract_amendment_request_id}/approve
/v1/sandbox/contract-amendments/{contract_amendment_request_id}/cancel
Use this endpoint to cancel an existing contract amendment request. This endpoint is only available in Sandbox, otherwise it will respond with a 404.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contract_amendment_request_id | path | required | string | Contract amendment request ID |
PUT /v1/sandbox/contract-amendments/{contract_amendment_request_id}/cancel
/v1/sandbox/employments
Creates an employment without provisional_start_date validation. This endpoint is only available in Sandbox and allows creating employments which `provisional_start_date` is in the past. This is especially helpful for: * Testing the Timeoff Balance endpoints * Testing the Offboarding endpoints * Testing features around probation periods This endpoint will respond with a 404 outside of the Sandbox environment. For creating an employment's parameters outside of testing purposes, use [this Employment create endpoint](https://gateway.remote.com/v1/docs/openapi.html)
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmploymentBasicParams"
}
}
},
"required": false,
"description": "Employment params"
}
POST /v1/sandbox/employments
/v1/sandbox/employments/{employment_id}
Updates an employment. Use this endpoint to modify employment states for testing in the Sandbox environment. This endpoint will respond with a 404 outside of the Sandbox environment. For updating an employment's parameters outside of testing purposes, use [this Employment update endpoint](https://gateway.remote.com/v1/docs/openapi.html).
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmploymentUpdateParams"
}
}
},
"required": false,
"description": "Employment params"
}
PATCH /v1/sandbox/employments/{employment_id}
/v1/sandbox/employments/{employment_id}
Updates an employment. Use this endpoint to modify employment states for testing in the Sandbox environment. This endpoint will respond with a 404 outside of the Sandbox environment. For updating an employment's parameters outside of testing purposes, use [this Employment update endpoint](https://gateway.remote.com/v1/docs/openapi.html).
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmploymentUpdateParams"
}
}
},
"required": false,
"description": "Employment params"
}
PUT /v1/sandbox/employments/{employment_id}
/v1/sandbox/webhook-callbacks/trigger
Triggers a callback previously registered for webhooks. Use this endpoint to emit a webhook for testing in the Sandbox environment. This endpoint will respond with a 404 outside of the Sandbox environment.
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WebhookTriggerParams"
}
}
},
"required": false,
"description": "Webhook Trigger Params"
}
POST /v1/sandbox/webhook-callbacks/trigger
/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 |
GET /v1/timeoff
/v1/timeoff
Creates a Time Off record
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateApprovedTimeoffParams"
}
}
},
"required": true,
"description": "Timeoff"
}
POST /v1/timeoff
/v1/timeoff/types
Lists all time off types that can be used for the `timeoff_type` parameter
GET /v1/timeoff/types
/v1/timeoff/{id}
Shows a single Time Off record
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Timeoff ID |
GET /v1/timeoff/{id}
/v1/timeoff/{id}
Updates a Time Off record. This endpoint can also be used for cancelling a time off.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Timeoff ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateApprovedTimeoffParams"
}
}
},
"required": true,
"description": "UpdateTimeoff"
}
PATCH /v1/timeoff/{id}
/v1/timeoff/{id}
Updates a Time Off record. This endpoint can also be used for cancelling a time off.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Timeoff ID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateApprovedTimeoffParams"
}
}
},
"required": true,
"description": "UpdateTimeoff"
}
PUT /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 |
GET /v1/timeoff-balances/{employment_id}
/v1/webhook-callbacks
Register a callback to be used for webhooks
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateWebhookCallbackParams"
}
}
},
"required": false,
"description": "WebhookCallback"
}
POST /v1/webhook-callbacks
/v1/webhook-callbacks/{id}
Delete a callback previously registered for webhooks
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Webhook Callback ID |
DELETE /v1/webhook-callbacks/{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
}
CostCalculatorCosts
{
"type": "object",
"title": "CostCalculatorCosts",
"example": {
"currency": {
"code": "EUR",
"name": "European Euro",
"slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
"symbol": "€"
},
"monthly_tce": 1120000,
"annual_total": 13441200,
"monthly_total": 1120100,
"annual_gross_salary": 12000000,
"monthly_gross_salary": 1000000,
"annual_benefits_total": 1441200,
"monthly_benefits_total": 120100,
"annual_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"annual_contributions_total": 1441200,
"monthly_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"monthly_contributions_total": 120100,
"annual_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_total": 0,
"monthly_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
]
},
"required": [
"annual_gross_salary",
"annual_contributions_total",
"annual_total",
"currency",
"extra_statutory_payments_total",
"monthly_contributions_total",
"monthly_gross_salary",
"monthly_tce",
"monthly_total"
],
"x-struct": null,
"properties": {
"currency": {
"$ref": "#/components/schemas/Currency"
},
"monthly_tce": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "Monthly gross salary + monthly contributions (doesn't include fee)"
},
"annual_total": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The annual gross salary + annual contributions + annual fee (monthly fee * 12) + extra statutory payments if applicable"
},
"monthly_total": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "Monthly gross salary + monthly contributions + monthly fee"
},
"annual_gross_salary": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The annual gross salary that the employee is going to earn"
},
"monthly_gross_salary": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The gross monthly salary for the Employee"
},
"annual_benefits_total": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The annual benefits total that a company must pay for this employment"
},
"monthly_benefits_total": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The benefits total that the company pays monthly"
},
"annual_benefits_breakdown": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CostCalculatorCost"
},
"x-struct": null,
"x-validate": null,
"description": "The list of all annual benefit costs"
},
"annual_contributions_total": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The annual contributions that a company must pay for this employment"
},
"monthly_benefits_breakdown": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CostCalculatorCost"
},
"x-struct": null,
"x-validate": null,
"description": "The list of all monthly benefit costs"
},
"monthly_contributions_total": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "The contributions that the company pays monthly"
},
"annual_contributions_breakdown": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CostCalculatorCost"
},
"x-struct": null,
"x-validate": null,
"description": "The list of all annual employer contribution costs"
},
"extra_statutory_payments_total": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "13th month salary, this happens for countries such as Philippines"
},
"monthly_contributions_breakdown": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CostCalculatorCost"
},
"x-struct": null,
"x-validate": null,
"description": "The list of all monthly employer contribution costs"
},
"extra_statutory_payments_breakdown": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CostCalculatorCost"
},
"x-struct": null,
"x-validate": null,
"description": "The list of all annual extra statutory payment costs"
}
},
"x-validate": null
}
CostCalculatorEmployment
{
"type": "object",
"title": "CostCalculatorEmployment",
"example": {
"region": {
"code": "USA",
"name": "United States",
"slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5"
},
"country": {
"code": "PRT",
"name": "Portugal",
"slug": "portugal-ab18d96a-a9fd-42c0-9688-24f963d8bdc1",
"alpha_2_code": "PT"
},
"employer_currency_costs": {
"currency": {
"code": "EUR",
"name": "European Euro",
"slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
"symbol": "€"
},
"monthly_tce": 1120000,
"annual_total": 13441200,
"monthly_total": 1120100,
"annual_gross_salary": 12000000,
"monthly_gross_salary": 1000000,
"annual_benefits_total": 1441200,
"monthly_benefits_total": 120100,
"annual_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"annual_contributions_total": 1441200,
"monthly_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"monthly_contributions_total": 120100,
"annual_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_total": 0,
"monthly_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
]
},
"regional_currency_costs": {
"currency": {
"code": "EUR",
"name": "European Euro",
"slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
"symbol": "€"
},
"monthly_tce": 1120000,
"annual_total": 13441200,
"monthly_total": 1120100,
"annual_gross_salary": 12000000,
"monthly_gross_salary": 1000000,
"annual_benefits_total": 1441200,
"monthly_benefits_total": 120100,
"annual_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"annual_contributions_total": 1441200,
"monthly_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"monthly_contributions_total": 120100,
"annual_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_total": 0,
"monthly_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
]
},
"has_extra_statutory_payment": false
},
"required": [
"country",
"employer_currency_costs",
"has_extra_statutory_payment",
"region",
"regional_currency_costs"
],
"x-struct": null,
"properties": {
"region": {
"$ref": "#/components/schemas/MinimalRegion"
},
"country": {
"$ref": "#/components/schemas/MinimalCountry"
},
"employer_currency_costs": {
"$ref": "#/components/schemas/CostCalculatorCosts"
},
"regional_currency_costs": {
"$ref": "#/components/schemas/CostCalculatorCosts"
},
"has_extra_statutory_payment": {
"type": "boolean",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CostCalculatorEmploymentParam
{
"type": "object",
"title": "CostCalculatorEmploymentParam",
"required": [
"region_slug"
],
"x-struct": null,
"properties": {
"age": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"region_slug": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"employment_term": {
"$ref": "#/components/schemas/EmploymentTermType"
},
"annual_gross_salary": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"regional_to_employer_exchange_rate": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"annual_gross_salary_in_employer_currency": {
"type": "integer",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CostCalculatorEstimatePDFResponse
{
"type": "object",
"title": "CostCalculatorEstimatePDFResponse",
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"content"
],
"x-struct": null,
"properties": {
"content": {
"$ref": "#/components/schemas/GenericFile"
}
},
"x-validate": null
}
},
"x-validate": null
}
CostCalculatorEstimateParams
{
"type": "object",
"title": "CostCalculatorEstimateParams",
"required": [
"employments",
"employer_currency_slug"
],
"x-struct": null,
"properties": {
"employments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CostCalculatorEmploymentParam"
},
"x-struct": null,
"x-validate": null
},
"include_benefits": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"employer_currency_slug": {
"type": "string",
"title": "Slug",
"example": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
"x-struct": null,
"x-validate": null,
"description": "Currency Slug"
},
"include_cost_breakdowns": {
"type": "boolean",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CostCalculatorEstimateResponse
{
"type": "object",
"title": "CostCalculatorEstimateResponse",
"example": {
"data": {
"employments": [
{
"region": {
"code": "USA",
"name": "United States",
"slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5"
},
"country": {
"code": "PRT",
"name": "Portugal",
"slug": "portugal-ab18d96a-a9fd-42c0-9688-24f963d8bdc1",
"alpha_2_code": "PT"
},
"employer_currency_costs": {
"currency": {
"code": "EUR",
"name": "European Euro",
"slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
"symbol": "€"
},
"monthly_tce": 1120000,
"annual_total": 13441200,
"monthly_total": 1120100,
"annual_gross_salary": 12000000,
"monthly_gross_salary": 1000000,
"annual_benefits_total": 1441200,
"monthly_benefits_total": 120100,
"annual_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"annual_contributions_total": 1441200,
"monthly_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"monthly_contributions_total": 120100,
"annual_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_total": 0,
"monthly_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
]
},
"regional_currency_costs": {
"currency": {
"code": "EUR",
"name": "European Euro",
"slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
"symbol": "€"
},
"monthly_tce": 1120000,
"annual_total": 13441200,
"monthly_total": 1120100,
"annual_gross_salary": 12000000,
"monthly_gross_salary": 1000000,
"annual_benefits_total": 1441200,
"monthly_benefits_total": 120100,
"annual_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"annual_contributions_total": 1441200,
"monthly_benefits_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"monthly_contributions_total": 120100,
"annual_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_total": 0,
"monthly_contributions_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
],
"extra_statutory_payments_breakdown": [
{
"name": "Insurance",
"amount": 1120000,
"description": "Description of how the amount is calculated.",
"zendesk_article_url": "https://examplezendesk.com/article/1234"
}
]
},
"has_extra_statutory_payment": false
}
]
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"employments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CostCalculatorEmployment"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null
}
Costs
{
"type": "object",
"title": "Costs",
"example": {
"employee_cost": 234,
"employer_cost": 44
},
"nullable": true,
"required": [
"employee_cost",
"employer_cost"
],
"x-struct": null,
"properties": {
"employee_cost": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"employer_cost": {
"type": "integer",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CountriesResponse
{
"type": "object",
"title": "CountriesResponse",
"example": {
"data": [
{
"code": "PRT",
"name": "Portugal",
"alpha_2_code": "PT",
"supported_json_schemas": [
"additional_documents",
"address_details",
"administrative_details",
"employment-basic-information",
"bank_account_details",
"contract_details",
"emergency_contact"
]
}
]
},
"x-struct": null,
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Country"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "List of countries supported by Remote API"
}
Country
{
"type": "object",
"title": "Country",
"example": {
"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"
]
},
"required": [
"alpha_2_code",
"code",
"name"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"alpha_2_code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"country_subdivisions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CountrySubdivision"
},
"nullable": true,
"x-struct": null,
"x-validate": null
},
"supported_json_schemas": {
"type": "array",
"items": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "A supported country on Remote"
}
CountryFormResponse
{
"type": "object",
"title": "CountryFormResponse",
"example": {
"data": {
"type": "object",
"required": [
"address",
"city",
"postal_code"
],
"properties": {
"city": {
"type": "string",
"title": "City",
"maxLength": 255,
"description": "Enter your city"
},
"address": {
"type": "string",
"title": "Address",
"maxLength": 255,
"description": "Your street name and house number. PO Box addresses are not supported."
},
"postal_code": {
"type": "string",
"title": "Postal code",
"maxLength": 255,
"description": "Enter zip or postal code"
},
"address_line_2": {
"type": "string",
"title": "Address line 2",
"maxLength": 255,
"description": "(Optional) For example, apartment, block, or building number."
}
}
}
},
"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"
}
CountrySubdivision
{
"type": "object",
"title": "CountrySubdivision",
"example": {
"code": "PT-11",
"name": "Lisboa",
"subdivision_type": "District"
},
"required": [
"name"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"subdivision_type": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "A subdivision of a supported country on Remote"
}
CountrySummariesResponse
{
"type": "object",
"title": "CountrySummariesResponse",
"example": {
"data": {
"company_id": "79297cfd-cf60-4cf4-a70f-ac2061d72a74",
"country_summaries": [
[
{
"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"
]
},
"employee_stats": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
},
"offered_benefit_groups": [
{
"benefit_group": {
"id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
"name": "Health",
"policy_end_date": "2024-12-31",
"policy_start_date": "2024-01-01"
},
"employee_stats": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
},
"offered_benefit_tiers": [
{
"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"
}
]
},
"employee_stats": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
}
}
]
}
]
}
]
]
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"company_id",
"country_summaries"
],
"x-struct": null,
"properties": {
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"country_summaries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CountrySummary"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null
}
CountrySummary
{
"type": "object",
"title": "CountrySummary",
"example": {
"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"
]
},
"employee_stats": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
},
"offered_benefit_groups": [
{
"benefit_group": {
"id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
"name": "Health",
"policy_end_date": "2024-12-31",
"policy_start_date": "2024-01-01"
},
"employee_stats": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
},
"offered_benefit_tiers": [
{
"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"
}
]
},
"employee_stats": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
}
}
]
}
]
},
"required": [
"country",
"employee_stats",
"offered_benefit_groups"
],
"x-struct": null,
"properties": {
"country": {
"$ref": "#/components/schemas/Country"
},
"employee_stats": {
"$ref": "#/components/schemas/EmployeeStats"
},
"offered_benefit_groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OfferedBenefitGroup"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
CreateApprovedTimeoffParams
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/CreateTimeoffParams"
},
{
"type": "object",
"x-struct": null,
"properties": {
"status": {
"enum": [
"approved"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"approved_at": {
"$ref": "#/components/schemas/DateTimeIso8601"
},
"approver_id": {
"$ref": "#/components/schemas/NullableApproverId"
}
},
"x-validate": null
}
],
"title": "CreateApprovedTimeoffParams",
"required": [
"status",
"approver_id",
"approved_at"
],
"x-struct": null,
"x-validate": null,
"description": "Approved timeoff creation params"
}
CreateCompanyDepartmentParams
{
"type": "object",
"title": "CreateCompanyDepartmentParams",
"example": {
"name": "Marketing",
"company_id": "669f9e18-889f-4c2c-95b8-67795a3113cc"
},
"required": [
"company_id",
"name"
],
"x-struct": null,
"properties": {
"name": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The name of the company department. May be non-unique and limited to 255 characters, maximum."
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The Company ID. Required in all cases, whether the API credentials have access to multiple companies or just one."
}
},
"x-validate": null
}
CreateCompanyParams
{
"type": "object",
"title": "CreateCompanyParams",
"example": {
"name": "Tech Vision",
"tax_number": "123456789",
"external_id": "00001111",
"country_code": "USA",
"phone_number": "+11123123456",
"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": "ceo@techvision.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": "2022-05-05 15:03:45Z"
},
"required": [
"company_owner_email",
"company_owner_name",
"country_code",
"desired_currency",
"name",
"terms_of_service_accepted_at"
],
"x-struct": null,
"properties": {
"name": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The company name"
},
"tax_number": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The tax identifier of the company. This field or `registration_number` (but not both) should be submitted."
},
"external_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Id of the company as represented in the external partner system."
},
"country_code": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "3-letter country code of the country the company address is located in.\n\nFor a list of countries supported through the Remote API, make a call to the [list countries endpoint](https://gateway.remote.com/v1/docs/openapi.html). This endpoint will also include the 3-letter country codes you can use for this field.\n"
},
"email_domain": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The domain of the company. Use this field to specify the company domain name when it's different from the domain in the company owner's email."
},
"phone_number": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "A phone number the company can be contacted with."
},
"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": {
"enum": [
"AUD",
"CAD",
"CHF",
"DKK",
"EUR",
"GBP",
"JPY",
"NOK",
"NZD",
"SEK",
"SGD",
"USD"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Desired currency for invoicing and displaying converted salaries in Remote UI regardless of the employee's country."
},
"company_owner_name": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The company owner name.\n\nThis value cannot be changed from the Remote API once set.\n"
},
"company_owner_email": {
"type": "string",
"format": "email",
"x-struct": null,
"x-validate": null,
"description": "The company owner email.\n\nThis value cannot be changed once set.\n"
},
"registration_number": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The company registration number. This field or `tax_number` (but not both) should be submitted."
},
"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,
"description": "Date and time the Terms of Service were accepted. To ensure users read the most recent version of Remote's Terms of Service, their action cannot have been done more than fifteen minutes ago. The UTC offset must be included in the ISO 8601 format: `YYYY-MM-DD HOURS:MINUTES:SECONDSZ`"
}
},
"x-validate": null
}
CreateContractAmendmentParams
{
"type": "object",
"title": "CreateContractAmendmentParams",
"example": {
"employment_id": "e31adae1-company-id-af5fba7dd803",
"contract_amendment": {},
"amendment_contract_id": "c15993d8-aa8a-4fbb-b395-8b7a54f57db1"
},
"required": [
"employment_id",
"amendment_contract_id",
"contract_amendment"
],
"x-struct": null,
"properties": {
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The employment ID that is related to the contract amendment request."
},
"contract_amendment": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Contract amendment informations. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code, `contract_amendment` and the employment ID as request body."
},
"amendment_contract_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The contract ID of the contract that needs to be amended."
}
},
"x-validate": null
}
CreateOffboardingParams
{
"type": "object",
"title": "CreateOffboardingParams",
"example": {
"type": "termination",
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
"termination_details": {
"confidential": false,
"employee_awareness": {
"date": "2023-12-12",
"note": "optional text to add details"
},
"reason_description": "termination reason",
"termination_reason": "workforce_reduction",
"additional_comments": "additional comments regarding the termination reason",
"risk_assessment_reasons": [
"pregnant_or_breastfeeding",
"family_leave"
],
"termination_reason_files": [
{
"name": "termination_letter.pdf",
"content": "UGVyaW9kIEVuZCBEYXRlLFBheSBEYXRlLEVtcG...5jZSBPZiBSZXNpZGVuYdXJyZW50LEFsbG93"
}
],
"proposed_termination_date": "2023-12-20",
"will_challenge_termination": true,
"will_challenge_termination_description": "additional details for the offboarding risk assessment"
}
},
"required": [
"type",
"employment_id",
"termination_details"
],
"x-struct": null,
"properties": {
"type": {
"enum": [
"termination"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The type of the offboarding request. For now, only `termination` is allowed."
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"termination_details": {
"$ref": "#/components/schemas/TerminationDetailsParams"
}
},
"x-validate": null
}
CreateOneTimeIncentiveParams
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/CommonIncentiveParams"
},
{
"type": "object",
"x-struct": null,
"properties": {
"type": {
"enum": [
"acting_up_allowance",
"allowance",
"car_allowance",
"health_and_wellness_allowance",
"internet_allowance",
"meal_allowance",
"on_call_allowance",
"parenthood_allowance",
"phone_allowance",
"relocation_allowance",
"travel_allowance",
"work_from_home_allowance",
"bonus",
"holiday_bonus",
"referral_bonus",
"retention_bonus",
"commission",
"other",
"overtime",
"stipend",
"signing_bonus"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
],
"title": "CreateOneTimeIncentiveParams",
"example": {
"note": "Bonus for moving start date to an earlier date",
"type": "signing_bonus",
"amount": 50000,
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
"effective_date": "2021-12-20",
"amount_tax_type": "net"
},
"required": [
"type",
"amount",
"amount_tax_type",
"employment_id",
"effective_date"
],
"x-struct": null,
"properties": {
"note": {
"type": "string",
"example": "Bonus for moving start date to an earlier date"
},
"type": {
"type": "string",
"example": "signing_bonus"
},
"amount": {
"type": "number",
"example": 50000
},
"employment_id": {
"type": "string",
"example": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d"
},
"effective_date": {
"type": "string",
"example": "2021-12-20"
},
"amount_tax_type": {
"type": "string",
"example": "net"
}
},
"x-validate": null
}
CreateParams
{
"type": "object",
"title": "CreateParams",
"x-struct": null,
"properties": {
"type": {
"enum": [
"employee",
"contractor"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "If not provided, it will default to `employee`."
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "This optional field is deprecated."
},
"country_code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"basic_information": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Employment basic information. When using this field, the same other root level fields (name, personal_email, job_title,\nprovisional_start_date, and seniority_date) will be ignored.\nIts properties may vary depending on the country, you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\npassing the country code and `employment_basic_information` as path parameters.\n"
}
},
"x-validate": null
}
CreateParams-Deprecated
{
"type": "object",
"title": "CreateParams-Deprecated",
"x-struct": null,
"properties": {
"type": {
"enum": [
"employee",
"contractor"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "If not provided, it will default to `employee`."
},
"full_name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"job_title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "This optional field is deprecated."
},
"country_code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"personal_email": {
"type": "string",
"format": "email",
"x-struct": null,
"x-validate": null
},
"seniority_date": {
"$ref": "#/components/schemas/EmploymentSeniorityDate"
},
"provisional_start_date": {
"$ref": "#/components/schemas/ProvisionalStartDate"
}
},
"x-validate": null,
"description": "Providing the params in the root level of the request is now deprecated and will be removed in the future.\nPlease, use the \"CreateParams\" instead.\n"
}
CreateRecurringIncentiveParams
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/CommonIncentiveParams"
},
{
"type": "object",
"x-struct": null,
"properties": {
"type": {
"enum": [
"acting_up_allowance",
"allowance",
"car_allowance",
"health_and_wellness_allowance",
"internet_allowance",
"meal_allowance",
"on_call_allowance",
"parenthood_allowance",
"phone_allowance",
"relocation_allowance",
"travel_allowance",
"work_from_home_allowance",
"bonus",
"holiday_bonus",
"referral_bonus",
"retention_bonus",
"commission",
"other",
"overtime",
"stipend"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"duration_in_months": {
"type": "string",
"format": "integer",
"x-struct": null,
"x-validate": null,
"description": "How many times the payment will repeat. At the moment we only fully support monthly frequency.\n\nThis field is only necessary if the recurring incentive has an end date.\n"
}
},
"x-validate": null
}
],
"title": "CreateRecurringIncentiveParams",
"example": {
"note": "Bonus for moving start date to an earlier date",
"type": "meal_allowance",
"amount": 50000,
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
"effective_date": "2021-12-20",
"amount_tax_type": "net",
"duration_in_months": 3
},
"required": [
"type",
"amount",
"amount_tax_type",
"employment_id",
"effective_date"
],
"x-struct": null,
"properties": {
"note": {
"type": "string",
"example": "Bonus for moving start date to an earlier date"
},
"type": {
"type": "string",
"example": "meal_allowance"
},
"amount": {
"type": "number",
"example": 50000
},
"employment_id": {
"type": "string",
"example": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d"
},
"effective_date": {
"type": "string",
"example": "2021-12-20"
},
"amount_tax_type": {
"type": "string",
"example": "net"
},
"duration_in_months": {
"type": "number",
"example": 3
}
},
"x-validate": null
}
CreateTimeoffParams
{
"type": "object",
"title": "CreateTimeoffParams",
"required": [
"employment_id",
"start_date",
"end_date",
"timeoff_type",
"timezone",
"timeoff_days"
],
"x-struct": null,
"properties": {
"notes": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"document": {
"$ref": "#/components/schemas/TimeoffDocumentParams"
},
"end_date": {
"type": "string",
"format": "datetime",
"nullable": false,
"x-struct": null,
"x-validate": null
},
"timezone": {
"$ref": "#/components/schemas/Timezone"
},
"start_date": {
"type": "string",
"format": "datetime",
"nullable": false,
"x-struct": null,
"x-validate": null
},
"timeoff_days": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TimeoffDaysParams"
},
"x-struct": null,
"x-validate": null
},
"timeoff_type": {
"$ref": "#/components/schemas/TimeoffType"
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Timeoff creation params"
}
CreateWebhookCallbackParams
{
"type": "object",
"title": "CreateWebhookCallbackParams",
"example": {
"url": "https://example.com/callback",
"subscribed_events": [
"employment.onboarding_task.completed"
]
},
"required": [
"url"
],
"x-struct": null,
"properties": {
"url": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"subscribed_events": {
"type": "array",
"items": {
"enum": [
"billing_document.issued",
"contract_amendment.canceled",
"contract_amendment.deleted",
"contract_amendment.done",
"contract_amendment.review_started",
"contract_amendment.submitted",
"custom_field.value_updated",
"employment_contract.active_contract_updated",
"employment.account.updated",
"employment.details.updated",
"employment.onboarding_task.completed",
"employment.onboarding.completed",
"employment.personal_information.updated",
"employment.user_status.activated",
"employment.user_status.deactivated",
"expense.approved",
"expense.declined",
"expense.deleted",
"expense.reimbursed",
"expense.submitted",
"expense.updated",
"identity_verification.verification_required",
"incentive.created",
"incentive.deleted",
"incentive.paid",
"incentive.processing_started",
"incentive.updated",
"offboarding.deleted",
"offboarding.done",
"offboarding.review_started",
"offboarding.submitted",
"offboarding.submitted_to_payroll",
"offboarding.completed",
"payslip.released",
"timeoff.approved",
"timeoff.canceled",
"timeoff.date_changed",
"timeoff.declined",
"timeoff.requested",
"timeoff.taken",
"timeoff.updated"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The setting to be enabled."
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Webhook callback creation params"
}
Currency
{
"type": "object",
"title": "Currency",
"example": {
"code": "EUR",
"name": "European Euro",
"slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
"symbol": "€"
},
"required": [
"code",
"slug",
"symbol"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"slug": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"symbol": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "The type of money in general use in a particular country"
}
CurrencyDefinition
{
"type": "object",
"title": "CurrencyDefinition",
"example": {
"code": "CZK",
"name": "Czech Koruna",
"symbol": "Kč"
},
"required": [
"code",
"name",
"symbol"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"symbol": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Currency object without a UUID identifier"
}
Date
{
"type": "string",
"title": "Date",
"format": "date",
"example": "2021-07-01",
"x-struct": null,
"x-validate": null,
"description": "UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format"
}
DateTimeIso8601
{
"type": "string",
"title": "DateTimeIso8601",
"format": "date-time",
"example": "2021-07-15T18:18:17Z",
"x-struct": null,
"x-validate": null,
"description": "UTC date time in [ISO 8601][] format.\n\n[ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601\n"
}
DeclineExpenseParams
{
"type": "object",
"title": "DeclineExpenseParams",
"example": {
"reason": "Expense not refundable",
"status": "declined"
},
"required": [
"status",
"reason"
],
"x-struct": null,
"properties": {
"reason": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Reason for declination."
},
"status": {
"enum": [
"declined"
],
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Decline an expense"
}
DeleteRecurringIncentiveResponse
{
"type": "object",
"title": "DeleteRecurringIncentiveResponse",
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"already_scheduled_incentives"
],
"x-struct": null,
"properties": {
"status": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"already_scheduled_incentives": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Incentive"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "`\"status\": \"ok\"` indicates that any recurring incentives with `pending` status were\nsuccessfully deleted.\n\n`already_scheduled_incentives` returns a list of incentives that were already scheduled\nfor payout and as such, cannot be deleted. You will notice that these incentives do not\nhave a `pending` status.\n"
}
EmployeeStats
{
"type": "object",
"title": "EmployeeStats",
"example": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
},
"required": [
"number_of_employees_offered",
"number_of_employees_enrolled"
],
"x-struct": null,
"properties": {
"number_of_employees_offered": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"number_of_employees_enrolled": {
"type": "integer",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
Employment
{
"type": "object",
"title": "Employment",
"example": {
"id": "67897cfd-cf60-4cf4-a70f-ac2061d72984",
"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"
},
"required": [
"id",
"given_name",
"name",
"surname",
"country"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"country": {
"$ref": "#/components/schemas/Country"
},
"surname": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"given_name": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
EmploymentBasicParams
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/CreateParams"
},
{
"$ref": "#/components/schemas/CreateParams-Deprecated"
}
],
"title": "EmploymentBasicParams",
"example": {
"type": "employee",
"full_name": "Jane Smith",
"job_title": "Engineer",
"country_code": "AUS",
"personal_email": "jane@smith.com",
"basic_information": {
"name": "Jane Smith",
"email": "jane@smith.com",
"job_title": "Engineer",
"has_seniority_date": "no",
"provisional_start_date": "2022-07-10"
},
"provisional_start_date": "2022-07-10"
},
"required": [
"full_name",
"personal_email",
"job_title",
"country_code"
],
"x-struct": null,
"properties": {
"type": {
"type": "string",
"example": "employee"
},
"full_name": {
"type": "string",
"example": "Jane Smith"
},
"job_title": {
"type": "string",
"example": "Engineer"
},
"country_code": {
"type": "string",
"example": "AUS"
},
"personal_email": {
"type": "string",
"example": "jane@smith.com"
},
"basic_information": {
"type": "object",
"properties": {
"name": {
"type": "string",
"example": "Jane Smith"
},
"email": {
"type": "string",
"example": "jane@smith.com"
},
"job_title": {
"type": "string",
"example": "Engineer"
},
"has_seniority_date": {
"type": "string",
"example": "no"
},
"provisional_start_date": {
"type": "string",
"example": "2022-07-10"
}
}
},
"provisional_start_date": {
"type": "string",
"example": "2022-07-10"
}
},
"x-validate": null,
"description": "Description of the required params to create an employment."
}
EmploymentBasicResponse
{
"type": "object",
"title": "EmploymentBasicResponse",
"example": {
"id": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
"type": "employee",
"full_name": "Jane Smith",
"job_title": "Engineer",
"company_id": "20a72f86-company-id-20a72f86",
"created_at": "2023-02-01T15:42:03",
"updated_at": "2023-02-01T15:42:03",
"country_code": "AUS",
"personal_email": "jane@smith.com",
"basic_information": {
"name": "Jane Smith",
"email": "jane@smith.com",
"job_title": "Engineer",
"has_seniority_date": "no",
"provisional_start_date": "2022-07-10"
},
"provisional_start_date": "2022-07-10",
"employment_lifecycle_stage": "employment_creation"
},
"x-struct": null,
"properties": {
"id": {
"$ref": "#/components/schemas/Slug"
},
"type": {
"enum": [
"employee",
"contractor"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"full_name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"job_title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"created_at": {
"type": "string",
"format": "date-time",
"x-struct": null,
"x-validate": null
},
"updated_at": {
"type": "string",
"format": "date-time",
"x-struct": null,
"x-validate": null
},
"country_code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"personal_email": {
"type": "string",
"format": "email",
"x-struct": null,
"x-validate": null
},
"basic_information": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Employment basic information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `basic_information` as path parameters."
},
"provisional_start_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null,
"description": "Required for employees, optional for contractors"
},
"employment_lifecycle_stage": {
"$ref": "#/components/schemas/EmploymentLifecycleStage"
}
},
"x-validate": null,
"description": "Complete information of an employment"
}
EmploymentContract
{
"type": "object",
"title": "EmploymentContract",
"example": {
"status": "active",
"country": {
"code": "CAN",
"name": "Canada"
},
"job_title": "Engineer",
"contract_id": "20a72f86-contract-id-9e4942a902ff",
"activated_at": "2021-07-15T18:18:17Z",
"compensation": {
"amount": 33000,
"currency_code": "CAD"
},
"effective_at": "2021-07-15T18:18:17Z",
"contract_details": {},
"amendment_contract_id": "e31adae1-contract-id-af5fba7dd803"
},
"required": [
"contract_id",
"amendment_contract_id",
"country",
"contract_details",
"compensation",
"job_title",
"status",
"activated_at",
"effective_at"
],
"x-struct": null,
"properties": {
"status": {
"$ref": "#/components/schemas/EmploymentContractStatus"
},
"country": {
"$ref": "#/components/schemas/Country"
},
"job_title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"contract_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"activated_at": {
"$ref": "#/components/schemas/DateTimeIso8601"
},
"compensation": {
"$ref": "#/components/schemas/Compensation"
},
"effective_at": {
"$ref": "#/components/schemas/DateTimeIso8601"
},
"contract_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Contract information. Its properties may vary depending on the country."
},
"amendment_contract_id": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "The id of the employment contract that was amended by this employment contract, if any."
}
},
"x-validate": null
}
EmploymentContractPendingChangesResponse
{
"type": "object",
"title": "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"
}
]
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"pending_changes"
],
"x-struct": null,
"properties": {
"pending_changes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ContractPendingChanges"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null
}
EmploymentContractStatus
{
"enum": [
"active",
"inactive",
"pending"
],
"type": "string",
"title": "EmploymentContractStatus",
"example": "active",
"x-struct": null,
"x-validate": null,
"description": "The status of the employment contract."
}
EmploymentCreationResponse
{
"type": "object",
"title": "EmploymentCreationResponse",
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"employment": {
"$ref": "#/components/schemas/EmploymentBasicResponse"
}
},
"x-validate": null
}
},
"x-validate": null
}
EmploymentCustomField
{
"type": "object",
"title": "EmploymentCustomField",
"example": {
"id": "01c0e4d2-f41b-11ed-9d3f-cb3ecccebb58X",
"name": "Internal ID",
"type": "string"
},
"required": [
"custom_field_id",
"name",
"type",
"required",
"visibility_scope",
"data_entry_access",
"metadata"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"type": {
"enum": [
"string",
"text",
"integer",
"date",
"boolean",
"percentage",
"decimal",
"link",
"currency",
"single_select"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"metadata": {
"type": "object",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"required": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"visibility_scope": {
"enum": [
"company_admin_only",
"everyone"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"data_entry_access": {
"enum": [
"company_admin_only",
"employee_only",
"everyone"
],
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "EmploymentCustomField"
}
EmploymentCustomFieldValue
{
"type": "object",
"title": "EmploymentCustomFieldValue",
"example": {
"value": "UXH34HG",
"custom_field_id": "01c0e4d2-f41b-11ed-9d3f-cb3ecccebb58"
},
"required": [
"custom_field_id",
"value"
],
"x-struct": null,
"properties": {
"value": {
"anyOf": [
{
"type": "string",
"x-struct": null,
"x-validate": null
},
{
"type": "integer",
"x-struct": null,
"x-validate": null
},
{
"type": "boolean",
"x-struct": null,
"x-validate": null
},
{
"type": "number",
"format": "decimal",
"x-struct": null,
"x-validate": null,
"description": "Decimal value represented as a String"
},
{
"$ref": "#/components/schemas/EmploymentCustomFieldValueJsonValue"
}
],
"nullable": true,
"x-struct": null,
"x-validate": null
},
"custom_field_id": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "EmploymentCustomFieldValue"
}
EmploymentCustomFieldValueJsonValue
{
"type": "object",
"title": "EmploymentCustomFieldValueJsonValue",
"example": {
"selected_value": "01c0e4d2-f41b-11ed-9d3f-cb3ecccebb55"
},
"required": [
"selected_value"
],
"x-struct": null,
"properties": {
"selected_value": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "EmploymentCustomFieldValueJsonValue"
}
EmploymentCustomFieldValueResponse
{
"type": "object",
"title": "EmploymentCustomFieldValueResponse",
"example": {
"data": {
"custom_field_value": {
"value": "UXH34HG",
"custom_field_id": "01c0e4d2-f41b-11ed-9d3f-cb3ecccebb58"
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"custom_field_value"
],
"x-struct": null,
"properties": {
"custom_field_value": {
"$ref": "#/components/schemas/EmploymentCustomFieldValue"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "EmploymentCustomFieldValueResponse"
}
EmploymentFullParams
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/FullParams-Deprecated"
},
{
"$ref": "#/components/schemas/FullParams"
}
],
"title": "EmploymentFullParams",
"example": {
"manager": "Taylor Johnson",
"full_name": "Jane Smith",
"job_title": "Backend Engineer",
"company_id": "e31adae1-company-id-af5fba7dd803",
"country_code": "AUS",
"department_id": "3bb56f01-3243-412b-bfaa-a5cfaaf2e431",
"personal_email": "jane@smith.com",
"address_details": {},
"contract_details": {},
"personal_details": {},
"basic_information": {
"name": "Jane Smith",
"email": "jane@smith.com",
"job_title": "Backend Engineer",
"has_seniority_date": "no",
"provisional_start_date": "2021-07-03"
},
"bank_account_details": {},
"pricing_plan_details": {
"frequency": "annually"
},
"administrative_details": {},
"provisional_start_date": "2021-07-03",
"billing_address_details": {},
"emergency_contact_details": {}
},
"required": [
"full_name",
"personal_email",
"job_title",
"country_code"
],
"x-struct": null,
"properties": {
"manager": {
"type": "string",
"example": "Taylor Johnson"
},
"full_name": {
"type": "string",
"example": "Jane Smith"
},
"job_title": {
"type": "string",
"example": "Backend Engineer"
},
"company_id": {
"type": "string",
"example": "e31adae1-company-id-af5fba7dd803"
},
"country_code": {
"type": "string",
"example": "AUS"
},
"department_id": {
"type": "string",
"example": "3bb56f01-3243-412b-bfaa-a5cfaaf2e431"
},
"personal_email": {
"type": "string",
"example": "jane@smith.com"
},
"address_details": {
"type": "object",
"properties": {}
},
"contract_details": {
"type": "object",
"properties": {}
},
"personal_details": {
"type": "object",
"properties": {}
},
"basic_information": {
"type": "object",
"properties": {
"name": {
"type": "string",
"example": "Jane Smith"
},
"email": {
"type": "string",
"example": "jane@smith.com"
},
"job_title": {
"type": "string",
"example": "Backend Engineer"
},
"has_seniority_date": {
"type": "string",
"example": "no"
},
"provisional_start_date": {
"type": "string",
"example": "2021-07-03"
}
}
},
"bank_account_details": {
"type": "object",
"properties": {}
},
"pricing_plan_details": {
"type": "object",
"properties": {
"frequency": {
"type": "string",
"example": "annually"
}
}
},
"administrative_details": {
"type": "object",
"properties": {}
},
"provisional_start_date": {
"type": "string",
"example": "2021-07-03"
},
"billing_address_details": {
"type": "object",
"properties": {}
},
"emergency_contact_details": {
"type": "object",
"properties": {}
}
},
"x-validate": null,
"description": "Description of the basic required and onboarding tasks params to create an employment.\nYou do not need to include all onboarding tasks when creating or updating an employment.\n"
}
EmploymentLifecycleStage
{
"enum": [
"employment_creation",
"employee_self_enrollment",
"right_to_work_check",
"contract_signing",
"remote_enrollment",
"onboarded",
"offboarded"
],
"type": "string",
"title": "EmploymentLifecycleStage",
"example": "employee_self_enrollment",
"x-struct": null,
"x-validate": null,
"description": "The stage of employment lifecycle. When it's `onboarded` means the employee is ready to commence or has already commenced."
}
EmploymentResponse
{
"type": "object",
"title": "EmploymentResponse",
"example": {
"data": {
"employment": {
"id": "20a72f86-employment-id-9e4942a902ff",
"type": "employee",
"files": [],
"status": "created",
"country": {
"code": "AUT",
"name": "Austria"
},
"full_name": "Jane Smith",
"job_title": "Engineer",
"company_id": "e31adae1-company-id-af5fba7dd803",
"created_at": "2021-11-11T18:44:39",
"updated_at": "2021-11-11T18:44:39",
"work_email": "jane.smith@company.com",
"user_status": "active",
"personal_email": "jane@smith.com",
"address_details": {},
"contract_details": {},
"onboarding_tasks": {
"address_details": {
"status": "completed",
"description": "Primary residence."
},
"contract_details": {
"status": "completed",
"description": "Employee-specific details for their employment agreement."
},
"personal_details": {
"status": "completed",
"description": "Personal details, such as name and date of birth."
},
"bank_account_details": {
"status": "completed",
"description": "Bank account used for receiving salary payments."
},
"pricing_plan_details": {
"status": "completed",
"description": "How often Remote will bill employers for management fees."
},
"administrative_details": {
"status": "completed",
"description": "Information we need for tax purposes."
},
"billing_address_details": {
"status": "completed",
"description": "Address associated with the employee's bank account."
},
"emergency_contact_details": {
"status": "completed",
"description": "Who should be called in an emergency."
},
"employment_document_details": {
"status": "pending",
"description": "We need some additional documents."
}
},
"personal_details": {},
"basic_information": {},
"bank_account_details": [],
"pricing_plan_details": {
"frequency": "annually"
},
"administrative_details": {},
"provisional_start_date": "2021-07-03",
"billing_address_details": {},
"emergency_contact_details": {}
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"x-struct": null,
"properties": {
"employment": {
"$ref": "#/components/schemas/Employment"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Complete information of an employment"
}
EmploymentSeniorityDate
{
"type": "string",
"title": "EmploymentSeniorityDate",
"format": "date-time",
"example": "2022-03-21",
"x-struct": null,
"x-validate": null,
"description": "The date the employee first started working for your company. If you don’t include a seniority date,\nthe employee’s start date with Remote will be deemed as the start of the employee’s seniority.\n\n**Example**: Your employee started working for your company on Feb 1, 2022.\nOn Aug 1, 2022, you transferred the employee to Remote and started managing them on the platform.\nFeb 1, 2022 would be their seniority date. Aug 1, 2022 would be their starting date.\n"
}
EmploymentStatus
{
"enum": [
"active",
"created",
"created_awaiting_reserve",
"created_reserve_paid",
"initiated",
"invited",
"pending",
"review",
"archived",
"deleted"
],
"type": "string",
"title": "EmploymentStatus",
"example": "active",
"x-struct": null,
"x-validate": null,
"description": "The status of employment"
}
EmploymentTermType
{
"enum": [
"fixed",
"indefinite"
],
"type": "string",
"title": "EmploymentTermType",
"example": "fixed",
"x-struct": null,
"x-validate": null
}
EmploymentUpdateParams
{
"type": "object",
"title": "EmploymentUpdateParams",
"example": {
"status": "active"
},
"x-struct": null,
"properties": {
"status": {
"$ref": "#/components/schemas/EmploymentStatus"
}
},
"x-validate": null,
"description": "Required params to update an employment in the Sandbox environment.\n\nCurrently only supports setting the Employment Status to `active`.\n"
}
Expense
{
"type": "object",
"title": "Expense",
"example": {
"title": "New desk",
"amount": 1000,
"currency": {
"code": "CZK",
"name": "Czech Koruna",
"symbol": "Kč"
},
"receipts": [
{
"id": "9880b711-file-id-ecf8f551bd78X",
"name": "id.pdf",
"type": "id",
"sub_type": "personal_id",
"inserted_at": "2021-11-12T17:19:21"
}
],
"tax_amount": 500,
"expense_date": "2021-09-03",
"employment_id": "ba9ead59-e471-4043-a7ea-07dbb105e72c",
"converted_amount": 1000,
"converted_currency": {
"code": "CZK",
"name": "Czech Koruna",
"symbol": "Kč"
},
"converted_tax_amount": 500
},
"required": [
"id",
"title",
"employment_id",
"amount",
"converted_amount",
"currency",
"converted_currency",
"expense_date",
"tax_amount",
"converted_tax_amount"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"notes": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"reason": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"status": {
"enum": [
"canceled",
"pending",
"declined",
"approved",
"processing",
"reimbursed"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Expense status"
},
"category": {
"enum": [
"education_training",
"home_office",
"meals",
"other",
"phone_utilities",
"tech_equipment",
"travel",
"coworking"
],
"type": "string",
"nullable": false,
"x-struct": null,
"x-validate": null,
"description": "Categories allowed for an expense"
},
"currency": {
"$ref": "#/components/schemas/CurrencyDefinition"
},
"receipts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/File"
},
"maxItems": 5,
"nullable": false,
"x-struct": null,
"x-validate": null
},
"reviewer": {
"type": "object",
"nullable": true,
"x-struct": null,
"properties": {
"user_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"user_name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"user_email": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
},
"tax_amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"reviewed_at": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"expense_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"invoice_period": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"converted_amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"converted_currency": {
"$ref": "#/components/schemas/CurrencyDefinition"
},
"converted_tax_amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Expense"
}
ExpenseResponse
{
"type": "object",
"title": "ExpenseResponse",
"example": {
"data": {
"expense": {
"title": "New desk",
"amount": 1000,
"currency": {
"code": "CZK",
"name": "Czech Koruna",
"symbol": "Kč"
},
"receipts": [
{
"id": "9880b711-file-id-ecf8f551bd78X",
"name": "id.pdf",
"type": "id",
"sub_type": "personal_id",
"inserted_at": "2021-11-12T17:19:21"
}
],
"tax_amount": 500,
"expense_date": "2021-09-03",
"employment_id": "ba9ead59-e471-4043-a7ea-07dbb105e72c",
"converted_amount": 1000,
"converted_currency": {
"code": "CZK",
"name": "Czech Koruna",
"symbol": "Kč"
},
"converted_tax_amount": 500
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"expense"
],
"x-struct": null,
"properties": {
"expense": {
"$ref": "#/components/schemas/Expense"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Expense response"
}
File
{
"type": "object",
"title": "File",
"example": {
"id": "9880b711-file-id-ecf8f551bd78",
"name": "id.pdf",
"type": "id",
"sub_type": "personal_id",
"inserted_at": "2021-11-12T17:19:21"
},
"required": [
"id",
"inserted_at",
"name",
"type"
],
"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
},
"sub_type": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"inserted_at": {
"type": "string",
"format": "date-time",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "A supported file"
}
FileParams
{
"type": "object",
"title": "FileParams",
"required": [
"file",
"type",
"employment_id"
],
"x-struct": null,
"properties": {
"file": {
"type": "string",
"format": "binary",
"x-struct": null,
"x-validate": null
},
"type": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Parameters to upload a file"
}
FileResponse
{
"type": "object",
"title": "FileResponse",
"example": {
"data": {
"file": {
"id": "9880b711-file-id-ecf8f551bd78X",
"name": "id.pdf",
"type": "id",
"sub_type": "personal_id",
"inserted_at": "2021-11-12T17:19:21"
}
}
},
"x-struct": null,
"properties": {
"file": {
"$ref": "#/components/schemas/File"
}
},
"x-validate": null,
"description": "A supported file"
}
ForbiddenResponse
{
"type": "object",
"title": "ForbiddenResponse",
"example": {
"message": "Forbidden"
},
"required": [
"message"
],
"x-struct": null,
"properties": {
"message": {
"type": "string",
"pattern": "Forbidden",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
FullParams
{
"type": "object",
"title": "FullParams",
"x-struct": null,
"properties": {
"country": {
"$ref": "#/components/schemas/Country"
},
"full_name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"job_title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"manager_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The user id of the manager, who should have an `admin`, `owner` or `people_manager` role.\nYou can find these users by querying the [Company Managers endpoint](https://gateway.remote.com/v1/docs/openapi.html).\n**Update of this field is only available for active employments.**\n"
},
"department_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The department of the employment. The department must belong to the same company as the employment.\n"
},
"address_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Home address information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `address_details` as path parameters."
},
"contract_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Contract information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `contract_details` as path parameters."
},
"personal_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Personal details information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `personal_details` as path parameters."
},
"basic_information": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Employment basic information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `employment_basic_information` as path parameters."
},
"bank_account_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Bank account information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `bank_account_details` as path parameters."
},
"pricing_plan_details": {
"$ref": "#/components/schemas/PricingPlanDetails"
},
"administrative_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Administrative information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `administrative_details` as path parameters."
},
"billing_address_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Billing address information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `billing_address_details` as path parameters."
},
"emergency_contact_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Emergency contact information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `emergency_contact_details` as path parameters."
}
},
"x-validate": null
}
FullParams-Deprecated
{
"type": "object",
"title": "FullParams-Deprecated",
"x-struct": null,
"properties": {
"country": {
"$ref": "#/components/schemas/Country"
},
"full_name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"job_title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"company_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"manager_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The user id of the manager, who should have an `admin`, `owner` or `people_manager` role.\nYou can find these users by querying the [Company Managers endpoint](https://gateway.remote.com/v1/docs/openapi.html).\n**Update of this field is only available for active employments.**\n"
},
"personal_email": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"seniority_date": {
"$ref": "#/components/schemas/EmploymentSeniorityDate"
},
"address_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Home address information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `address_details` as path parameters."
},
"contract_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Contract information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `contract_details` as path parameters."
},
"personal_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Personal details information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `personal_details` as path parameters."
},
"bank_account_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Bank account information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `bank_account_details` as path parameters."
},
"pricing_plan_details": {
"$ref": "#/components/schemas/PricingPlanDetails"
},
"administrative_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Administrative information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `administrative_details` as path parameters."
},
"provisional_start_date": {
"$ref": "#/components/schemas/ProvisionalStartDate"
},
"billing_address_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Billing address information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `billing_address_details` as path parameters."
},
"emergency_contact_details": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Emergency contact information. As its properties may vary depending on the country,\n you must query the [Show form schema](https://gateway.remote.com/v1/docs/openapi.html) endpoint\n passing the country code and `emergency_contact_details` as path parameters."
}
},
"x-validate": null,
"description": "Providing the params in the root level of the request is now deprecated and will be removed in the future.\nPlease, use the \"FullParams\" instead.\n"
}
GenericFile
{
"type": "string",
"title": "GenericFile",
"format": "binary",
"x-struct": null,
"x-validate": null
}
Holiday
{
"type": "object",
"title": "Holiday",
"example": {
"day": "2021-01-01",
"name": "New Year's Day",
"note": "The day after New Year's Eve",
"observed_day": "2021-01-02"
},
"required": [
"name",
"day"
],
"x-struct": null,
"properties": {
"day": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null,
"description": "Date of the holiday"
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Name of the holiday"
},
"note": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Notes about the holiday"
},
"observed_day": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Date when the holiday is observed"
}
},
"x-validate": null
}
HolidaysResponse
{
"type": "object",
"title": "HolidaysResponse",
"example": {
"data": [
{
"day": "2021-01-01",
"name": "New Year's Day",
"note": "The day after New Year's Eve",
"observed_day": "2021-01-02"
}
]
},
"x-struct": null,
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Holiday"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Holidays response"
}
IdentityClientCredentialsResponse
{
"type": "object",
"title": "IdentityClientCredentialsResponse",
"example": {
"data": {
"client_id": "1pws9iw986yq1ec57h159q29l",
"integration": {
"name": "integration_partner",
"display_name": "Integration Display Name",
"contact_email": "partner_admin@example.com"
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"client_id",
"integration"
],
"x-struct": null,
"properties": {
"client_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"integration": {
"$ref": "#/components/schemas/IdentityIntegration"
}
},
"x-validate": null
}
},
"x-validate": null
}
IdentityCompany
{
"type": "object",
"title": "IdentityCompany",
"example": {
"id": "afe4dc8d-0c4a-41fe-9fbf-62b752524bdeX",
"name": "Company"
},
"required": [
"name",
"id"
],
"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
}
IdentityCompanyAccessTokenResponse
{
"type": "object",
"title": "IdentityCompanyAccessTokenResponse",
"example": {
"data": {
"user": {
"id": "4117f18a-5ccf-473a-b970-608b75f5fafb",
"name": "Jane Smith",
"email": "email@example.com",
"status": "created"
},
"company": {
"id": "afe4dc8d-0c4a-41fe-9fbf-62b752524bde",
"name": "Company"
},
"client_id": "1pws9iw986yq1ec57h159q29l",
"integration": {
"name": "integration_partner",
"display_name": "Integration Display Name",
"contact_email": "partner_admin@example.com"
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"client_id",
"company",
"integration",
"user"
],
"x-struct": null,
"properties": {
"user": {
"$ref": "#/components/schemas/IdentityUser"
},
"company": {
"$ref": "#/components/schemas/IdentityCompany"
},
"client_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"integration": {
"$ref": "#/components/schemas/IdentityIntegration"
}
},
"x-validate": null
}
},
"x-validate": null
}
IdentityCurrentResponse
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/IdentityClientCredentialsResponse"
},
{
"$ref": "#/components/schemas/IdentityCompanyAccessTokenResponse"
},
{
"$ref": "#/components/schemas/IdentityCustomerAccessTokenResponse"
}
],
"title": "IdentityCurrentResponse",
"x-struct": null,
"x-validate": null
}
IdentityCustomerAccessTokenResponse
{
"type": "object",
"title": "IdentityCustomerAccessTokenResponse",
"example": {
"data": {
"user": {
"id": "4117f18a-5ccf-473a-b970-608b75f5fafbX",
"name": "Jane Smith",
"email": "email@example.com",
"status": "created"
},
"company": {
"id": "afe4dc8d-0c4a-41fe-9fbf-62b752524bdeX",
"name": "Company"
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"company",
"user"
],
"x-struct": null,
"properties": {
"user": {
"$ref": "#/components/schemas/IdentityUser"
},
"company": {
"$ref": "#/components/schemas/IdentityCompany"
}
},
"x-validate": null
}
},
"x-validate": null
}
IdentityIntegration
{
"type": "object",
"title": "IdentityIntegration",
"example": {
"name": "integration_partner",
"display_name": "Integration Display Name",
"contact_email": "partner_admin@example.com"
},
"required": [
"contact_email",
"display_name",
"name"
],
"x-struct": null,
"properties": {
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"display_name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"contact_email": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
IdentityUser
{
"type": "object",
"title": "IdentityUser",
"example": {
"id": "4117f18a-5ccf-473a-b970-608b75f5fafbX",
"name": "Jane Smith",
"email": "email@example.com",
"status": "created"
},
"required": [
"email",
"name",
"id",
"status"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"email": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"status": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
IdentityVerificationResponse
{
"type": "object",
"title": "IdentityVerificationResponse",
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {},
"x-validate": null
}
},
"x-validate": null,
"description": "Identity Verification response"
}
Incentive
{
"type": "object",
"title": "Incentive",
"example": {
"id": "0073fcb5-b669-4e4a-b963-2a47744e75a1X",
"note": "Signing bonus",
"type": "signing_bonus",
"amount": 50000,
"status": "pending",
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
"effective_date": "2021-12-20",
"amount_tax_type": "net",
"expected_payout_date": "2021-12-31",
"recurring_incentive_id": "1c130827-f95c-4495-b7cb-5876dce686b8"
},
"required": [
"id",
"employment_id",
"type",
"status",
"amount",
"amount_tax_type",
"effective_date"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"note": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"type": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"status": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"effective_date": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"amount_tax_type": {
"$ref": "#/components/schemas/AmountTaxType"
},
"expected_payout_date": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"recurring_incentive_id": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
IncentiveResponse
{
"type": "object",
"title": "IncentiveResponse",
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"incentive"
],
"x-struct": null,
"properties": {
"incentive": {
"$ref": "#/components/schemas/Incentive"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Incentive response"
}
InternalServerErrorResponse
{
"type": "object",
"anyOf": [
{
"$ref": "#/components/schemas/ValidationError"
},
{
"$ref": "#/components/schemas/MessageResponse"
}
],
"title": "InternalServerErrorResponse",
"x-struct": null,
"x-validate": null
}
JSONSchema
{
"type": "object",
"title": "JSONSchema",
"example": {
"schema": {
"type": "object",
"required": [
"ssn"
],
"properties": {
"ssn": {
"type": "string",
"title": "Social security number",
"pattern": "^[0-9]{3}-[0-9]{2}-(?!0{4})[0-9]{4}$",
"x-jsf-presentation": {
"mask": "999-99-9999",
"inputType": "text",
"maskSecret": 4,
"maskPlaceholder": "AAA-GG-SSSS"
}
}
},
"x-jsf-order": [
"ssn"
]
},
"version": 7
},
"x-struct": null,
"properties": {
"schema": {
"type": "object",
"required": [
"properties"
],
"x-struct": null,
"properties": {
"required": {
"type": "array",
"items": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"x-struct": null,
"x-validate": null
},
"properties": {
"type": "object",
"x-struct": null,
"x-validate": null,
"additionalProperties": true
},
"x-jsf-order": {
"type": "array",
"items": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
},
"version": {
"type": "integer",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "JSON Schema"
}
JSONSchemaResponse
{
"type": "object",
"title": "JSONSchemaResponse",
"example": {
"data": {
"schema": {
"type": "object",
"required": [
"ssn"
],
"properties": {
"ssn": {
"type": "string",
"title": "Social security number",
"pattern": "^[0-9]{3}-[0-9]{2}-(?!0{4})[0-9]{4}$",
"x-jsf-presentation": {
"mask": "999-99-9999",
"inputType": "text",
"maskSecret": 4,
"maskPlaceholder": "AAA-GG-SSSS"
}
}
},
"x-jsf-order": [
"ssn"
]
},
"version": 7
}
},
"x-struct": null,
"properties": {
"data": {
"$ref": "#/components/schemas/JSONSchema"
}
},
"x-validate": null,
"description": "JSON Schema Response"
}
ListCompanyDepartmentsPaginatedResponse
{
"type": "object",
"title": "ListCompanyDepartmentsPaginatedResponse",
"example": {
"data": {
"company_departments": [
{
"id": "89c4fbb2-cd1f-4334-8e4b-280f8795bbd8",
"name": "Marketing",
"company_id": "669f9e18-889f-4c2c-95b8-67795a3113cc"
}
]
},
"total_count": 1,
"total_pages": 1,
"current_page": 1
},
"required": [
"data",
"current_page",
"total_pages",
"total_count"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"company_departments"
],
"x-struct": null,
"properties": {
"company_departments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CompanyDepartment"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
},
"total_count": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"total_pages": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"current_page": {
"type": "integer",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
ListContractAmendmentResponse
{
"type": "object",
"title": "ListContractAmendmentResponse",
"example": {
"total_count": 1,
"total_pages": 1,
"current_page": 1,
"contract_amendments": [
{
"id": "ba310525-9282-40c9-8977-14d844bf891aX",
"status": "submitted",
"job_title": "Engineer",
"requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
"submitted_at": "2023-04-13T13:35:06Z",
"employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
"reason_for_change": "annual_pay_adjustment",
"requested_effective_date": "2023-04-13T13:35:06Z"
}
]
},
"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"
},
"contract_amendments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MinimalContractAmendment"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many contract_amendments"
}
ListEmploymentContractResponse
{
"type": "object",
"title": "ListEmploymentContractResponse",
"example": {
"data": {
"employment_contracts": [
{
"status": "active",
"country": {
"code": "CAN",
"name": "Canada"
},
"job_title": "Engineer",
"contract_id": "20a72f86-contract-id-9e4942a902ff",
"activated_at": "2021-07-15T18:18:17Z",
"compensation": {
"amount": 33000,
"currency_code": "CAD"
},
"effective_at": "2021-07-15T18:18:17Z",
"contract_details": {},
"amendment_contract_id": "e31adae1-contract-id-af5fba7dd803"
}
]
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"employment_contracts"
],
"x-struct": null,
"properties": {
"employment_contracts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EmploymentContract"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null
}
ListEmploymentCustomFieldsResponse
{
"type": "object",
"title": "ListEmploymentCustomFieldsResponse",
"example": {
"total_count": 1,
"total_pages": 1,
"current_page": 1,
"custom_fields": [
{
"id": "01c0e4d2-f41b-11ed-9d3f-cb3ecccebb58",
"name": "Internal ID",
"type": "string"
}
]
},
"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"
},
"custom_fields": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EmploymentCustomField"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many custom_fields"
}
ListEmploymentsResponse
{
"type": "object",
"title": "ListEmploymentsResponse",
"example": {
"employments": [
{
"id": "add736b8-employment-id-a76ccae2abe8",
"type": "employee",
"status": "created",
"country": {
"code": "AUS",
"name": "Australia"
},
"full_name": "Jane Smith",
"job_title": "Engineer",
"department": null,
"department_id": null,
"personal_email": "janesmith@company.com"
}
],
"total_count": 1,
"total_pages": 1,
"current_page": 1
},
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"employments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MinimalEmployment"
},
"x-struct": null,
"x-validate": null
},
"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"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many employments"
}
ListExpenseResponse
{
"type": "object",
"title": "ListExpenseResponse",
"example": {
"expenses": [
{
"title": "New desk",
"amount": 1000,
"currency": {
"code": "CZK",
"name": "Czech Koruna",
"symbol": "Kč"
},
"receipts": [
{
"id": "9880b711-file-id-ecf8f551bd78X",
"name": "id.pdf",
"type": "id",
"sub_type": "personal_id",
"inserted_at": "2021-11-12T17:19:21"
}
],
"tax_amount": 500,
"expense_date": "2021-09-03",
"employment_id": "ba9ead59-e471-4043-a7ea-07dbb105e72c",
"converted_amount": 1000,
"converted_currency": {
"code": "CZK",
"name": "Czech Koruna",
"symbol": "Kč"
},
"converted_tax_amount": 500
}
],
"total_count": 1,
"total_pages": 1,
"current_page": 1
},
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"expenses": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Expense"
},
"x-struct": null,
"x-validate": null
},
"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"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many expenses"
}
ListIncentivesResponse
{
"type": "object",
"title": "ListIncentivesResponse",
"example": {
"incentives": [
{
"id": "0073fcb5-b669-4e4a-b963-2a47744e75a1X",
"note": "Signing bonus",
"type": "signing_bonus",
"amount": 50000,
"status": "pending",
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
"effective_date": "2021-12-20",
"amount_tax_type": "net",
"expected_payout_date": "2021-12-31",
"recurring_incentive_id": "1c130827-f95c-4495-b7cb-5876dce686b8"
}
],
"total_count": 1,
"total_pages": 1,
"current_page": 1
},
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"incentives": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Incentive"
},
"x-struct": null,
"x-validate": null
},
"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"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many incentives"
}
ListOffboardingResponse
{
"type": "object",
"title": "ListOffboardingResponse",
"example": {
"total_count": 1,
"total_pages": 1,
"current_page": 1,
"offboardings": [
{
"id": "ba310525-9282-40c9-8977-14d844bf891aX",
"type": "termination",
"status": "submitted",
"confidential": false,
"requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
"submitted_at": "2023-04-13T13:35:06Z",
"employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
"termination_date": "2023-12-20",
"employee_awareness": {
"date": "2023-12-12",
"note": "optional text to add details"
},
"termination_reason": "workforce_reduction",
"additional_comments": "",
"agrees_to_pto_amount": "true",
"risk_assessment_reasons": [
"pregnant_or_breastfeeding",
"family_leave"
],
"proposed_termination_date": "2023-12-20",
"will_challenge_termination": true,
"will_challenge_termination_description": "additional details for the offboarding risk assessment"
}
]
},
"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"
},
"offboardings": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Offboarding"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many offboardings"
}
ListPayslipsResponse
{
"type": "object",
"title": "ListPayslipsResponse",
"example": {
"payslips": [
{
"id": "93t3j-employment-id-9suej43X",
"issued_at": "2021-07-01",
"employment_id": "98d3f-employment-id-1oi45n",
"expected_payout_date": "2021-07-01",
"net_pay_source_amount": 1000000,
"net_pay_converted_amount": 1500000
}
],
"total_count": 1,
"total_pages": 1,
"current_page": 1
},
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"payslips": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Payslip"
},
"x-struct": null,
"x-validate": null
},
"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"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many payslips"
}
ListRecurringIncentivesResponse
{
"type": "object",
"title": "ListRecurringIncentivesResponse",
"example": {
"total_count": 1,
"total_pages": 1,
"current_page": 1,
"recurring_incentives": [
{
"id": "0073fcb5-b669-4e4a-b963-2a47744e75a1X",
"note": "Monthly stipend to buy food",
"type": "meal_allowance",
"amount": 50000,
"status": "active",
"end_date": "2022-12-20",
"start_date": "2021-12-20",
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
"amount_tax_type": "net"
}
]
},
"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"
},
"recurring_incentives": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RecurringIncentive"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many recurring_incentives"
}
ListTimeoffResponse
{
"type": "object",
"title": "ListTimeoffResponse",
"example": {
"timeoffs": [
{
"id": "0073fcb5-b669-4e4a-b963-2a47744e75a1X",
"notes": "Some notes",
"status": "approved",
"document": {
"id": "9880b711-file-id-ecf8f551bd78X",
"name": "id.pdf",
"type": "id",
"sub_type": "personal_id",
"inserted_at": "2021-11-12T17:19:21"
},
"end_date": "2021-12-21",
"timezone": "Asia/Kolkata",
"start_date": "2021-12-20",
"timeoff_days": [
{
"day": "2021-12-20",
"hours": 8
},
{
"day": "2021-12-21",
"hours": 8
}
],
"timeoff_type": "paid_time_off",
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d"
}
],
"total_count": 1,
"total_pages": 1,
"current_page": 1
},
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"timeoffs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Timeoff"
},
"x-struct": null,
"x-validate": null
},
"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"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Response schema listing many timeoffs"
}
ListTimeoffTypesResponse
{
"type": "object",
"title": "ListTimeoffTypesResponse",
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"name": {
"$ref": "#/components/schemas/TimeoffType"
},
"description": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Time off types response"
}
MaybeBenefitTier
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BenefitTier"
}
],
"title": "MaybeBenefitTier",
"example": {
"id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04",
"name": "Premium 2023 (Medical, Dental and Vision)",
"providers": [
{
"id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87",
"name": "Health Provider"
}
]
},
"nullable": true,
"x-struct": null,
"x-validate": null
}
MessageResponse
{
"type": "object",
"title": "MessageResponse",
"required": [
"message"
],
"x-struct": null,
"properties": {
"message": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
MinimalContractAmendment
{
"type": "object",
"title": "MinimalContractAmendment",
"example": {
"id": "ba310525-9282-40c9-8977-14d844bf891aX",
"status": "submitted",
"job_title": "Engineer",
"requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
"submitted_at": "2023-04-13T13:35:06Z",
"employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
"reason_for_change": "annual_pay_adjustment",
"requested_effective_date": "2023-04-13T13:35:06Z"
},
"required": [
"id",
"employment_id",
"status",
"requested_by",
"submitted_at",
"requested_effective_date",
"reason_for_change"
],
"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
},
"job_title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"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
},
"reason_for_change": {
"enum": [
"annual_pay_adjustment",
"country_rule_change",
"error_correction",
"job_change_reevaluation",
"promotion",
"other"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"requested_effective_date": {
"type": "string",
"format": "datetime",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Minimal Contract Amendment"
}
MinimalCountry
{
"type": "object",
"title": "MinimalCountry",
"example": {
"code": "PRT",
"name": "Portugal",
"slug": "portugal-ab18d96a-a9fd-42c0-9688-24f963d8bdc1",
"alpha_2_code": "PT"
},
"required": [
"alpha_2_code",
"code",
"name",
"slug"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"slug": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"features": {
"type": "array",
"items": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"x-struct": null,
"x-validate": null
},
"alpha_2_code": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
MinimalEmployment
{
"type": "object",
"title": "MinimalEmployment",
"example": {
"id": "add736b8-employment-id-a76ccae2abe8X",
"type": "employee",
"status": "created",
"country": {
"code": "AUS",
"name": "Australia"
},
"full_name": "Jane Smith",
"job_title": "Engineer",
"department": null,
"department_id": null,
"personal_email": "janesmith@company.com"
},
"required": [
"country",
"full_name",
"id",
"job_title",
"personal_email",
"status",
"type"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"type": {
"enum": [
"employee",
"contractor",
"direct_employee",
"global_payroll_employee"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"status": {
"$ref": "#/components/schemas/EmploymentStatus"
},
"country": {
"$ref": "#/components/schemas/Country"
},
"full_name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"job_title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"department": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Name of related department, if any. Otherwise, null."
},
"department_id": {
"type": "string",
"title": "Slug",
"example": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Unique ID of related department, if any. Otherwise, null."
},
"personal_email": {
"type": "string",
"format": "email",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Minimal information of an employment."
}
MinimalRegion
{
"type": "object",
"title": "MinimalRegion",
"example": {
"code": "USA",
"name": "United States",
"slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5"
},
"required": [
"name",
"slug"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"name": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"slug": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"status": {
"$ref": "#/components/schemas/RegionStatus"
},
"child_regions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MinimalRegion"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
NotFoundResponse
{
"type": "object",
"title": "NotFoundResponse",
"example": {
"message": "{resource} not found"
},
"x-struct": null,
"properties": {
"message": {
"type": "string",
"pattern": "Not Found",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
NullableApproverId
{
"type": "string",
"title": "NullableApproverId",
"example": "51546f60-dd71-4223-9312-4efede68a497",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "The field matches the `id` of a user in the\nRemote Platform that has permission to approve time off\nrequests. [Available users][] can be found fetching\nthe [List Company Manager][] endpoint.\n\n[Available users]: https://support.remote.com/hc/en-us/articles/360054668651-Approving-Declining-time-off-requests#h_01G0014GZKZ3EMN6P7C99HAK55\n[List Company Manager]: https://gateway.remote.com/v1/docs/openapi.html#tag/Company-Managers\n"
}
NullableDateTime
{
"type": "string",
"title": "NullableDateTime",
"format": "datetime",
"example": "2021-07-15T18:18:17",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Optional UTC date time in YYYY-MM-DDTHH:mm:ss format"
}
OAuth2TokenParams
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/AuthorizationCodeParams"
},
{
"$ref": "#/components/schemas/ClientCredentialsParams"
},
{
"$ref": "#/components/schemas/RefreshTokenParams"
}
],
"title": "OAuth2TokenParams",
"example": {
"code": "eyJhbG...xb6H0",
"grant_type": "authorization_code"
},
"x-struct": null,
"properties": {
"code": {
"type": "string",
"example": "eyJhbG...xb6H0"
},
"grant_type": {
"type": "string",
"example": "authorization_code"
}
},
"x-validate": null
}
OAuth2Tokens
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/AuthorizationCodeResponse"
},
{
"$ref": "#/components/schemas/BaseTokenResponse"
},
{
"$ref": "#/components/schemas/RefreshTokenResponse"
}
],
"title": "OAuth2Tokens",
"x-struct": null,
"x-validate": null
}
Offboarding
{
"type": "object",
"title": "Offboarding",
"example": {
"id": "ba310525-9282-40c9-8977-14d844bf891aX",
"type": "termination",
"status": "submitted",
"confidential": false,
"requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
"submitted_at": "2023-04-13T13:35:06Z",
"employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
"termination_date": "2023-12-20",
"employee_awareness": {
"date": "2023-12-12",
"note": "optional text to add details"
},
"termination_reason": "workforce_reduction",
"additional_comments": "",
"agrees_to_pto_amount": "true",
"risk_assessment_reasons": [
"pregnant_or_breastfeeding",
"family_leave"
],
"proposed_termination_date": "2023-12-20",
"will_challenge_termination": true,
"will_challenge_termination_description": "additional details for the offboarding risk assessment"
},
"x-struct": null,
"properties": {
"offboarding": {
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/ResignationOffboarding"
},
{
"$ref": "#/components/schemas/TerminationOffboarding"
}
],
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Offboarding"
}
OffboardingFile
{
"type": "object",
"title": "OffboardingFile",
"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
}
OffboardingResponse
{
"type": "object",
"title": "OffboardingResponse",
"example": {
"data": {
"offboarding": {
"id": "ba310525-9282-40c9-8977-14d844bf891aX",
"type": "termination",
"status": "submitted",
"confidential": false,
"requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
"submitted_at": "2023-04-13T13:35:06Z",
"employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
"termination_date": "2023-12-20",
"employee_awareness": {
"date": "2023-12-12",
"note": "optional text to add details"
},
"termination_reason": "workforce_reduction",
"additional_comments": "",
"agrees_to_pto_amount": "true",
"risk_assessment_reasons": [
"pregnant_or_breastfeeding",
"family_leave"
],
"proposed_termination_date": "2023-12-20",
"will_challenge_termination": true,
"will_challenge_termination_description": "additional details for the offboarding risk assessment"
}
}
},
"x-struct": null,
"properties": {
"data": {
"$ref": "#/components/schemas/Offboarding"
}
},
"x-validate": null,
"description": "Offboarding response"
}
OfferedBenefitGroup
{
"type": "object",
"title": "OfferedBenefitGroup",
"example": {
"benefit_group": {
"id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44",
"name": "Health",
"policy_end_date": "2024-12-31",
"policy_start_date": "2024-01-01"
},
"employee_stats": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
},
"offered_benefit_tiers": [
{
"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"
}
]
},
"employee_stats": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
}
}
]
},
"required": [
"benefit_group",
"employee_stats",
"offered_benefit_tiers"
],
"x-struct": null,
"properties": {
"benefit_group": {
"$ref": "#/components/schemas/BenefitGroup"
},
"employee_stats": {
"$ref": "#/components/schemas/EmployeeStats"
},
"offered_benefit_tiers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OfferedBenefitTier"
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
OfferedBenefitTier
{
"type": "object",
"title": "OfferedBenefitTier",
"example": {
"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"
}
]
},
"employee_stats": {
"number_of_employees_offered": 12,
"number_of_employees_enrolled": 10
}
},
"required": [
"benefit_tier",
"employee_stats"
],
"x-struct": null,
"properties": {
"benefit_tier": {
"$ref": "#/components/schemas/BenefitTier"
},
"employee_stats": {
"$ref": "#/components/schemas/EmployeeStats"
}
},
"x-validate": null
}
ParameterError
{
"type": "object",
"title": "ParameterError",
"required": [
"code",
"message",
"param"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "An error code that describes the nature of the error."
},
"param": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The parameter 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
}
ParameterErrors
{
"type": "array",
"items": {
"$ref": "#/components/schemas/ParameterError"
},
"title": "ParameterErrors",
"x-struct": null,
"x-validate": null
}
ParamsToCreateExpense
{
"type": "object",
"title": "ParamsToCreateExpense",
"example": {
"title": "new keyboard",
"amount": 8000,
"receipt": {
"name": "receipt.pdf",
"content": "UGVyaW9kIEVuZCBEYXRlLFBheSBEYXRlLEVtcG...5jZSBPZiBSZXNpZGVuYdXJyZW50LEFsbG93"
},
"category": "home_office",
"currency": "EUR",
"timezone": "Etc/UTC",
"tax_amount": 0,
"reviewed_at": "2023-01-11T11:12:13Z",
"reviewer_id": "14c14128-f5f4-475a-8ec0-6329b4832a61",
"expense_date": "2020-12-11",
"employment_id": "d4ebc714-4950-47a9-a464-28e1f1ab2a90"
},
"required": [
"expense_date",
"title",
"amount",
"currency",
"employment_id"
],
"x-struct": null,
"properties": {
"title": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"receipt": {
"$ref": "#/components/schemas/Base64File"
},
"category": {
"enum": [
"education_training",
"home_office",
"meals",
"other",
"phone_utilities",
"tech_equipment",
"travel",
"coworking"
],
"type": "string",
"nullable": false,
"x-struct": null,
"x-validate": null,
"description": "Categories allowed for an expense"
},
"currency": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": " The three-letter code for the expense currency.<br/>\n Examples: `\"USD\"`, `\"EUR\"`, `\"CAD\"`\n"
},
"receipts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Base64File"
},
"maxItems": 5,
"x-struct": null,
"x-validate": null
},
"timezone": {
"$ref": "#/components/schemas/Timezone"
},
"tax_amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"reviewed_at": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null,
"description": "The date and time that the expense was reviewed in ISO8601 format. If not provided, it defaults to the current datetime."
},
"reviewer_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "If the person reviewing the expense is a user in Remote, you can provide its user id for this field. If a value is not provided, defaults to the user that generated the API token."
},
"expense_date": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Date of the purchase, which must be in the past"
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The ID for the employment to which this expense relates."
}
},
"x-validate": null,
"description": " All the params needed to create an expense.\n\n An expense can be created using the `receipt` or `receipts` fields; however, these fields are not allowed together within the same object.\"\n"
}
Payslip
{
"type": "object",
"title": "Payslip",
"example": {
"id": "93t3j-employment-id-9suej43X",
"issued_at": "2021-07-01",
"employment_id": "98d3f-employment-id-1oi45n",
"expected_payout_date": "2021-07-01",
"net_pay_source_amount": 1000000,
"net_pay_converted_amount": 1500000
},
"required": [
"id",
"issued_at",
"employment_id"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"issued_at": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"expected_payout_date": {
"$ref": "#/components/schemas/Date"
},
"net_pay_source_amount": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "This field is only shown if available"
},
"net_pay_converted_amount": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "This field is only shown if available"
}
},
"x-validate": null
}
PayslipDownloadResponse
{
"type": "string",
"title": "PayslipDownloadResponse",
"format": "binary",
"x-struct": null,
"x-validate": null,
"description": "The binary content of the payslip file."
}
PayslipResponse
{
"type": "object",
"title": "PayslipResponse",
"example": {
"data": {
"payslips": {
"id": "93t3j-employment-id-9suej43",
"issued_at": "2021-07-01",
"employment_id": "98d3f-employment-id-1oi45n",
"expected_payout_date": "2021-07-01",
"net_pay_source_amount": 1000000,
"net_pay_converted_amount": 1500000
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"payslip"
],
"x-struct": null,
"properties": {
"payslip": {
"$ref": "#/components/schemas/Payslip"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "A single payslip."
}
PricingPlanDetails
{
"type": "object",
"title": "PricingPlanDetails",
"example": {
"frequency": "annually"
},
"required": [
"frequency"
],
"x-struct": null,
"properties": {
"frequency": {
"enum": [
"annually",
"monthly"
],
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Selected type of payment."
}
ProvisionalStartDate
{
"type": "string",
"title": "ProvisionalStartDate",
"format": "date",
"x-struct": null,
"x-validate": null,
"description": "Indicates the expected start date of the employee or contractor.\n\nRequired for employees, but optional for contractors. Date format is in ISO8601 without the time component.\n\nSee the **Date and Time Format** documentation for more details on how the Remote API works with dates.\n"
}
RecurringIncentive
{
"type": "object",
"title": "RecurringIncentive",
"example": {
"id": "0073fcb5-b669-4e4a-b963-2a47744e75a1X",
"note": "Monthly stipend to buy food",
"type": "meal_allowance",
"amount": 50000,
"status": "active",
"end_date": "2022-12-20",
"start_date": "2021-12-20",
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
"amount_tax_type": "net"
},
"required": [
"id",
"employment_id",
"type",
"status",
"amount",
"amount_tax_type",
"start_date"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"note": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"type": {
"enum": [
"acting_up_allowance",
"allowance",
"car_allowance",
"health_and_wellness_allowance",
"internet_allowance",
"meal_allowance",
"on_call_allowance",
"parenthood_allowance",
"phone_allowance",
"relocation_allowance",
"travel_allowance",
"work_from_home_allowance",
"bonus",
"holiday_bonus",
"referral_bonus",
"retention_bonus",
"commission",
"other",
"overtime",
"stipend"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"amount": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"status": {
"enum": [
"active",
"inactive"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"end_date": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"start_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"amount_tax_type": {
"$ref": "#/components/schemas/AmountTaxType"
}
},
"x-validate": null
}
RecurringIncentiveResponse
{
"type": "object",
"title": "RecurringIncentiveResponse",
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"recurring_incentive"
],
"x-struct": null,
"properties": {
"recurring_incentive": {
"$ref": "#/components/schemas/RecurringIncentive"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Recurring Incentive response"
}
RefreshTokenParams
{
"type": "object",
"title": "RefreshTokenParams",
"example": {
"grant_type": "refresh_token",
"refresh_token": "b480036a-d229-49ef-a606-7e8fba58a5eb"
},
"required": [
"grant_type",
"refresh_token"
],
"x-struct": null,
"properties": {
"grant_type": {
"enum": [
"refresh_token"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The Authorization flow"
},
"refresh_token": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The refresh token generated in the Authorization Code flow"
}
},
"x-validate": null
}
RefreshTokenResponse
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/BaseTokenResponse"
},
{
"type": "object",
"example": {
"expires_in": 7200,
"token_type": "Bearer",
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ",
"refresh_token": "b480036a-d229-49ef-a606-7e8fba58a5eb"
},
"x-struct": null,
"properties": {
"refresh_token": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The refresh token"
}
},
"x-validate": null
}
],
"title": "RefreshTokenResponse",
"x-struct": null,
"x-validate": null
}
RegionStatus
{
"enum": [
"active",
"inactive"
],
"type": "string",
"title": "RegionStatus",
"example": "active",
"nullable": true,
"x-struct": null,
"x-validate": null
}
RequestDetails
{
"type": "object",
"title": "RequestDetails",
"x-struct": null,
"properties": {
"effective_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"reason_for_change": {
"enum": [
"annual_pay_adjustment",
"country_rule_change",
"error_correction",
"job_change_reevaluation",
"promotion",
"other"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"additional_comments": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"salary_decrease_details": {
"$ref": "#/components/schemas/SalaryDecreaseDetails"
},
"reason_for_change_description": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "This is filled when the reason_for_change is 'other'."
}
},
"x-validate": null,
"description": "The details of the requested changes for the contract amendment."
}
RequestError
{
"type": "object",
"title": "RequestError",
"example": {
"errors": {
"code": "request_internal_server_error",
"message": "There was an error while uploading a termination reason file"
}
},
"required": [
"errors"
],
"x-struct": null,
"properties": {
"errors": {
"type": "object",
"required": [
"code",
"message"
],
"x-struct": null,
"properties": {
"code": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "An error code that describes the nature of the error."
},
"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
}
},
"x-validate": null
}
ResignationAfterStartDateRequestParams
{
"type": "object",
"title": "ResignationAfterStartDateRequestParams",
"example": {
"proposed_last_date": {
"date": "2042-04-15",
"notes": "This date is better."
},
"will_take_more_pto": true,
"agrees_to_pto_amount": false,
"has_more_salary_info": true,
"accepts_proposed_notice": false,
"will_take_more_pto_notes": "3 more days.",
"agrees_to_pto_amount_notes": "I don't agree.",
"has_additional_information": true,
"has_more_salary_info_notes": "Some info about the salary.",
"agrees_to_resignation_reason": false,
"owed_outstanding_reimbursements": {
"notes": "Compensation.",
"amount": 1500
},
"has_additional_information_notes": "Some extra info.",
"agrees_to_resignation_reason_notes": "I don't agree.",
"is_owed_outstanding_reimbursements": true
},
"required": [
"accepts_proposed_notice",
"agrees_to_pto_amount",
"agrees_to_resignation_reason",
"has_additional_information",
"has_more_salary_info",
"is_owed_outstanding_reimbursements",
"will_take_more_pto"
],
"x-struct": null,
"properties": {
"timesheet_file": {
"$ref": "#/components/schemas/ResignationFile"
},
"proposed_last_date": {
"type": "object",
"x-struct": null,
"properties": {
"date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"notes": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Required if `accepts_proposed_notice` is set to false."
},
"will_take_more_pto": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"agrees_to_pto_amount": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"has_more_salary_info": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"accepts_proposed_notice": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"will_take_more_pto_notes": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "required if `will_take_more_pto` is set to true."
},
"agrees_to_pto_amount_notes": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Required if `agrees_to_pto_amount` is set to false."
},
"has_additional_information": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"has_more_salary_info_notes": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "required if `has_more_salary_info` is set to true."
},
"agrees_to_resignation_reason": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"owed_outstanding_reimbursements": {
"type": "object",
"x-struct": null,
"properties": {
"notes": {
"type": "string",
"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 amount you're offering is EUR 500.25, you would specify `50025` as\nthe amount for this field.\n"
}
},
"x-validate": null,
"description": "required if `is_owed_outstanding_reimbursements` is set to true."
},
"has_additional_information_notes": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "required if `has_additional_information` is set to true."
},
"agrees_to_resignation_reason_notes": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "required if `agrees_to_resignation_reason` is set to false."
},
"is_owed_outstanding_reimbursements": {
"type": "boolean",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"x-konfig-properties": {
"timesheet_file": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Paid time off accuracy\n\nTypically, any vacation pay accrued and unpaid at the time\nof termination must be paid out to the employee. To avoid overpaying or underpaying,\nplease make sure we have an accurate account of their paid time off by querying the\n[Show Time Off Balance](https://gateway.remote.com/v1/docs/openapi.html) endpoint,\nfiltering by the `employment_id`.\nThis optional document should be sent in case of any discrepancies.\n"
}
}
}
ResignationBeforeStartDateRequestParams
{
"type": "object",
"title": "ResignationBeforeStartDateRequestParams",
"example": {
"proposed_resignation_accepted": false,
"proposed_resignation_accepted_notes": "I do not accept"
},
"required": [
"proposed_resignation_accepted"
],
"x-struct": null,
"properties": {
"proposed_resignation_accepted": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"proposed_resignation_accepted_notes": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Required if `proposed_resignation_accepted` is set to false."
}
},
"x-validate": null
}
ResignationFile
{
"type": "object",
"title": "ResignationFile",
"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
}
ResignationOffboarding
{
"type": "object",
"title": "ResignationOffboarding",
"example": {
"id": "ba310525-9282-40c9-8977-14d844bf891aX",
"type": "resignation",
"status": "submitted",
"requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
"submitted_at": "2023-04-13T13:35:06Z",
"employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
"termination_date": "2023-12-20",
"employer_awareness": "The employer was informed on 2023-12-12",
"resignation_reason": "workforce_reduction",
"additional_comments": "",
"proposed_last_working_day": "2023-12-20"
},
"required": [
"id",
"type",
"status",
"submitted_at",
"employment_id",
"requested_by",
"proposed_last_working_day",
"termination_date",
"resignation_reason"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"type": {
"enum": [
"resignation"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"status": {
"enum": [
"submitted",
"in_review",
"done",
"canceled"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"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
},
"termination_date": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Most updated termination date for the offboarding. This date is subject to change through the offboarding process even after it is finalized."
},
"employer_awareness": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"reason_description": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"resignation_reason": {
"enum": [
"cancellation_before_start_date",
"company_culture_or_values",
"conversion_to_contractor",
"dissatisfaction_with_remote_service",
"incapacity_to_perform_inherent_duties",
"infrastructure_challenges",
"lack_of_recognition",
"leadership",
"mutual_agreement",
"other",
"other_job_opportunity",
"personal_reasons",
"position_does_not_meet_expectations",
"relationship_with_coworkers",
"relocation_from_entity_to_entity_by_employee",
"relocation_leaving_remote",
"remuneration_and_benefits",
"retirement",
"transfer_and_relocation_new_customer_and_new_country",
"transfer_between_remote_customer",
"transfer_from_remote_to_customer",
"transfer_from_remote_to_other_eor"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"additional_comments": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"proposed_last_working_day": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
ResourceErrorResponse
{
"type": "object",
"title": "ResourceErrorResponse",
"example": {
"message": {
"code": "resource_already_exists",
"message": "There is already a submitted Employee termination request for this user, so you can't submit another one",
"resource_id": "aca8ba1f-8d3a-4de8-9ab4-e0fcb4b210be",
"resource_type": "termination_request"
}
},
"required": [
"message"
],
"x-struct": null,
"properties": {
"message": {
"type": "object",
"x-struct": null,
"properties": {
"code": {
"enum": [
"parameter_invalid_date",
"resource_not_supported_for_country",
"parameter_value_invalid",
"request_internal_server_error",
"resource_invalid_state",
"resource_already_exists",
"resource_not_eligible",
"action_invalid",
"action_unrecognized",
"parameter_map_empty",
"parameter_one_of_required_missing",
"parameter_required_missing",
"parameter_too_many",
"parameter_unknown",
"parameter_value_unknown",
"request_body_empty"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"message": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"resource_id": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"resource_type": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null
}
SalaryDecreaseDetails
{
"type": "object",
"title": "SalaryDecreaseDetails",
"nullable": true,
"x-struct": null,
"properties": {
"was_employee_informed": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"salary_decrease_reason": {
"enum": [
"change_in_working_hours",
"trade_salary_for_equity",
"error_in_initial_salary",
"role_change_or_demotion",
"compensation_restructure",
"other"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"salary_decrease_reason_description": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "The details of the salary decrease request if there is one"
}
Slug
{
"type": "string",
"title": "Slug",
"example": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Unique ID of related department, if any. Otherwise, null."
}
SuccessResponse
{
"type": "object",
"title": "SuccessResponse",
"example": {
"data": {
"status": "ok"
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"x-struct": null,
"properties": {
"status": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
},
"x-validate": null
}
TerminationDetailsParams
{
"type": "object",
"title": "TerminationDetailsParams",
"required": [
"confidential",
"proposed_termination_date",
"termination_reason",
"risk_assessment_reasons",
"will_challenge_termination",
"reason_description"
],
"x-struct": null,
"properties": {
"confidential": {
"type": "boolean",
"x-struct": null,
"x-validate": null,
"description": "Confidential requests are visible for who authorized the token or integration. Non-confidential requests are visible to all admins in the company."
},
"personal_email": {
"type": "string",
"format": "email",
"x-struct": null,
"x-validate": null,
"description": "Remote will use this email address for post-termination communication.\nIf it is not provided, this field will be derived from the employment record. Therefore, it is important to ensure that it is not a company email.\n"
},
"timesheet_file": {
"$ref": "#/components/schemas/OffboardingFile"
},
"employee_awareness": {
"type": "object",
"x-struct": null,
"properties": {
"date": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "When the employee was told about the termination."
},
"note": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Notes describing how the termination was shared with the employee. Remote advises being as specific as possible, and include details about the employee’s response, if applicable."
}
},
"x-validate": null,
"description": "Remote advises not to inform the employee of their termination until we review your request for legal risks. When we approve your request, you can inform the employee and we’ll take it from there. This field is only required if employee was informed before creating the offboarding request."
},
"reason_description": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Description of the reason for termination"
},
"termination_reason": {
"enum": [
"cancellation_before_start_date",
"compliance_issue",
"conversion_to_contractor",
"dissatisfaction_with_remote_service",
"end_of_fixed_term_contract_compliance_issue",
"end_of_fixed_term_contract_incapacity_to_perform_inherent_duties",
"end_of_fixed_term_contract_local_regulations_max_term_reached",
"end_of_fixed_term_contract_misconduct",
"end_of_fixed_term_contract_operational_reasons",
"end_of_fixed_term_contract_other",
"end_of_fixed_term_contract_performance",
"end_of_fixed_term_contract_redundancy",
"end_of_fixed_term_contract_values",
"gross_misconduct",
"incapacity_to_perform_inherent_duties",
"job_abandonment",
"mutual_agreement",
"other",
"performance",
"values",
"workforce_reduction"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Choose an accurate termination reason to avoid unfair or unlawful dismissal claims.\n\nIf the termination is created before the employee's start date, this field\nwill be set to `cancellation_before_start_date`.\n"
},
"additional_comments": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Additional details regarding the termination process."
},
"risk_assessment_reasons": {
"type": "array",
"items": {
"enum": [
"caring_responsibilities",
"disabled_or_health_condition",
"family_leave",
"member_of_union_or_works_council",
"none_of_these",
"pregnant_or_breastfeeding",
"reported_concerns_with_workplace",
"requested_medical_or_family_leave",
"sick_leave"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"minItems": 1,
"x-struct": null,
"x-validate": null,
"description": "Possible reasons for offboarding risk assessment"
},
"termination_reason_files": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OffboardingFile"
},
"x-struct": null,
"x-validate": null,
"description": "Any supporting documents regarding the termination reason"
},
"proposed_termination_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null,
"description": "In most cases, employee needs to be notified before termination. The required notice period depends on local labor laws, the employment agreement, and other factors. Remote will use those factors to determine the required notice period. Please note that we cannot commit to a termination date until we conduct a full review of the information you submit."
},
"will_challenge_termination": {
"type": "boolean",
"x-struct": null,
"x-validate": null,
"description": "Whether is it likely or not that the employee will challenge their termination"
},
"will_challenge_termination_description": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "If it is likely that the employee will challenge their termination, please provide additional details explaining the risk"
}
},
"x-validate": null,
"x-konfig-properties": {
"timesheet_file": {
"type": "object",
"x-struct": null,
"x-validate": null,
"description": "Paid time off accuracy\n\nTypically, any vacation pay accrued and unpaid at the time\nof termination must be paid out to the employee. To avoid overpaying or underpaying,\nplease make sure we have an accurate account of their paid time off by querying the\n[Show Time Off Balance](https://gateway.remote.com/v1/docs/openapi.html) endpoint,\nfiltering by the `employment_id`.\nThis optional document should be sent in case of any discrepancies.\n"
}
}
}
TerminationOffboarding
{
"type": "object",
"title": "TerminationOffboarding",
"example": {
"id": "ba310525-9282-40c9-8977-14d844bf891a",
"type": "termination",
"status": "submitted",
"confidential": false,
"requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
"submitted_at": "2023-04-13T13:35:06Z",
"employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
"termination_date": "2023-12-20",
"employee_awareness": {
"date": "2023-12-12",
"note": "optional text to add details"
},
"termination_reason": "workforce_reduction",
"additional_comments": "",
"agrees_to_pto_amount": "true",
"risk_assessment_reasons": [
"pregnant_or_breastfeeding",
"family_leave"
],
"proposed_termination_date": "2023-12-20",
"will_challenge_termination": true,
"will_challenge_termination_description": "additional details for the offboarding risk assessment"
},
"required": [
"id",
"type",
"status",
"submitted_at",
"employment_id",
"requested_by",
"confidential",
"proposed_termination_date",
"termination_date",
"termination_reason",
"reason_description",
"additional_comments",
"risk_assessment_reasons",
"will_challenge_termination"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"type": {
"enum": [
"termination"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"status": {
"enum": [
"submitted",
"in_review",
"done",
"canceled"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"confidential": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"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
},
"termination_date": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Most updated termination date for the offboarding. This date is subject to change through the offboarding process even after it is finalized."
},
"employee_awareness": {
"type": "object",
"x-struct": null,
"properties": {
"date": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"note": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
},
"reason_description": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"termination_reason": {
"enum": [
"cancellation_before_start_date",
"compliance_issue",
"conversion_to_contractor",
"dissatisfaction_with_remote_service",
"end_of_fixed_term_contract_compliance_issue",
"end_of_fixed_term_contract_incapacity_to_perform_inherent_duties",
"end_of_fixed_term_contract_local_regulations_max_term_reached",
"end_of_fixed_term_contract_misconduct",
"end_of_fixed_term_contract_operational_reasons",
"end_of_fixed_term_contract_other",
"end_of_fixed_term_contract_performance",
"end_of_fixed_term_contract_redundancy",
"end_of_fixed_term_contract_values",
"gross_misconduct",
"incapacity_to_perform_inherent_duties",
"job_abandonment",
"mutual_agreement",
"other",
"performance",
"values",
"workforce_reduction"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"additional_comments": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"agrees_to_pto_amount": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"risk_assessment_reasons": {
"type": "array",
"items": {
"enum": [
"caring_responsibilities",
"disabled_or_health_condition",
"family_leave",
"member_of_union_or_works_council",
"none_of_these",
"pregnant_or_breastfeeding",
"reported_concerns_with_workplace",
"requested_medical_or_family_leave",
"sick_leave"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"x-struct": null,
"x-validate": null
},
"proposed_termination_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"will_challenge_termination": {
"type": "boolean",
"x-struct": null,
"x-validate": null
},
"will_challenge_termination_description": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
Timeoff
{
"type": "object",
"title": "Timeoff",
"example": {
"id": "0073fcb5-b669-4e4a-b963-2a47744e75a1X",
"notes": "Some notes",
"status": "approved",
"document": {
"id": "9880b711-file-id-ecf8f551bd78X",
"name": "id.pdf",
"type": "id",
"sub_type": "personal_id",
"inserted_at": "2021-11-12T17:19:21"
},
"end_date": "2021-12-21",
"timezone": "Asia/Kolkata",
"start_date": "2021-12-20",
"timeoff_days": [
{
"day": "2021-12-20",
"hours": 8
},
{
"day": "2021-12-21",
"hours": 8
}
],
"timeoff_type": "paid_time_off",
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d"
},
"required": [
"id",
"employment_id",
"status",
"start_date",
"end_date",
"timeoff_days",
"timeoff_type",
"timezone"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"notes": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"status": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"document": {
"$ref": "#/components/schemas/File"
},
"end_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"timezone": {
"$ref": "#/components/schemas/Timezone"
},
"start_date": {
"type": "string",
"format": "date",
"x-struct": null,
"x-validate": null
},
"approved_at": {
"type": "string",
"format": "date-time",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"approver_id": {
"$ref": "#/components/schemas/NullableApproverId"
},
"cancelled_at": {
"$ref": "#/components/schemas/NullableDateTime"
},
"timeoff_days": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TimeoffDay"
},
"x-struct": null,
"x-validate": null
},
"timeoff_type": {
"$ref": "#/components/schemas/TimeoffType"
},
"cancel_reason": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
TimeoffBalance
{
"type": "object",
"title": "TimeoffBalance",
"example": {
"taken": {
"days": 3,
"hours": 0
},
"leave_entitlements": [
{
"name": "Annual paid time off",
"type": "annual_paid_timeoff",
"taken": {
"days": 3,
"hours": 0
},
"entitled": {
"days": 28,
"hours": 0
},
"remaining": {
"days": 25,
"hours": 0
},
"expiry_date": "2022-12-31"
},
{
"name": "Extra days for good performance",
"type": "additional_pto",
"taken": {
"days": 0,
"hours": 0
},
"entitled": {
"days": 3,
"hours": 0
},
"remaining": {
"days": 3,
"hours": 0
},
"expiry_date": "2022-12-31"
}
],
"total_entitled_days": 31,
"contractual_entitled": {
"days": 25,
"hours": 0
},
"working_hours_per_day": 8
},
"required": [
"timeoff_entitlements",
"taken",
"upcoming_approved",
"upcoming_requested",
"working_hours_per_day",
"contractual_leave_entitlement_type"
],
"x-struct": null,
"properties": {
"taken": {
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/TimeoffDaysAndHours"
}
],
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Number of time off days taken by the employment as of today.\n\nYou can get a list of taken time off data for this employment using the\n[list time off endpoint](https://gateway.remote.com/v1/docs/openapi.html).\n"
},
"upcoming_approved": {
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/TimeoffDaysAndHours"
}
],
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Number of future, approved time off days for the employment, as of today.\n\nYou can get a list of approved time off data for this employment using the\n[list time off endpoint](https://gateway.remote.com/v1/docs/openapi.html).\n"
},
"upcoming_requested": {
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/TimeoffDaysAndHours"
}
],
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Number of future, requested time off days for the employment, as of today.\n\nYou can get a list of requested time off data for this employment using the\n[list time off endpoint](https://gateway.remote.com/v1/docs/openapi.html).\n"
},
"total_entitled_days": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "Number of time off days for the employment, based on their contract and\nany additional time off that's granted to them.\n\nThis is the sum of all `entitled` fields in the `leave_entitlements`\narray, but does not take the hours into account.\n"
},
"contractual_entitled": {
"type": "integer",
"x-struct": null,
"x-validate": null,
"description": "Number of time off days for the employment, based on their contract.\n\nThe value of this field is `0` if the employment's contract does not\ninclude that information.\n"
},
"timeoff_entitlements": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TimeoffEntitlement"
},
"x-struct": null,
"x-validate": null,
"description": "A list of individual time off entitlements for the employment. This list\ngives more granular details for the type of time off that's available\nto the employment.\n"
},
"working_hours_per_day": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"contractual_leave_entitlement_type": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Leave entitlement type for the employment, based on their contract.\n\nThe value of this field is `fixed` when the employment has a fixed\nlimit of time off days to be taken, and `unlimited` otherwise.\n"
}
},
"x-validate": null
}
TimeoffBalanceNotFoundResponse
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/TimeoffBalanceNotSupportedResponse"
},
{
"$ref": "#/components/schemas/NotFoundResponse"
}
],
"title": "TimeoffBalanceNotFoundResponse",
"x-struct": null,
"x-validate": null
}
TimeoffBalanceNotSupportedResponse
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/ResourceErrorResponse"
}
],
"title": "TimeoffBalanceNotSupportedResponse",
"example": {
"message": {
"code": "resource_already_exists",
"message": "There is already a submitted Employee termination request for this user, so you can't submit another one",
"resource_id": "aca8ba1f-8d3a-4de8-9ab4-e0fcb4b210be",
"resource_type": "termination_request"
}
},
"x-struct": null,
"x-validate": null
}
TimeoffBalanceResponse
{
"type": "object",
"title": "TimeoffBalanceResponse",
"example": {
"data": {
"timeoff_balance": {
"taken": {
"days": 3,
"hours": 0
},
"leave_entitlements": [
{
"name": "Annual paid time off",
"type": "annual_paid_timeoff",
"taken": {
"days": 3,
"hours": 0
},
"entitled": {
"days": 28,
"hours": 0
},
"remaining": {
"days": 25,
"hours": 0
},
"expiry_date": "2022-12-31"
},
{
"name": "Extra days for good performance",
"type": "additional_pto",
"taken": {
"days": 0,
"hours": 0
},
"entitled": {
"days": 3,
"hours": 0
},
"remaining": {
"days": 3,
"hours": 0
},
"expiry_date": "2022-12-31"
}
],
"total_entitled_days": 31,
"contractual_entitled": {
"days": 25,
"hours": 0
},
"working_hours_per_day": 8
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"timeoff_balance"
],
"x-struct": null,
"properties": {
"timeoff_balance": {
"$ref": "#/components/schemas/TimeoffBalance"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Time Off Balance response"
}
TimeoffDay
{
"type": "object",
"title": "TimeoffDay",
"example": {
"day": "2021-01-01",
"hours": 8
},
"required": [
"day",
"hours"
],
"x-struct": null,
"properties": {
"day": {
"$ref": "#/components/schemas/Date"
},
"hours": {
"type": "integer",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "TimeoffDay schema"
}
TimeoffDaysAndHours
{
"type": "object",
"title": "TimeoffDaysAndHours",
"example": {
"days": 1,
"hours": 3
},
"x-struct": null,
"properties": {
"days": {
"type": "integer",
"x-struct": null,
"x-validate": null
},
"hours": {
"type": "integer",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
TimeoffDaysParams
{
"type": "object",
"title": "TimeoffDaysParams",
"x-struct": null,
"properties": {
"day": {
"$ref": "#/components/schemas/Date"
},
"hours": {
"type": "integer",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Timeoff days params"
}
TimeoffDocumentParams
{
"type": "object",
"title": "TimeoffDocumentParams",
"required": [
"content",
"name"
],
"x-struct": null,
"properties": {
"name": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The file name of the document"
},
"content": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The binary content of the file encoded with base64"
}
},
"x-validate": null,
"description": "Timeoff document params"
}
TimeoffEntitlement
{
"type": "object",
"title": "TimeoffEntitlement",
"example": {
"name": "Extra days for good performance",
"type": "additional_pto",
"taken": {
"days": 15,
"hours": 4
},
"available": {
"days": 15,
"hours": 4
},
"expiry_date": "2022-12-31"
},
"required": [
"name",
"expiry_date",
"can_expire",
"entitled",
"taken",
"remaining",
"type"
],
"x-struct": null,
"properties": {
"name": {
"type": "string",
"nullable": true,
"x-struct": null,
"x-validate": null
},
"type": {
"enum": [
"carryover_pto",
"additional_pto",
"transfer_pto",
"annual_paid_timeoff"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Indicates the type of the time off entitlement.\n\n`annual_paid_timeoff` entitlements are calculated from the employment's\ncontract. All other time off entitlements are granted by the employer\nor automatically by the country of employment.\n"
},
"taken": {
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/TimeoffDaysAndHours"
}
],
"x-struct": null,
"x-validate": null,
"description": "Indicates how much time off the employment has taken from this entitlement.\n"
},
"entitled": {
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/TimeoffDaysAndHours"
}
],
"x-struct": null,
"x-validate": null,
"description": "Indicates how much this time off this entitlement contributes to the total time\noff entitlement.\n"
},
"remaining": {
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/TimeoffDaysAndHours"
}
],
"x-struct": null,
"x-validate": null,
"description": "Indicates how much time off the employment has remaining in this entitlement.\n"
},
"can_expire": {
"type": "boolean",
"x-struct": null,
"x-validate": null,
"description": "Indicates whether this entitlement can expire.\n\nWhen `false`, `expiry_date` will be `nil`.\n"
},
"expiry_date": {
"type": "string",
"format": "date",
"nullable": true,
"x-struct": null,
"x-validate": null,
"description": "Indicates the date this entitlement expires and is no longer counted\ntowards the total time off entitlement for the employment.\n\nWhen this entitlement doesn't expire, `expiry_date` will be set to\n`nil`. Use the `can_expire` parameter to determine whether\nan entitlement can expire or not.\n"
}
},
"x-validate": null,
"description": "Detailed breakdown of an employment's time off balance.\n"
}
TimeoffResponse
{
"type": "object",
"title": "TimeoffResponse",
"example": {
"data": {
"timeoff": {
"id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
"notes": "Some notes",
"status": "approved",
"document": {
"id": "9880b711-file-id-ecf8f551bd78X",
"name": "id.pdf",
"type": "id",
"sub_type": "personal_id",
"inserted_at": "2021-11-12T17:19:21"
},
"end_date": "2021-12-21",
"timezone": "Asia/Kolkata",
"start_date": "2021-12-20",
"timeoff_days": [
{
"day": "2021-12-20",
"hours": 8
},
{
"day": "2021-12-21",
"hours": 8
}
],
"timeoff_type": "paid_time_off",
"employment_id": "5e55386e-4f4f-4def-92f4-bdc19a5ce77d"
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"timeoff"
],
"x-struct": null,
"properties": {
"timeoff": {
"$ref": "#/components/schemas/Timeoff"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Timeoff response"
}
TimeoffStatus
{
"enum": [
"approved",
"cancelled",
"declined",
"requested",
"taken",
"cancel_requested"
],
"type": "string",
"title": "TimeoffStatus",
"example": "requested",
"x-struct": null,
"x-validate": null
}
TimeoffType
{
"enum": [
"paid_time_off",
"sick_leave",
"public_holiday",
"unpaid_leave",
"extended_leave",
"in_lieu_time",
"maternity_leave",
"paternity_leave",
"parental_leave",
"bereavement",
"military_leave",
"other"
],
"type": "string",
"title": "TimeoffType",
"example": "sick_leave",
"x-struct": null,
"x-validate": null
}
Timezone
{
"type": "string",
"title": "Timezone",
"example": "Etc/UTC",
"x-struct": null,
"x-validate": null,
"description": "[TZ identifier](https://www.iana.org/time-zones)"
}
TooManyRequestsResponse
{
"type": "object",
"title": "TooManyRequestsResponse",
"example": {
"message": "Too many requests"
},
"x-struct": null,
"properties": {
"message": {
"type": "string",
"pattern": "Too many requests",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
UnauthorizedResponse
{
"type": "object",
"title": "UnauthorizedResponse",
"example": {
"message": "Unauthorized"
},
"required": [
"message"
],
"x-struct": null,
"properties": {
"message": {
"type": "string",
"pattern": "Unauthorized",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
UnprocessableEntityResponse
{
"type": "object",
"oneOf": [
{
"type": "object",
"required": [
"errors"
],
"x-struct": null,
"properties": {
"errors": {
"type": "object",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
},
{
"type": "object",
"required": [
"message"
],
"x-struct": null,
"properties": {
"message": {
"oneOf": [
{
"type": "string",
"x-struct": null,
"x-validate": null
},
{
"$ref": "#/components/schemas/ParameterError"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/ParameterError"
},
"title": "ParameterErrors",
"x-struct": null,
"x-validate": null
},
{
"$ref": "#/components/schemas/ActionError"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/ActionError"
},
"title": "ActionErrors",
"x-struct": null,
"x-validate": null
}
],
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
],
"title": "UnprocessableEntityResponse",
"example": {
"errors": {
"some_field": [
"is invalid"
]
}
},
"x-struct": null,
"x-validate": null
}
UpdateApprovedTimeoffParams
{
"type": "object",
"title": "UpdateApprovedTimeoffParams",
"required": [
"edit_reason",
"cancel_reason"
],
"x-struct": null,
"properties": {
"notes": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"status": {
"enum": [
"approved",
"cancelled"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"document": {
"$ref": "#/components/schemas/TimeoffDocumentParams"
},
"end_date": {
"$ref": "#/components/schemas/Date"
},
"timezone": {
"$ref": "#/components/schemas/Timezone"
},
"start_date": {
"$ref": "#/components/schemas/Date"
},
"approved_at": {
"$ref": "#/components/schemas/DateTimeIso8601"
},
"approver_id": {
"$ref": "#/components/schemas/NullableApproverId"
},
"edit_reason": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The reason for the update. Required when updating the time off data but not changing the status."
},
"timeoff_days": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TimeoffDaysParams"
},
"x-struct": null,
"x-validate": null
},
"timeoff_type": {
"$ref": "#/components/schemas/TimeoffType"
},
"cancel_reason": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The reason for cancelling a time off. Required when updating to status `cancelled`."
}
},
"x-validate": null,
"description": "Update timeoff params"
}
UpdateCompanyParams
{
"type": "object",
"title": "UpdateCompanyParams",
"example": {
"name": "Tech Vision",
"tax_number": "123456789",
"country_code": "USA",
"phone_number": "+11123123456",
"address_details": {
"city": "San Francisco",
"state": "CA",
"address": "1709 Broderick St",
"postal_code": "94115",
"address_line_2": "Flat number 123"
},
"desired_currency": "USD",
"bank_account_details": {
"name": "Bank name",
"account_type": "savings",
"account_holder": "Joe Smith",
"account_number": "31234123123",
"ownership_type": "BUSINESS",
"routing_number": "123124123"
}
},
"x-struct": null,
"properties": {
"name": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "This field is only accepted if company is in status `pending`. Please contact Remote if you wish to update it.\n"
},
"tax_number": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": " The tax identifier of the company. This field or registration_number (but not both) should be submitted.\n\n This field is only accepted if company is in status `pending`.\n"
},
"country_code": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Country of company address"
},
"phone_number": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "A phone number the company can be contacted with."
},
"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": {
"enum": [
"AUD",
"CAD",
"CHF",
"DKK",
"EUR",
"GBP",
"JPY",
"NOK",
"NZD",
"SEK",
"SGD",
"USD"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "Desired currency for invoicing and displaying converted salaries in Remote UI regardless of the employee's country.\n\nThis field is only accepted if company is in status `pending`. Please contact Remote if you wish to update it.\n"
},
"registration_number": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The company registration number. This field or tax_number (but not both) should be submitted.\n\nThis field is only accepted if company is in status `pending`.\n"
},
"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"
}
},
"x-validate": null
}
UpdateExpenseParams
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/ApproveExpenseParams"
},
{
"$ref": "#/components/schemas/DeclineExpenseParams"
}
],
"title": "UpdateExpenseParams",
"x-struct": null,
"x-validate": null,
"description": "Update expense params"
}
UpdateIncentiveParams
{
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/CommonIncentiveParams"
},
{
"type": "object",
"x-struct": null,
"properties": {
"type": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "A valid type according to the payment frequency"
}
},
"x-validate": null
}
],
"title": "UpdateIncentiveParams",
"example": {
"note": "Bonus for moving start date to an earlier date",
"type": "signing_bonus",
"amount": 50000,
"effective_date": "2021-12-20",
"amount_tax_type": "net"
},
"x-struct": null,
"properties": {
"note": {
"type": "string",
"example": "Bonus for moving start date to an earlier date"
},
"type": {
"type": "string",
"example": "signing_bonus"
},
"amount": {
"type": "number",
"example": 50000
},
"effective_date": {
"type": "string",
"example": "2021-12-20"
},
"amount_tax_type": {
"type": "string",
"example": "net"
}
},
"x-validate": null
}
ValidateResignationRequest
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/ResignationAfterStartDateRequestParams"
},
{
"$ref": "#/components/schemas/ResignationBeforeStartDateRequestParams"
}
],
"title": "ValidateResignationRequest",
"x-struct": null,
"x-validate": null
}
ValidationError
{
"type": "object",
"title": "ValidationError",
"example": {
"errors": {
"rejected_reason": [
"can't be blank"
]
}
},
"required": [
"errors"
],
"x-struct": null,
"properties": {
"errors": {
"type": "object",
"x-struct": null,
"properties": {},
"x-validate": null,
"additionalProperties": true
}
},
"x-validate": null
}
WebhookCallback
{
"type": "object",
"title": "WebhookCallback",
"example": {
"id": "0073fcb5-b669-4e4a-b963-2a47744e75a1X",
"url": "https://example.com/callback",
"subscribed_events": [
"employment.onboarding_task.completed"
]
},
"required": [
"id",
"url"
],
"x-struct": null,
"properties": {
"id": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"url": {
"type": "string",
"x-struct": null,
"x-validate": null
},
"signing_key": {
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "This key will be used to sign the signature provided with webhook requests we\nsend to the `url` you provided for this webhook callback.\n\nThe webhook signature will be included in a custom header, `X-Remote-Signature`.\nYou can use this signature to verify that requests are coming from Remote and\nnot some unauthorized third-party.\n"
},
"subscribed_events": {
"type": "array",
"items": {
"enum": [
"billing_document.issued",
"contract_amendment.canceled",
"contract_amendment.deleted",
"contract_amendment.done",
"contract_amendment.review_started",
"contract_amendment.submitted",
"custom_field.value_updated",
"employment_contract.active_contract_updated",
"employment.account.updated",
"employment.details.updated",
"employment.onboarding_task.completed",
"employment.onboarding.completed",
"employment.personal_information.updated",
"employment.user_status.activated",
"employment.user_status.deactivated",
"expense.approved",
"expense.declined",
"expense.deleted",
"expense.reimbursed",
"expense.submitted",
"expense.updated",
"identity_verification.verification_required",
"incentive.created",
"incentive.deleted",
"incentive.paid",
"incentive.processing_started",
"incentive.updated",
"offboarding.deleted",
"offboarding.done",
"offboarding.review_started",
"offboarding.submitted",
"offboarding.submitted_to_payroll",
"offboarding.completed",
"payslip.released",
"timeoff.approved",
"timeoff.canceled",
"timeoff.date_changed",
"timeoff.declined",
"timeoff.requested",
"timeoff.taken",
"timeoff.updated"
],
"type": "string",
"x-struct": null,
"x-validate": null,
"description": "The setting to be enabled."
},
"x-struct": null,
"x-validate": null
}
},
"x-validate": null
}
WebhookCallbackResponse
{
"type": "object",
"title": "WebhookCallbackResponse",
"example": {
"data": {
"webhook_callback": {
"id": "0073fcb5-b669-4e4a-b963-2a47744e75a1X",
"url": "https://example.com/callback",
"subscribed_events": [
"employment.onboarding_task.completed"
]
}
}
},
"required": [
"data"
],
"x-struct": null,
"properties": {
"data": {
"type": "object",
"required": [
"webhook_callback"
],
"x-struct": null,
"properties": {
"webhook_callback": {
"$ref": "#/components/schemas/WebhookCallback"
}
},
"x-validate": null
}
},
"x-validate": null,
"description": "Webhook callback response"
}
WebhookTriggerParams
{
"type": "object",
"title": "WebhookTriggerParams",
"example": {
"event_type": "employment.onboarding_task.completed",
"employment_id": "e966a8b8-1076-11ee-a5f2-9b3997a968f6"
},
"x-struct": null,
"properties": {
"event_type": {
"enum": [
"billing_document.issued",
"contract_amendment.canceled",
"contract_amendment.deleted",
"contract_amendment.done",
"contract_amendment.review_started",
"contract_amendment.submitted",
"custom_field.value_updated",
"employment_contract.active_contract_updated",
"employment.account.updated",
"employment.details.updated",
"employment.onboarding_task.completed",
"employment.onboarding.completed",
"employment.personal_information.updated",
"employment.user_status.activated",
"employment.user_status.deactivated",
"expense.approved",
"expense.declined",
"expense.deleted",
"expense.reimbursed",
"expense.submitted",
"expense.updated",
"identity_verification.verification_required",
"incentive.created",
"incentive.deleted",
"incentive.paid",
"incentive.processing_started",
"incentive.updated",
"offboarding.deleted",
"offboarding.done",
"offboarding.review_started",
"offboarding.submitted",
"offboarding.submitted_to_payroll",
"offboarding.completed",
"payslip.released",
"timeoff.approved",
"timeoff.canceled",
"timeoff.date_changed",
"timeoff.declined",
"timeoff.requested",
"timeoff.taken",
"timeoff.updated"
],
"type": "string",
"x-struct": null,
"x-validate": null
},
"employment_id": {
"type": "string",
"x-struct": null,
"x-validate": null
}
},
"x-validate": null,
"description": "Required params to trigger a webhook event in the Sandbox environment"
}