Talent is everywhere. Opportunity is not. Remote's mission is to create opportunity everywhere, empowering employers to find and hire the best talent, and enabling individuals to build financial and personal freedom.
Remote is a Global HR Platform that helps companies hire, manage, and pay their entire team — and more effectively compete in the modern global economy through our comprehensive set of core solutions including, HRIS, payroll, international employment, contractor management, and more.
Whether you're just starting your global journey, or looking to optimize your existing operations, sign up or book a demo - and see how Remote makes global HR simple.
- Requirements
- Installation
- Getting Started
- Async
- Raw HTTP Response
- Reference
remote.benefits_country_summary.list_summary
remote.billing_documents.download_pdf
remote.billing_documents.list
remote.billing_documents.show_details
remote.companies.create_new_company
- Creating a company with only the required request body parameters
- Accepting the Terms of Service
remote.companies.list_all
remote.companies.show_company
remote.companies.update_company
- Getting a company and its owner to
active
status remote.companies.update_company_0
- Getting a company and its owner to
active
status remote.company_department.create_new_department
remote.company_department.list
remote.company_managers.create_invite
remote.company_managers.delete_user
remote.company_managers.list_managers
remote.company_managers.show_user
remote.contract_amendments.approve_amendment
remote.contract_amendments.check_automatability
remote.contract_amendments.create_request
remote.contract_amendments.get_form_schema
remote.contract_amendments.list_requests
remote.contract_amendments.show_single_request
remote.cost_calculator.create_employment_estimation
remote.cost_calculator.generate_estimation_pdf
remote.cost_calculator.list_countries
remote.cost_calculator.show_region_fields
remote.countries.get_form_schema
remote.countries.list_alphabetically
remote.countries.list_holidays_by_year
remote.custom_fields.list_definitions
remote.custom_fields.show_value
remote.employment_contracts.get_pending_changes
remote.employments.complete_onboarding
remote.employments.create_employment
remote.employments.get_employment_info
remote.employments.invite_start_enrollment
remote.employments.list_all
remote.employments.update_data
remote.employments.update_details
remote.expenses.create_approved_expense
remote.expenses.download_receipt
remote.expenses.download_receipt_by_id
remote.expenses.list_records
remote.expenses.show_record
remote.expenses.update_expense
remote.expenses.update_record
remote.files.download_file
remote.files.upload_employment_file
remote.identity.get_token_info
remote.incentives.create_incentive
remote.incentives.list_all
remote.incentives.remove_incentive
remote.incentives.show_details
remote.incentives.update_incentive
remote.incentives.update_incentive_0
remote.o_auth2.exchange_token
remote.offboarding.create_request
remote.offboarding.list_requests
remote.offboarding.show_request
remote.payslips.download_pdf
remote.payslips.list_all
remote.payslips.show_payslip
remote.recurring_incentives.create_monthly_incentive
remote.recurring_incentives.delete_scheduled
remote.recurring_incentives.list_incentives
remote.resignation.download_letter
remote.sandbox.create_employment_without_validations
remote.sandbox.employment_update
remote.sandbox.trigger_webhook_callback
remote.sandbox.update_employment_state
remote.time_off.get_record
remote.time_off.list_records
remote.time_off.list_types
remote.time_off.record_create
remote.time_off.update_record
remote.time_off.update_record_0
remote.time_off_balances.show_balance
remote.webhook_callbacks.delete_callback
remote.webhook_callbacks.register_callback
Python >=3.7
from pprint import pprint
from remote_python_sdk import Remote, ApiException
remote = Remote(
client_id = 'YOUR_CLIENT_ID',
client_secret = 'YOUR_CLIENT_SECRET',,
client_id = 'YOUR_CLIENT_ID',
client_secret = 'YOUR_CLIENT_SECRET',
)
try:
# List Benefits Country Summary
list_summary_response = remote.benefits_country_summary.list_summary()
print(list_summary_response)
except ApiException as e:
print("Exception when calling BenefitsCountrySummaryApi.list_summary: %s\n" % e)
pprint(e.body)
if e.status == 422:
if e.status == 404:
pprint(e.body["message"])
pprint(e.headers)
pprint(e.status)
pprint(e.reason)
pprint(e.round_trip_time)
async
support is available by prepending a
to any method.
import asyncio
from pprint import pprint
from remote_python_sdk import Remote, ApiException
remote = Remote(
client_id = 'YOUR_CLIENT_ID',
client_secret = 'YOUR_CLIENT_SECRET',,
client_id = 'YOUR_CLIENT_ID',
client_secret = 'YOUR_CLIENT_SECRET',
)
async def main():
try:
# List Benefits Country Summary
list_summary_response = await remote.benefits_country_summary.alist_summary()
print(list_summary_response)
except ApiException as e:
print("Exception when calling BenefitsCountrySummaryApi.list_summary: %s\n" % e)
pprint(e.body)
if e.status == 422:
if e.status == 404:
pprint(e.body["message"])
pprint(e.headers)
pprint(e.status)
pprint(e.reason)
pprint(e.round_trip_time)
asyncio.run(main())
To access raw HTTP response values, use the .raw
namespace.
from pprint import pprint
from remote_python_sdk import Remote, ApiException
remote = Remote(
client_id = 'YOUR_CLIENT_ID',
client_secret = 'YOUR_CLIENT_SECRET',,
client_id = 'YOUR_CLIENT_ID',
client_secret = 'YOUR_CLIENT_SECRET',
)
try:
# List Benefits Country Summary
list_summary_response = remote.benefits_country_summary.raw.list_summary()
pprint(list_summary_response.body)
pprint(list_summary_response.body["data"])
pprint(list_summary_response.headers)
pprint(list_summary_response.status)
pprint(list_summary_response.round_trip_time)
except ApiException as e:
print("Exception when calling BenefitsCountrySummaryApi.list_summary: %s\n" % e)
pprint(e.body)
if e.status == 422:
if e.status == 404:
pprint(e.body["message"])
pprint(e.headers)
pprint(e.status)
pprint(e.reason)
pprint(e.round_trip_time)
List benefits summary for each country with the number of enrolled employees.
list_summary_response = remote.benefits_country_summary.list_summary()
ListBenefitsCountrySummaryResponse
/v1/benefits/country-summary
get
Downloads a billing document PDF
download_pdf_response = remote.billing_documents.download_pdf(
billing_document_id="93t3j-billing-doc-id-9suej43",
)
The billing document's ID
/v1/billing-documents/{billing_document_id}/pdf
get
List billing documents for a company
list_response = remote.billing_documents.list(
period="\"2023-01\"",
page=1,
page_size=30,
)
The month for the billing documents (in ISO-8601 format)
Starts fetching records after the given page
Change the amount of records returned per page, defaults to 20, limited to 100
/v1/billing-documents
get
Shows a billing document details.
Please contact api-support@remote.com to request access to this endpoint.
show_details_response = remote.billing_documents.show_details(
billing_document_id="93t3j-billing-doc-id-9suej43",
)
The billing document's ID
/v1/billing-documents/{billing_document_id}
get
Creates a new company.
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 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.
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".
create_new_company_response = remote.companies.create_new_company(
company_owner_email="ceo@techvision.com",
company_owner_name="Joe Smith",
country_code="USA",
desired_currency="USD",
name="Tech Vision",
terms_of_service_accepted_at="1970-01-01T00:00:00.00Z",
address_details={},
bank_account_details={},
email_domain="string_example",
external_id="00001111",
phone_number="+11123123456",
registration_number="string_example",
tax_number="123456789",
action="get_oauth_access_tokens,send_create_password_email",
)
The company owner email. This value cannot be changed once set.
The company owner name. This value cannot be changed from the Remote API once set.
3-letter country code of the country the company address is located in. For a list of countries supported through the Remote API, make a call to the list countries endpoint. This endpoint will also include the 3-letter country codes you can use for this field.
Desired currency for invoicing and displaying converted salaries in Remote UI regardless of the employee's country.
The company name
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
Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint. Use the desired country and address_details
as the form name for the placeholders. The response complies with the JSON Schema specification.
Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint. Use the desired country and bank_account_details
as the form name for the placeholders. The response complies with the JSON Schema specification.
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.
Id of the company as represented in the external partner system.
A phone number the company can be contacted with.
The company registration number. This field or tax_number
(but not both) should be submitted.
The tax identifier of the company. This field or registration_number
(but not both) should be submitted.
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
CreateCompanyParams
Create Company params
/v1/companies
post
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.
list_all_response = remote.companies.list_all()
/v1/companies
get
Given an ID, shows a company
show_company_response = remote.companies.show_company(
company_id="0a8s2d1-company-id-2e3f4th",
)
Company ID
/v1/companies/{company_id}
get
Given an ID and a request object with new information, updates a company.
If 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":
- Complete
address
, with validaddress
,postal_code
,country
andstate
parameters (Varies by country. Use the show form schema endpoint to see which address parameters are required). - Company
tax_number
orregistration_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)
update_company_response = remote.companies.update_company(
company_id="0a8s2d1-company-id-2e3f4th",
address_details={},
bank_account_details={},
country_code="USA",
desired_currency="USD",
name="Tech Vision",
phone_number="+11123123456",
registration_number="string_example",
tax_number="123456789",
)
Company ID
Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint. Use the desired country and address_details
as the form name for the placeholders. The response complies with the JSON Schema specification.
Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint. Use the desired country and bank_account_details
as the form name for the placeholders. The response complies with the JSON Schema specification.
Country of company address
Desired currency for invoicing and displaying converted salaries in Remote UI regardless of the employee's country. This field is only accepted if company is in status pending
. Please contact Remote if you wish to update it.
This field is only accepted if company is in status pending
. Please contact Remote if you wish to update it.
A phone number the company can be contacted with.
The company registration number. This field or tax_number (but not both) should be submitted. This field is only accepted if company is in status pending
.
The tax identifier of the company. This field or registration_number (but not both) should be submitted. This field is only accepted if company is in status pending
.
UpdateCompanyParams
Update Company params
/v1/companies/{company_id}
put
Given an ID and a request object with new information, updates a company.
If 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":
- Complete
address
, with validaddress
,postal_code
,country
andstate
parameters (Varies by country. Use the show form schema endpoint to see which address parameters are required). - Company
tax_number
orregistration_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)
update_company_0_response = remote.companies.update_company_0(
company_id="0a8s2d1-company-id-2e3f4th",
address_details={},
bank_account_details={},
country_code="USA",
desired_currency="USD",
name="Tech Vision",
phone_number="+11123123456",
registration_number="string_example",
tax_number="123456789",
)
Company ID
Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint. Use the desired country and address_details
as the form name for the placeholders. The response complies with the JSON Schema specification.
Fields can vary depending on the country. Please, check the required fields structure using the Show form schema endpoint. Use the desired country and bank_account_details
as the form name for the placeholders. The response complies with the JSON Schema specification.
Country of company address
Desired currency for invoicing and displaying converted salaries in Remote UI regardless of the employee's country. This field is only accepted if company is in status pending
. Please contact Remote if you wish to update it.
This field is only accepted if company is in status pending
. Please contact Remote if you wish to update it.
A phone number the company can be contacted with.
The company registration number. This field or tax_number (but not both) should be submitted. This field is only accepted if company is in status pending
.
The tax identifier of the company. This field or registration_number (but not both) should be submitted. This field is only accepted if company is in status pending
.
UpdateCompanyParams
Update Company params
/v1/companies/{company_id}
patch
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_new_department_response = remote.company_department.create_new_department(
company_id="669f9e18-889f-4c2c-95b8-67795a3113cc",
name="Marketing",
)
The Company ID. Required in all cases, whether the API credentials have access to multiple companies or just one.
The name of the company department. May be non-unique and limited to 255 characters, maximum.
CreateCompanyDepartmentParams
Create Company Department request params
CompanyDepartmentCreatedResponse
/v1/company-departments
post
Lists all departments for the authorized company specified in the request.
list_response = remote.company_department.list(
company_id="d2091b1e-b1a4-437a-91ea-2809ffbb6d59",
paginate=False,
page=1,
page_size=20,
)
Company ID
Paginate option. Default: true. When true, paginates response; otherwise, does not.
Starts fetching records after the given page
Number of items per page
ListCompanyDepartmentsPaginatedResponse
/v1/company-departments
get
Create a Company Manager and sends the invitation email for signing in to the Remote Platform.
create_invite_response = remote.company_managers.create_invite(
email="string_example",
name="string_example",
role="string_example",
company_id="string_example",
)
The work email of the company manager
The name of the company manager
The role assigned for the new manager. The value should be one of the following: - admin
: an Admin can manage most of the resources in remote. - onboarding_manager
: an Onboarding Manager can add, see and manage new hires. - 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.
The Company ID. Required if the access token can access multiple companies. Optional otherwise.
CompanyManagerParams
Company Manager params
/v1/company-managers
post
Deletes a Company Manager user
delete_user_response = remote.company_managers.delete_user(
user_id="1a8s2d1-user-id-2e3f4tz",
)
User ID
/v1/company-managers/{user_id}
delete
List all company managers of an integration. If filtered by the company_id param, it lists only company managers belonging to the specified company.
list_managers_response = remote.company_managers.list_managers(
company_id="0a8s2d1-company-id-2e3f4th",
page=1,
page_size=30,
)
A Company ID to filter the results (only applicable for Integration Partners).
Starts fetching records after the given page
Change the amount of records returned per page, defaults to 20, limited to 100
/v1/company-managers
get
Shows a single company manager user
show_user_response = remote.company_managers.show_user(
user_id="1a8s2d1-user-id-2e3f4tz",
)
User ID
/v1/company-managers/{user_id}
get
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.
approve_amendment_response = remote.contract_amendments.approve_amendment(
contract_amendment_request_id="6d947344-b053-4a4f-acf0-79d296cbd082",
)
Contract amendment request ID
/v1/sandbox/contract-amendments/{contract_amendment_request_id}/approve
put
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.
check_automatability_response = remote.contract_amendments.check_automatability(
amendment_contract_id="c15993d8-aa8a-4fbb-b395-8b7a54f57db1",
contract_amendment={},
employment_id="e31adae1-company-id-af5fba7dd803",
)
The contract ID of the contract that needs to be amended.
Contract amendment informations. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code, contract_amendment
and the employment ID as request body.
The employment ID that is related to the contract amendment request.
CreateContractAmendmentParams
Contract Amendment Params
ContractAmendmentAutomatableResponse
/v1/contract-amendments/automatable
post
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.
create_request_response = remote.contract_amendments.create_request(
amendment_contract_id="c15993d8-aa8a-4fbb-b395-8b7a54f57db1",
contract_amendment={},
employment_id="e31adae1-company-id-af5fba7dd803",
)
The contract ID of the contract that needs to be amended.
Contract amendment informations. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code, contract_amendment
and the employment ID as request body.
The employment ID that is related to the contract amendment request.
CreateContractAmendmentParams
Contract Amendment
/v1/contract-amendments
post
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.
get_form_schema_response = remote.contract_amendments.get_form_schema(
country_code="string_example",
employment_id="string_example",
form="contract_amendment",
)
Country code according to ISO 3-digit alphabetic codes.
The ID of the employment concerned by the contract amendment request.
Name of the desired form
ContractAmendmentSchemaParams
Contract Amendment Form
/v1/contract-amendments/schema
post
List Contract Amendment requests.
list_requests_response = remote.contract_amendments.list_requests()
/v1/contract-amendments
get
Show a single Contract Amendment request.
show_single_request_response = remote.contract_amendments.show_single_request(
id="93t3j-contract_amendment_id-9suej43",
)
Contract amendment request ID
/v1/contract-amendments/{id}
get
Creates a cost estimation of employments
create_employment_estimation_response = remote.cost_calculator.create_employment_estimation(
employer_currency_slug="663e0b79-c893-45ff-a1b2-f6dcabc098b5",
employments=[
{
"employment_term": "fixed",
"region_slug": "region_slug_example",
}
],
include_benefits=True,
include_cost_breakdowns=True,
)
Currency Slug
CostCalculatorEstimateParams
Estimate params
CostCalculatorEstimateResponse
/v1/cost-calculator/estimation
post
Creates a cost estimation of employments
generate_estimation_pdf_response = remote.cost_calculator.generate_estimation_pdf(
employer_currency_slug="663e0b79-c893-45ff-a1b2-f6dcabc098b5",
employments=[
{
"employment_term": "fixed",
"region_slug": "region_slug_example",
}
],
include_benefits=True,
include_cost_breakdowns=True,
)
Currency Slug
CostCalculatorEstimateParams
Estimate params
CostCalculatorEstimatePDFResponse
/v1/cost-calculator/estimation-pdf
post
Lists active and processing countries
list_countries_response = remote.cost_calculator.list_countries()
CostCalculatorListCountryResponse
/v1/cost-calculator/countries
get
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.
show_region_fields_response = remote.cost_calculator.show_region_fields(
slug="slug_example",
)
Slug
/v1/cost-calculator/regions/{slug}/fields
get
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.
get_form_schema_response = remote.countries.get_form_schema(
country_code="PRT",
form="address_details",
employment_id="663e0b79-c893-45ff-a1b2-f6dcabc098b5",
)
Country code according to ISO 3-digit alphabetic codes
Name of the desired form
Required for contract_amendment
form
/v1/countries/{country_code}/{form}
get
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.
list_alphabetically_response = remote.countries.list_alphabetically()
/v1/countries
get
List all holidays of a country for a specific year. Optionally, it can be filtered by country subdivision.
list_holidays_by_year_response = remote.countries.list_holidays_by_year(
country_code="PRT",
year="2022",
country_subdivision_code="PT-10",
)
Country code according to ISO 3166-1 3-digit alphabetic codes
Year for the holidays
Country subdivision code according to ISO 3166-2 codes
/v1/countries/{country_code}/holidays/{year}
get
Returns custom fields definitions
list_definitions_response = remote.custom_fields.list_definitions(
page=1,
page_size=30,
)
Starts fetching records after the given page
Change the amount of records returned per page, defaults to 20, limited to 100
ListEmploymentCustomFieldsResponse
/v1/custom-fields
get
Returns a custom field value for a given employment
show_value_response = remote.custom_fields.show_value(
custom_field_id="custom_field_id_example",
employment_id="employment_id_example",
)
Custom field ID
Employment ID
EmploymentCustomFieldValueResponse
/v1/custom-fields/{custom_field_id}/values/{employment_id}
get
Get all the pending changes (waiting for aproval or signature) for the employment contract.
get_pending_changes_response = remote.employment_contracts.get_pending_changes(
employment_id="93t3j-employment_id-9suej43",
)
Employment ID
EmploymentContractPendingChangesResponse
/v1/employment-contracts/{employment_id}/pending-changes
get
Completes the employee onboarding. When all tasks are completed, the employee is marked as in review
status
complete_onboarding_response = remote.employments.complete_onboarding(
employment_id="string_example",
)
CompleteOnboarding
Employment slug
/v1/ready
post
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.
create_employment_response = remote.employments.create_employment(
country_code="string_example",
full_name="string_example",
job_title="string_example",
personal_email="string_example",
basic_information={},
company_id="string_example",
type="employee",
provisional_start_date="Fri Jul 02 17:00:00 PDT 2021",
seniority_date="2022-03-21",
)
Employment basic information. When using this field, the same other root level fields (name, personal_email, job_title, provisional_start_date, and seniority_date) will be ignored. Its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and employment_basic_information
as path parameters.
This optional field is deprecated.
If not provided, it will default to employee
.
Indicates the expected start date of the employee or contractor. Required for employees, but optional for contractors. Date format is in ISO8601 without the time component. See the Date and Time Format documentation for more details on how the Remote API works with dates.
The date the employee first started working for your company. If you don’t include a seniority date, the employee’s start date with Remote will be deemed as the start of the employee’s seniority. Example: Your employee started working for your company on Feb 1, 2022. On Aug 1, 2022, you transferred the employee to Remote and started managing them on the platform. Feb 1, 2022 would be their seniority date. Aug 1, 2022 would be their starting date.
EmploymentBasicParams
Employment params
/v1/employments
post
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.
get_employment_info_response = remote.employments.get_employment_info(
employment_id="93t3j-employment-id-9suej43",
)
Employment ID
/v1/employments/{employment_id}
get
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
andpricing_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.
invite_start_enrollment_response = remote.employments.invite_start_enrollment(
employment_id="31b8e49b-aa1c-47af-849c-3d0a53e20e0d",
)
Employment ID
/v1/employments/{employment_id}/invite
post
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.
list_all_response = remote.employments.list_all(
company_id="93t3j-company-id-9suej43",
email="anna@example.com",
status="active",
page=1,
page_size=30,
)
Company ID
Filters the results by employments whose login email matches the value
Filters the results by employments whose status matches the value
Starts fetching records after the given page
Change the amount of records returned per page, defaults to 20, limited to 100
/v1/employments
get
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.
update_data_response = remote.employments.update_data(
full_name="string_example",
job_title="string_example",
personal_email="string_example",
employment_id="93t3j-employment-id-9suej43",
address_details={},
administrative_details={},
bank_account_details={},
billing_address_details={},
company_id="string_example",
contract_details={},
country={
"alpha_2_code": "PT",
"code": "PRT",
"name": "Portugal",
},
emergency_contact_details={},
manager_id="string_example",
personal_details={},
pricing_plan_details={
"frequency": "annually",
},
provisional_start_date="Fri Jul 02 17:00:00 PDT 2021",
seniority_date="2022-03-21",
basic_information={},
department_id="string_example",
)
Employment ID
Home address information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and address_details
as path parameters.
Administrative information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and administrative_details
as path parameters.
Bank account information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and bank_account_details
as path parameters.
Billing address information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and billing_address_details
as path parameters.
Contract information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and contract_details
as path parameters.
country: Country
emergency_contact_details: Dict[str, Union[bool, date, datetime, dict, float, int, list, str, None]]
Emergency contact information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and emergency_contact_details
as path parameters.
The user id of the manager, who should have an admin
, owner
or people_manager
role. You can find these users by querying the Company Managers endpoint. Update of this field is only available for active employments.
Personal details information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and personal_details
as path parameters.
pricing_plan_details: PricingPlanDetails
Indicates the expected start date of the employee or contractor. Required for employees, but optional for contractors. Date format is in ISO8601 without the time component. See the Date and Time Format documentation for more details on how the Remote API works with dates.
The date the employee first started working for your company. If you don’t include a seniority date, the employee’s start date with Remote will be deemed as the start of the employee’s seniority. Example: Your employee started working for your company on Feb 1, 2022. On Aug 1, 2022, you transferred the employee to Remote and started managing them on the platform. Feb 1, 2022 would be their seniority date. Aug 1, 2022 would be their starting date.
Employment basic information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and employment_basic_information
as path parameters.
The department of the employment. The department must belong to the same company as the employment.
EmploymentFullParams
Employment params
/v1/employments/{employment_id}
patch
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.
update_details_response = remote.employments.update_details(
full_name="string_example",
job_title="string_example",
personal_email="string_example",
employment_id="93t3j-employment-id-9suej43",
address_details={},
administrative_details={},
bank_account_details={},
billing_address_details={},
company_id="string_example",
contract_details={},
country={
"alpha_2_code": "PT",
"code": "PRT",
"name": "Portugal",
},
emergency_contact_details={},
manager_id="string_example",
personal_details={},
pricing_plan_details={
"frequency": "annually",
},
provisional_start_date="Fri Jul 02 17:00:00 PDT 2021",
seniority_date="2022-03-21",
basic_information={},
department_id="string_example",
)
Employment ID
Home address information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and address_details
as path parameters.
Administrative information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and administrative_details
as path parameters.
Bank account information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and bank_account_details
as path parameters.
Billing address information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and billing_address_details
as path parameters.
Contract information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and contract_details
as path parameters.
country: Country
emergency_contact_details: Dict[str, Union[bool, date, datetime, dict, float, int, list, str, None]]
Emergency contact information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and emergency_contact_details
as path parameters.
The user id of the manager, who should have an admin
, owner
or people_manager
role. You can find these users by querying the Company Managers endpoint. Update of this field is only available for active employments.
Personal details information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and personal_details
as path parameters.
pricing_plan_details: PricingPlanDetails
Indicates the expected start date of the employee or contractor. Required for employees, but optional for contractors. Date format is in ISO8601 without the time component. See the Date and Time Format documentation for more details on how the Remote API works with dates.
The date the employee first started working for your company. If you don’t include a seniority date, the employee’s start date with Remote will be deemed as the start of the employee’s seniority. Example: Your employee started working for your company on Feb 1, 2022. On Aug 1, 2022, you transferred the employee to Remote and started managing them on the platform. Feb 1, 2022 would be their seniority date. Aug 1, 2022 would be their starting date.
Employment basic information. As its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and employment_basic_information
as path parameters.
The department of the employment. The department must belong to the same company as the employment.
EmploymentFullParams
Employment params
/v1/employments/{employment_id}
put
Creates an approved expense
create_approved_expense_response = remote.expenses.create_approved_expense(
title="new keyboard",
amount=8000,
currency="EUR",
employment_id="d4ebc714-4950-47a9-a464-28e1f1ab2a90",
expense_date="2020-12-11",
category="home_office",
receipt={
"content": "[B@3e3f1dc1",
"name": "receipt.pdf",
},
receipts=[
{
"content": "[B@3e3f1dc1",
"name": "receipt.pdf",
}
],
reviewed_at="1970-01-01",
reviewer_id="14c14128-f5f4-475a-8ec0-6329b4832a61",
tax_amount=0,
timezone="Etc/UTC",
)
The three-letter code for the expense currency.
Examples: \\\"USD\\\"
, \\\"EUR\\\"
, \\\"CAD\\\"
The ID for the employment to which this expense relates.
Date of the purchase, which must be in the past
Categories allowed for an expense
receipt: Base64File
The date and time that the expense was reviewed in ISO8601 format. If not provided, it defaults to the current datetime.
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.
ParamsToCreateExpense
Expenses
/v1/expenses
post
Downloads an expense receipt.
Deprecated since late February 2024 in favour of Download a receipt by id endpoint.
download_receipt_response = remote.expenses.download_receipt(
expense_id="3ab2e491-ad1c-47af-849c-3d0a53e20e0d",
)
The expense ID
/v1/expenses/{expense_id}/receipt
get
Download a receipt by id.
download_receipt_by_id_response = remote.expenses.download_receipt_by_id(
expense_id="3ab2e491-ad1c-47af-849c-3d0a53e20e0d",
receipt_id="6ab2e49o-ad1c-47af-849c-3d0a53e21e0e",
)
The expense ID
The receipt ID
/v1/expenses/{expense_id}/receipts/{receipt_id}
get
Lists all expenses records
list_records_response = remote.expenses.list_records(
page=1,
page_size=30,
)
Starts fetching records after the given page
Change the amount of records returned per page, defaults to 20, limited to 100
/v1/expenses
get
Shows a single expense record
show_record_response = remote.expenses.show_record(
id="id_example",
)
Expense ID
/v1/expenses/{id}
get
Updates an expense
update_expense_response = remote.expenses.update_expense(
id="id_example",
status="declined",
reason="Expense not refundable",
)
Expense ID
Reason for declination.
UpdateExpenseParams
Expenses
/v1/expenses/{id}
put
Updates an expense
update_record_response = remote.expenses.update_record(
id="id_example",
status="declined",
reason="Expense not refundable",
)
Expense ID
Reason for declination.
UpdateExpenseParams
Expenses
/v1/expenses/{id}
patch
Downloads a file.
Please contact api-support@remote.com to request access to this endpoint.
download_file_response = remote.files.download_file(
id="93t3j-file-id-9suej43",
)
File ID
/v1/files/{id}
get
Uploads a file associated with a specified employment.
Please contact api-support@remote.com to request access to this endpoint.
upload_employment_file_response = remote.files.upload_employment_file(
employment_id="string_example",
file=open('/path/to/file', 'rb'),
type="string_example",
)
FileParams
The file to be uploaded
/v1/documents
post
Shows information about the entities that can be controlled by the current auth token.
get_token_info_response = remote.identity.get_token_info()
/v1/identity/current
get
Creates an Incentive.
Incentives use the currency of the employment specified provided in the employment_id
field.
create_incentive_response = remote.incentives.create_incentive(
amount=50000,
amount_tax_type="net",
effective_date="Sun Dec 19 16:00:00 PST 2021",
employment_id="string_example",
type="acting_up_allowance",
note="Bonus for moving start date to an earlier date",
)
The amount (in the currency of the employment) to be given to the employee. This field accepts fractional amounts as well. However to avoid precision issues and errors that can arise from storing fractional amounts, the Remote API only accepts currencies and their fractional amounts as integers. This means you should append fractional amounts to the end of the amount you're passing in with this field. For example, if the incentive you're offering is EUR 500.25, you would specify 50025
as the amount for this field.
amount_tax_type: AmountTaxType
The date at which the incentive should take effect. Note that the incentive is not paid out on the effective date, but during the next payroll cycle. The effective date determines which payroll cycle the incentive will be paid out in. The effective date needs to be today or a future date. Note for recurring incentives: since the months don't have the same amount of days, if day of month of effective_date
is one of [28, 29, 30, 31] it will be transformed to the last day of each month, avoiding the possibility of skipping a month in the recurrence.
CreateOneTimeIncentiveParams
Incentive
/v1/incentives
post
Lists all Incentives of a company
list_all_response = remote.incentives.list_all(
employment_id="93t3j-employment-id-9suej43",
status="paid",
recurring_incentive_id="2f900aaf-4952-4ec4-ac7c-2b917a2b4da9",
page=1,
page_size=30,
)
Filter by Employment ID
Filter by Incentive status
Filter by Recurring Incentive id
Starts fetching records after the given page
Change the amount of records returned per page, defaults to 20, limited to 100
/v1/incentives
get
Delete an incentive.
one_time
incentives that have the following status CANNOT be deleted:
processing
paid
remove_incentive_response = remote.incentives.remove_incentive(
id="id_example",
)
Incentive ID
/v1/incentives/{id}
delete
Show an Incentive's details
show_details_response = remote.incentives.show_details(
id="id_example",
)
Incentive ID
/v1/incentives/{id}
get
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.
update_incentive_response = remote.incentives.update_incentive(
id="id_example",
amount=50000,
amount_tax_type="net",
effective_date="Sun Dec 19 16:00:00 PST 2021",
note="Bonus for moving start date to an earlier date",
type="string_example",
)
Incentive ID
The amount (in the currency of the employment) to be given to the employee. This field accepts fractional amounts as well. However to avoid precision issues and errors that can arise from storing fractional amounts, the Remote API only accepts currencies and their fractional amounts as integers. This means you should append fractional amounts to the end of the amount you're passing in with this field. For example, if the incentive you're offering is EUR 500.25, you would specify 50025
as the amount for this field.
amount_tax_type: AmountTaxType
The date at which the incentive should take effect. Note that the incentive is not paid out on the effective date, but during the next payroll cycle. The effective date determines which payroll cycle the incentive will be paid out in. The effective date needs to be today or a future date. Note for recurring incentives: since the months don't have the same amount of days, if day of month of effective_date
is one of [28, 29, 30, 31] it will be transformed to the last day of each month, avoiding the possibility of skipping a month in the recurrence.
A valid type according to the payment frequency
UpdateIncentiveParams
Incentive
/v1/incentives/{id}
put
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.
update_incentive_0_response = remote.incentives.update_incentive_0(
id="id_example",
amount=50000,
amount_tax_type="net",
effective_date="Sun Dec 19 16:00:00 PST 2021",
note="Bonus for moving start date to an earlier date",
type="string_example",
)
Incentive ID
The amount (in the currency of the employment) to be given to the employee. This field accepts fractional amounts as well. However to avoid precision issues and errors that can arise from storing fractional amounts, the Remote API only accepts currencies and their fractional amounts as integers. This means you should append fractional amounts to the end of the amount you're passing in with this field. For example, if the incentive you're offering is EUR 500.25, you would specify 50025
as the amount for this field.
amount_tax_type: AmountTaxType
The date at which the incentive should take effect. Note that the incentive is not paid out on the effective date, but during the next payroll cycle. The effective date determines which payroll cycle the incentive will be paid out in. The effective date needs to be today or a future date. Note for recurring incentives: since the months don't have the same amount of days, if day of month of effective_date
is one of [28, 29, 30, 31] it will be transformed to the last day of each month, avoiding the possibility of skipping a month in the recurrence.
A valid type according to the payment frequency
UpdateIncentiveParams
Incentive
/v1/incentives/{id}
patch
Endpoint to exchange tokens in the Authorization Code, Client Credentials and Refresh Token flows
exchange_token_response = remote.o_auth2.exchange_token(
code="eyJhbG...xb6H0",
grant_type="refresh_token",
client_id="<client_id>",
refresh_token="b480036a-d229-49ef-a606-7e8fba58a5eb",
)
The authorization code generated in Authorization Code flow
The Authorization flow
The client id generated during registration
The refresh token generated in the Authorization Code flow
OAuth2TokenParams
OAuth2Token
/auth/oauth2/token
post
Creates an Offboarding request.
create_request_response = remote.offboarding.create_request(
employment_id="5e55386e-4f4f-4def-92f4-bdc19a5ce77d",
termination_details={
"additional_comments": "additional comments regarding the termination reason",
"confidential": False,
"proposed_termination_date": "Tue Dec 19 16:00:00 PST 2023",
"reason_description": "termination reason",
"risk_assessment_reasons": [
"caring_responsibilities"
],
"termination_reason": "workforce_reduction",
"will_challenge_termination": True,
"will_challenge_termination_description": "additional details for the offboarding risk assessment",
},
type="termination",
)
termination_details: TerminationDetailsParams
The type of the offboarding request. For now, only termination
is allowed.
CreateOffboardingParams
Incentive
/v1/offboardings
post
Lists Offboarding requests.
list_requests_response = remote.offboarding.list_requests(
employment_id="93t3j-employment-id-9suej43",
type="paid",
include_confidential="true",
page=1,
page_size=30,
)
Filter by Employment ID
Filter by offboarding type
By default, the results do not include confidential termination requests. Send include_confidential=true
to include confidential requests in the response.
Starts fetching records after the given page
Change the amount of records returned per page, defaults to 20, limited to 100
/v1/offboardings
get
Shows an Offboarding request.
show_request_response = remote.offboarding.show_request(
id="id_example",
)
Offboarding request ID
/v1/offboardings/{id}
get
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.
download_pdf_response = remote.payslips.download_pdf(
payslip_id="93t3j-payslip-id-9suej43",
)
Payslip ID
/v1/payslips/{payslip_id}/pdf
get
Lists all payslips belonging to a company. Can also filter for a single employment belonging to that company.
list_all_response = remote.payslips.list_all(
employment_id="93t3j-employment-id-9suej43",
start_date="\"2022-12-15\"",
end_date="\"2023-12-15\"",
expected_payout_start_date="\"2022-12-15\"",
expected_payout_end_date="\"2023-12-15\"",
page=1,
page_size=30,
)
Employment ID
Filters by payslips issued_at
field, after or on the same day than the given date
Filters by payslips issued_at
field, before or or the same day than the given date
Filters by payslips expected_payout_date
field, after or on the same day than the given date
Filters by payslips expected_payout_date
field, before or or the same day than the given date
Starts fetching records after the given page
Change the amount of records returned per page, defaults to 20, limited to 100
/v1/payslips
get
Given an ID, shows a payslip.
Please contact api-support@remote.com to request access to this endpoint.
show_payslip_response = remote.payslips.show_payslip(
id="93t3j-payslip-id-9suej43",
)
Payslip ID
/v1/payslips/{id}
get
Create a Recurring Incentive, that is, a monthly paid incentive.
Incentives use the currency of the employment specified provided in the employment_id
field.
create_monthly_incentive_response = remote.recurring_incentives.create_monthly_incentive(
amount=50000,
amount_tax_type="net",
effective_date="Sun Dec 19 16:00:00 PST 2021",
employment_id="string_example",
type="acting_up_allowance",
note="Bonus for moving start date to an earlier date",
duration_in_months="string_example",
)
The amount (in the currency of the employment) to be given to the employee. This field accepts fractional amounts as well. However to avoid precision issues and errors that can arise from storing fractional amounts, the Remote API only accepts currencies and their fractional amounts as integers. This means you should append fractional amounts to the end of the amount you're passing in with this field. For example, if the incentive you're offering is EUR 500.25, you would specify 50025
as the amount for this field.
amount_tax_type: AmountTaxType
The date at which the incentive should take effect. Note that the incentive is not paid out on the effective date, but during the next payroll cycle. The effective date determines which payroll cycle the incentive will be paid out in. The effective date needs to be today or a future date. Note for recurring incentives: since the months don't have the same amount of days, if day of month of effective_date
is one of [28, 29, 30, 31] it will be transformed to the last day of each month, avoiding the possibility of skipping a month in the recurrence.
How many times the payment will repeat. At the moment we only fully support monthly frequency. This field is only necessary if the recurring incentive has an end date.
CreateRecurringIncentiveParams
RecurringIncentive
/v1/incentives/recurring
post
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.
delete_scheduled_response = remote.recurring_incentives.delete_scheduled(
id="id_example",
)
Recurring Incentive ID
DeleteRecurringIncentiveResponse
/v1/incentives/recurring/{id}
delete
List all Recurring Incentives of a company.
list_incentives_response = remote.recurring_incentives.list_incentives(
status="active",
type="meal_allowance",
note="meal",
page=1,
page_size=30,
)
Filter by recurring incentive status: active or deactive.
Filter by recurring incentive type.
Filter by recurring incentives that contain the value in their notes.
Starts fetching records after the given page
Change the amount of records returned per page, defaults to 20, limited to 100
ListRecurringIncentivesResponse
/v1/incentives/recurring
get
Downloads a resignation letter from an employment request.
download_letter_response = remote.resignation.download_letter(
employment_request_id="3ab2e491-ad1c-47af-849c-3d0a53e20e0d",
)
The employment request ID
/v1/resignations/{employment_request_id}/resignation-letter
get
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
create_employment_without_validations_response = remote.sandbox.create_employment_without_validations(
country_code="string_example",
full_name="string_example",
job_title="string_example",
personal_email="string_example",
basic_information={},
company_id="string_example",
type="employee",
provisional_start_date="Fri Jul 02 17:00:00 PDT 2021",
seniority_date="2022-03-21",
)
Employment basic information. When using this field, the same other root level fields (name, personal_email, job_title, provisional_start_date, and seniority_date) will be ignored. Its properties may vary depending on the country, you must query the Show form schema endpoint passing the country code and employment_basic_information
as path parameters.
This optional field is deprecated.
If not provided, it will default to employee
.
Indicates the expected start date of the employee or contractor. Required for employees, but optional for contractors. Date format is in ISO8601 without the time component. See the Date and Time Format documentation for more details on how the Remote API works with dates.
The date the employee first started working for your company. If you don’t include a seniority date, the employee’s start date with Remote will be deemed as the start of the employee’s seniority. Example: Your employee started working for your company on Feb 1, 2022. On Aug 1, 2022, you transferred the employee to Remote and started managing them on the platform. Feb 1, 2022 would be their seniority date. Aug 1, 2022 would be their starting date.
EmploymentBasicParams
Employment params
/v1/sandbox/employments
post
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.
employment_update_response = remote.sandbox.employment_update(
employment_id="e3ee69d7-1293-4664-92fc-02625dae5247",
status="active",
)
Employment ID
status: EmploymentStatus
EmploymentUpdateParams
Employment params
/v1/sandbox/employments/{employment_id}
put
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.
trigger_webhook_callback_response = remote.sandbox.trigger_webhook_callback(
employment_id="e966a8b8-1076-11ee-a5f2-9b3997a968f6",
event_type="employment.onboarding_task.completed",
)
WebhookTriggerParams
Webhook Trigger Params
/v1/sandbox/webhook-callbacks/trigger
post
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.
update_employment_state_response = remote.sandbox.update_employment_state(
employment_id="e3ee69d7-1293-4664-92fc-02625dae5247",
status="active",
)
Employment ID
status: EmploymentStatus
EmploymentUpdateParams
Employment params
/v1/sandbox/employments/{employment_id}
patch
Shows a single Time Off record
get_record_response = remote.time_off.get_record(
id="93t3j-timeoff-id-9suej43",
)
Timeoff ID
/v1/timeoff/{id}
get
Lists all Time Off records.
list_records_response = remote.time_off.list_records(
employment_id="31b8e49b-aa1c-47af-849c-3d0a53e20e0d",
timeoff_type="sick_leave",
status="approved",
order="asc",
sort_by="timeoff_type",
page=1,
page_size=20,
)
Only show time off for a specific employment
timeoff_type: TimeoffType
Filter time off by its type
status: TimeoffStatus
Filter time off by its status
Sort order
Field to sort by
Starts fetching records after the given page
Number of items per page
/v1/timeoff
get
Lists all time off types that can be used for the timeoff_type
parameter
list_types_response = remote.time_off.list_types()
/v1/timeoff/types
get
Creates a Time Off record
record_create_response = remote.time_off.record_create(
approved_at="2021-07-15T18:18:17Z",
approver_id="51546f60-dd71-4223-9312-4efede68a497",
status="approved",
document={
"content": "content_example",
"name": "name_example",
},
employment_id="string_example",
end_date="string_example",
notes="string_example",
start_date="string_example",
timeoff_days=[
{
"day": "2021-07-01",
}
],
timeoff_type="sick_leave",
timezone="Etc/UTC",
)
UTC date time in [ISO 8601][] format. [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
approver_id: NullableApproverId
document: TimeoffDocumentParams
timeoff_type: TimeoffType
CreateApprovedTimeoffParams
Timeoff
/v1/timeoff
post
Updates a Time Off record. This endpoint can also be used for cancelling a time off.
update_record_response = remote.time_off.update_record(
cancel_reason="string_example",
edit_reason="string_example",
id="93t3j-timeoff-id-9suej43",
approved_at="2021-07-15T18:18:17Z",
approver_id="51546f60-dd71-4223-9312-4efede68a497",
document={
"content": "content_example",
"name": "name_example",
},
end_date="2021-07-01",
notes="string_example",
start_date="2021-07-01",
status="approved",
timeoff_days=[
{
"day": "2021-07-01",
}
],
timeoff_type="sick_leave",
timezone="Etc/UTC",
)
The reason for cancelling a time off. Required when updating to status cancelled
.
The reason for the update. Required when updating the time off data but not changing the status.
Timeoff ID
UTC date time in [ISO 8601][] format. [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
approver_id: NullableApproverId
document: TimeoffDocumentParams
UTC date in ISO 8601 format
UTC date in ISO 8601 format
timeoff_type: TimeoffType
UpdateApprovedTimeoffParams
UpdateTimeoff
/v1/timeoff/{id}
put
Updates a Time Off record. This endpoint can also be used for cancelling a time off.
update_record_0_response = remote.time_off.update_record_0(
cancel_reason="string_example",
edit_reason="string_example",
id="93t3j-timeoff-id-9suej43",
approved_at="2021-07-15T18:18:17Z",
approver_id="51546f60-dd71-4223-9312-4efede68a497",
document={
"content": "content_example",
"name": "name_example",
},
end_date="2021-07-01",
notes="string_example",
start_date="2021-07-01",
status="approved",
timeoff_days=[
{
"day": "2021-07-01",
}
],
timeoff_type="sick_leave",
timezone="Etc/UTC",
)
The reason for cancelling a time off. Required when updating to status cancelled
.
The reason for the update. Required when updating the time off data but not changing the status.
Timeoff ID
UTC date time in [ISO 8601][] format. [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
approver_id: NullableApproverId
document: TimeoffDocumentParams
UTC date in ISO 8601 format
UTC date in ISO 8601 format
timeoff_type: TimeoffType
UpdateApprovedTimeoffParams
UpdateTimeoff
/v1/timeoff/{id}
patch
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
.
show_balance_response = remote.time_off_balances.show_balance(
employment_id="03675381-50c9-492d-b8ed-e84e99046091",
)
Employment ID for which to show the time off balance
/v1/timeoff-balances/{employment_id}
get
Delete a callback previously registered for webhooks
delete_callback_response = remote.webhook_callbacks.delete_callback(
id="id_example",
)
Webhook Callback ID
/v1/webhook-callbacks/{id}
delete
Register a callback to be used for webhooks
register_callback_response = remote.webhook_callbacks.register_callback(
url="https://example.com/callback",
subscribed_events=[
"string_example"
],
)
subscribed_events: CreateWebhookCallbackParamsSubscribedEvents
CreateWebhookCallbackParams
WebhookCallback
/v1/webhook-callbacks
post
This Python package is automatically generated by Konfig