Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://gateway.remote.com
https://gateway.remote-sandbox.com
/v1/benefit-offers/country-summaries
List benefit offers for each country.
Success
Not Found
Unprocessable Entity
GET /v1/benefit-offers/country-summaries
/v1/benefit-offers
List benefit offers by employment.
Success
Not Found
GET /v1/benefit-offers
/v1/billing-documents
List billing documents for a company
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| period | query | optional | string | The month for the billing documents (in ISO-8601 format) |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/billing-documents
/v1/billing-documents/{billing_document_id}
Shows a billing document details.
Please contact api-support@remote.com to request access to this endpoint.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| billing_document_id | path | required | string | The billing document’s ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Unprocessable Entity
GET /v1/billing-documents/{billing_document_id}
/v1/billing-documents/{billing_document_id}/pdf
Downloads a billing document PDF
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| billing_document_id | path | required | string | The billing document’s ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/billing-documents/{billing_document_id}/pdf
/v1/companies
List all companies that authorized your integration to act on their behalf. In other words, these are all the companies that your integration can manage. Any company that has completed the authorization flow for your integration will be included in the response.
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/companies
/v1/companies
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:
pending.initiated.See the update a company endpoint 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. Also see Remote’s
Privacy Policy”.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| action | query | optional | string | Complementary action(s) to perform when creating a company:
If |
Create Company params
application/json
CreateCompanyParams
| Property | Type | Required |
|---|---|---|
| name | string | required |
| tax_number | string | optional |
| external_id | string | optional |
| country_code | string | required |
| email_domain | string | optional |
| phone_number | string | optional |
| address_details | object | optional |
| desired_currency | string | required |
| company_owner_name | string | required |
| company_owner_email | string | required |
| registration_number | string | optional |
| bank_account_details | object | optional |
| terms_of_service_accepted_at | string | required |
Created
Bad Request
Forbidden
Conflict
Unprocessable Entity
Unprocessable Entity
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 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/companies/{company_id}
/v1/companies/{company_id}
Given an ID and a request object with new information, updates a company.
active statusIf you created a company using the
create a company endpoint 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”:
address, with valid address, postal_code, country and state parameters (Varies by country. Use thetax_number or registration_number is not nilname is not nil (already required when creating the company)desired_currency in their bank account (already required when creating the company)| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | required | string | Company ID |
Update Company params
application/json
UpdateCompanyParams
| Property | Type | Required |
|---|---|---|
| name | string | optional |
| tax_number | string | optional |
| country_code | string | optional |
| phone_number | string | optional |
| address_details | object | optional |
| desired_currency | string | optional |
| registration_number | string | optional |
| bank_account_details | object | optional |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
PATCH /v1/companies/{company_id}
/v1/companies/{company_id}
Given an ID and a request object with new information, updates a company.
active statusIf you created a company using the
create a company endpoint 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”:
address, with valid address, postal_code, country and state parameters (Varies by country. Use thetax_number or registration_number is not nilname is not nil (already required when creating the company)desired_currency in their bank account (already required when creating the company)| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | path | required | string | Company ID |
Update Company params
application/json
UpdateCompanyParams
| Property | Type | Required |
|---|---|---|
| name | string | optional |
| tax_number | string | optional |
| country_code | string | optional |
| phone_number | string | optional |
| address_details | object | optional |
| desired_currency | string | optional |
| registration_number | string | optional |
| bank_account_details | object | optional |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
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 |
Success
Not Found
Unprocessable Entity
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).
Create Company Department request params
application/json
CreateCompanyDepartmentParams
| Property | Type | Required |
|---|---|---|
| name | string | required |
| company_id | string | required |
Created
Not Found
Unprocessable Entity
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 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/company-managers
/v1/company-managers
Create a Company Manager and sends the invitation email for signing in to the Remote Platform.
Company Manager params
application/json
CompanyManagerParams
| Property | Type | Required |
|---|---|---|
| name | string | required |
| role | string | required |
| string | required | |
| company_id | string | optional |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
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 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
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 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/company-managers/{user_id}
/v1/contract-amendments
List Contract Amendment requests.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Number of items per page |
Success
Unauthorized
Not Found
Unprocessable Entity
GET /v1/contract-amendments
/v1/contract-amendments
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 category.
Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.
Contract Amendment
application/json
CreateContractAmendmentParams
| Property | Type | Required |
|---|---|---|
| employment_id | string | required |
| contract_amendment | object | required |
| amendment_contract_id | string | required |
Success
Unauthorized
Not Found
Unprocessable Entity
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 category.
Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.
Contract Amendment
application/json
CreateContractAmendmentParams
| Property | Type | Required |
|---|---|---|
| employment_id | string | required |
| contract_amendment | object | required |
| amendment_contract_id | string | required |
Success
Unauthorized
Not Found
Unprocessable Entity
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.
Contract Amendment Form
application/json
ContractAmendmentSchemaParams
| Property | Type | Required |
|---|---|---|
| form | string | optional |
| country_code | string | required |
| employment_id | string | required |
Success
Unauthorized
Not Found
Unprocessable Entity
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 |
Success
Unauthorized
Not Found
Unprocessable Entity
GET /v1/contract-amendments/{id}
/v1/cost-calculator/countries
Lists active and processing countries
Success
GET /v1/cost-calculator/countries
/v1/cost-calculator/estimation
Estimate params
application/json
CostCalculatorEstimateParams
| Property | Type | Required |
|---|---|---|
| employments | array | required |
| └ age | integer | optional |
| └ title | string | optional |
| └ region_slug | string | required |
| └ employment_term | string | optional |
| └ annual_gross_salary | integer | optional |
| └ regional_to_employer_exchange_rate | string | optional |
| └ annual_gross_salary_in_employer_currency | integer | optional |
| include_benefits | boolean | optional |
| employer_currency_slug | string | required |
| include_cost_breakdowns | boolean | optional |
Success
Not Found
Unprocessable Entity
Internal Server Error
POST /v1/cost-calculator/estimation
/v1/cost-calculator/estimation-pdf
Estimate params
application/json
CostCalculatorEstimateParams
| Property | Type | Required |
|---|---|---|
| employments | array | required |
| └ age | integer | optional |
| └ title | string | optional |
| └ region_slug | string | required |
| └ employment_term | string | optional |
| └ annual_gross_salary | integer | optional |
| └ regional_to_employer_exchange_rate | string | optional |
| └ annual_gross_salary_in_employer_currency | integer | optional |
| include_benefits | boolean | optional |
| employer_currency_slug | string | required |
| include_cost_breakdowns | boolean | optional |
Success
Not Found
Unprocessable Entity
Internal Server Error
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 |
Success
Unauthorized
Internal Server Error
GET /v1/cost-calculator/regions/{slug}/fields
/v1/countries
Returns a list of all countries that are supported by Remote API alphabetically ordered. The supported list accounts for creating employment with basic information and it does not imply fully onboarding employment via JSON Schema.
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/countries
/v1/countries/{country_code}/holidays/{year}
List all holidays of a country for a specific year. Optionally, it can be filtered by country subdivision.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| country_code | path | required | string | Country code according to ISO 3166-1 3-digit alphabetic codes |
| year | path | required | string | Year for the holidays |
| country_subdivision_code | query | optional | string | Country subdivision code according to ISO 3166-2 codes |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/countries/{country_code}/holidays/{year}
/v1/countries/{country_code}/{form}
Returns the json schema of a supported form. Possible form names are:
- address_details
- administrative_details
- bank_account_details
- employment_basic_information
- billing_address_details
- contract_details
- emergency_contact
- employment_document_details
- personal_details
- pricing_plan_details
This endpoint requires a company access token, as forms are dependent on certain
properties of companies and their current employments.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| country_code | path | required | string | Country code according to ISO 3-digit alphabetic codes |
| form | path | required | string | Name of the desired form |
| employment_id | query | optional | string | Required for |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Unprocessable Entity
GET /v1/countries/{country_code}/{form}
/v1/custom-fields
Returns custom fields definitions
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/custom-fields
/v1/custom-fields/{custom_field_id}/values/{employment_id}
Returns a custom field value for a given employment
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| custom_field_id | path | required | string | Custom field ID |
| employment_id | path | required | string | Employment ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/custom-fields/{custom_field_id}/values/{employment_id}
/v1/employment-contracts
Get the employment contract history (list of all contracts active or not) for a given employment.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | query | required | string | Employment ID |
Success
Unauthorized
Forbidden
Not Found
Unprocessable Entity
GET /v1/employment-contracts
/v1/employment-contracts/{employment_id}/pending-changes
Get all the pending changes (waiting for aproval or signature) for the employment contract.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
Success
Unauthorized
Forbidden
Not Found
Unprocessable Entity
GET /v1/employment-contracts/{employment_id}/pending-changes
/v1/employments
Lists all employments, except for the deleted ones.
This endpoint requires and returns country-specific data. The exact required and returned fields will
vary depending on which country the employment is in. To see the list of parameters for each country,
see the Show form schema endpoint under the Countries category.
Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| company_id | query | optional | string | Company ID |
| query | optional | string | Filters the results by employments whose login email matches the value |
|
| status | query | optional | string | Filters the results by employments whose status matches the value |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/employments
/v1/employments
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 category.
Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.
Employment params
application/json
EmploymentBasicParams
| Property | Type | Required |
|---|---|---|
| type | string | optional |
| full_name | string | required |
| job_title | string | required |
| country_code | string | required |
| personal_email | string | required |
| basic_information | object | optional |
| └ name | string | optional |
| string | optional | |
| └ job_title | string | optional |
| └ has_seniority_date | string | optional |
| └ provisional_start_date | string | optional |
| provisional_start_date | string | optional |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
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 category.
Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/employments/{employment_id}
/v1/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 category.
Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.
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 |
Employment params
application/json
EmploymentFullParams
| Property | Type | Required |
|---|---|---|
| manager | string | optional |
| full_name | string | required |
| job_title | string | required |
| company_id | string | optional |
| country_code | string | required |
| department_id | string | optional |
| personal_email | string | required |
| address_details | object | optional |
| contract_details | object | optional |
| personal_details | object | optional |
| basic_information | object | optional |
| └ name | string | optional |
| string | optional | |
| └ job_title | string | optional |
| └ has_seniority_date | string | optional |
| └ provisional_start_date | string | optional |
| bank_account_details | object | optional |
| pricing_plan_details | object | optional |
| └ frequency | string | optional |
| administrative_details | object | optional |
| provisional_start_date | string | optional |
| billing_address_details | object | optional |
| emergency_contact_details | object | optional |
Success
Bad Request
Unauthorized
Not Found
Conflict
Unprocessable Entity
Too many requests
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 category.
Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.
If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.
For more information on JSON Schemas, see the How JSON Schemas work documentation.
To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.
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 |
Employment params
application/json
EmploymentFullParams
| Property | Type | Required |
|---|---|---|
| manager | string | optional |
| full_name | string | required |
| job_title | string | required |
| company_id | string | optional |
| country_code | string | required |
| department_id | string | optional |
| personal_email | string | required |
| address_details | object | optional |
| contract_details | object | optional |
| personal_details | object | optional |
| basic_information | object | optional |
| └ name | string | optional |
| string | optional | |
| └ job_title | string | optional |
| └ has_seniority_date | string | optional |
| └ provisional_start_date | string | optional |
| bank_account_details | object | optional |
| pricing_plan_details | object | optional |
| └ frequency | string | optional |
| administrative_details | object | optional |
| provisional_start_date | string | optional |
| billing_address_details | object | optional |
| emergency_contact_details | object | optional |
Success
Bad Request
Unauthorized
Not Found
Conflict
Unprocessable Entity
Too many requests
PUT /v1/employments/{employment_id}
/v1/employments/{employment_id}/invite
Invite an employment to start the self-enrollment.
Requirements for the invitation to succeed:
contract_details and pricing_plan_detailsprovisional_start_date must consider the minimum onbaording time of the employment’s countryIf 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 |
Success
Bad Request
Conflict
Unprocessable Entity
Unprocessable Entity
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
Employment slug
application/json
CompleteOnboarding
| Property | Type | Required |
|---|---|---|
| employment_id | string | optional |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
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 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/expenses
/v1/expenses
Creates an approved expense
Expenses
application/json
ParamsToCreateExpense
| Property | Type | Required |
|---|---|---|
| title | string | required |
| amount | integer | required |
| receipt | object | optional |
| └ name | string | required |
| └ content | string | required |
| category | string | optional |
| currency | string | required |
| receipts | array | optional |
| └ name | string | required |
| └ content | string | required |
| timezone | string | optional |
| tax_amount | integer | optional |
| reviewed_at | string | optional |
| reviewer_id | string | optional |
| expense_date | string | required |
| employment_id | string | required |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
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 |
Success
Bad Request
Unauthorized
Forbidden
Not Found
Unprocessable Entity
Unprocessable Entity
Internal Server Error
GET /v1/expenses/{expense_id}/receipts/{receipt_id}
/v1/expenses/{id}
Shows a single expense record
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Expense ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/expenses/{id}
/v1/expenses/{id}
Updates an expense
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Expense ID |
Expenses
application/json
UpdateExpenseParams
Success
Bad Request
Unauthorized
Not Found
Conflict
Unprocessable Entity
Too many requests
PATCH /v1/expenses/{id}
/v1/expenses/{id}
Updates an expense
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Expense ID |
Expenses
application/json
UpdateExpenseParams
Success
Bad Request
Unauthorized
Not Found
Conflict
Unprocessable Entity
Too many requests
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.
The file to be uploaded
multipart/form-data
FileParams
| Property | Type | Required |
|---|---|---|
| file | string | required |
| type | string | required |
| employment_id | string | required |
Created
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
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 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/files/{id}
/v1/identity/current
Shows information about the entities that can be controlled by the current auth token.
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/identity/current
/v1/identity-verification/{employment_id}
Gets necessary information to perform the identity verification of an employee.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | path | required | string | Employment ID |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/identity-verification/{employment_id}
/v1/incentives
Lists all Incentives of a company
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| employment_id | query | optional | string | Filter by Employment ID |
| status | query | optional | string | Filter by Incentive status |
| recurring_incentive_id | query | optional | string | Filter by Recurring Incentive id |
| page | query | optional | integer | Starts fetching records after the given page |
| page_size | query | optional | integer | Change the amount of records returned per page, defaults to 20, limited to 100 |
Success
Bad Request
Unauthorized
Not Found
Unprocessable Entity
Too many requests
GET /v1/incentives
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
}