Remote Work Authorization API
The Work Authorization API from Remote — 2 operation(s) for work authorization.
The Work Authorization API from Remote — 2 operation(s) for work authorization.
openapi: 3.0.0
info:
title: Remote Address Details Work Authorization API
version: 0.1.0
servers:
- url: https://gateway.remote.com/
variables: {}
- url: https://gateway.remote-sandbox.com/
variables: {}
security:
- OAuth2: []
tags:
- name: Work Authorization
paths:
/v1/work-authorization-requests/{id}:
get:
callbacks: {}
deprecated: false
description: 'Show a single work authorization request.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage employments (`employments`) | View work authorizations (`work_authorization:read`) | Manage work authorizations (`work_authorization:write`) |
'
operationId: get_v1_work-authorization-requests_id
parameters:
- description: work authorization request ID
example: 2d3cfb38-27e7-42de-a43d-da23e3d4ffea
in: path
name: id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkAuthorizationRequestResponse'
description: Success
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- work_authorization:read
- work_authorization:write
- employments
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- work_authorization:read
- work_authorization:write
- employments
- all:write
- all:read
summary: Show work authorization request
tags:
- Work Authorization
patch:
callbacks: {}
deprecated: false
description: 'Updates a work authorization request.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage employments (`employments`) | - | Manage work authorizations (`work_authorization:write`) |
'
operationId: patch_v1_work-authorization-requests_id (2)
parameters:
- description: work authorization request ID
example: e2a7d189-1346-453a-9818-03772b716e48
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWorkAuthorizationRequestParams'
description: Work Authorization Request
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkAuthorizationRequestResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- work_authorization:write
- employments
- all:write
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- work_authorization:write
- employments
- all:write
summary: Update work authorization request
tags:
- Work Authorization
put:
callbacks: {}
deprecated: false
description: 'Updates a work authorization request.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage employments (`employments`) | - | Manage work authorizations (`work_authorization:write`) |
'
operationId: patch_v1_work-authorization-requests_id
parameters:
- description: work authorization request ID
example: e2a7d189-1346-453a-9818-03772b716e48
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWorkAuthorizationRequestParams'
description: Work Authorization Request
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkAuthorizationRequestResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- work_authorization:write
- employments
- all:write
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- work_authorization:write
- employments
- all:write
summary: Update work authorization request
tags:
- Work Authorization
/v1/work-authorization-requests:
get:
callbacks: {}
deprecated: false
description: 'List work authorization requests.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage employments (`employments`) | View work authorizations (`work_authorization:read`) | Manage work authorizations (`work_authorization:write`) |
'
operationId: get_v1_work-authorization-requests
parameters:
- description: Filter results on the given status
in: query
name: status
required: false
schema:
enum:
- pending
- cancelled
- declined_by_manager
- declined_by_remote
- approved_by_manager
- approved_by_remote
type: string
- description: Filter results on the given employment slug
in: query
name: employment_id
required: false
schema:
type: string
- description: Filter results on the given employee name
in: query
name: employee_name
required: false
schema:
type: string
- description: Sort order
example: asc
in: query
name: order
required: false
schema:
enum:
- asc
- desc
type: string
- description: Field to sort by
example: submitted_at
in: query
name: sort_by
required: false
schema:
enum:
- submitted_at
type: string
- description: Starts fetching records after the given page
example: 1
in: query
name: page
required: false
schema:
default: 1
minimum: 1
type: integer
- description: Number of items per page
example: 20
in: query
name: page_size
required: false
schema:
default: 20
maximum: 100
minimum: 1
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListWorkAuthorizationRequestsResponse'
description: Success
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
security:
- CustomerAPIToken:
- https://gateway.remote.com/company.manage
- work_authorization:read
- work_authorization:write
- employments
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- work_authorization:read
- work_authorization:write
- employments
- all:write
- all:read
summary: List work authorization requests
tags:
- Work Authorization
components:
schemas:
DateTimeIso8601:
description: 'UTC date time in [ISO 8601][] format.
[ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
'
example: '2021-07-15T18:18:17Z'
format: date-time
title: DateTimeIso8601
type: string
ActionError:
properties:
action:
description: The action that lead to the error message.
type: string
code:
description: An error code that describes the nature of the error.
type: string
message:
description: A developer friendly error message that gives details on what the error was and how it may be remedied.
type: string
required:
- code
- message
- action
title: ActionError
type: object
ParameterError:
example:
code: invalid_param
message: Invalid parameter
param: employment_id
properties:
code:
description: An error code that describes the nature of the error.
type: string
message:
description: A developer friendly error message that gives details on what the error was and how it may be remedied.
type: string
param:
description: The parameter that lead to the error message.
type: string
required:
- code
- message
- param
title: ParameterError
type: object
WorkAuthorizationRequestResponse:
additionalProperties: false
description: Schema for work authorization request
example:
data:
work_authorization_request:
additional_information: Some additional information
destination_country:
alpha_2_code: PT
code: PRT
contractor_products_available:
- standard
- plus
- cor
country_subdivisions:
- code: PT-06
name: Coimbra
subdivision_type: District
- code: PT-11
name: Lisboa
subdivision_type: District
employment_agreement_preview_available: true
eor_onboarding: true
locked_benefits: after_first_hire
name: Portugal
region: Europe
subregion: Southern Europe
supported_json_schemas:
- additional_documents
- address_details
- administrative_details
- employment-basic-information
- bank_account_details
- contract_details
- emergency_contact
employer_approver:
email: user0@company.com
id: 93aaf0b3-1d79-4d2c-8d47-3d5406727d70
name: User Name
employer_special_instructions: Some special instruction
id: d1bb9535-3296-4240-8a67-81475bd24e80
reason: Some reason
status: pending
submitted_at: '2021-07-15T18:18:17Z'
travel_date_end: '2021-07-01'
travel_date_start: '2021-07-01'
travel_document_number: FC123456
user:
email: user0@company.com
id: 93aaf0b3-1d79-4d2c-8d47-3d5406727d70
name: User Name
will_negotiate_or_sign_contracts: true
work_location: Some work location
properties:
data:
additionalProperties: false
properties:
work_authorization_request:
$ref: '#/components/schemas/WorkAuthorizationRequest'
required:
- work_authorization_request
type: object
required:
- data
title: WorkAuthorizationRequestResponse
type: object
ApprovedWorkAuthozation:
additionalProperties: false
description: Schema for approved work authorization
example:
employer_special_instructions: some special instruction
status: approved_by_manager
properties:
employer_special_instructions:
nullable: true
type: string
status:
enum:
- approved_by_manager
type: string
required:
- status
title: ApprovedWorkAuthozation
type: object
UnauthorizedResponse:
description: Returned when the request does not include valid authentication credentials. Ensure you are passing a valid OAuth2 access token or API token in the Authorization header.
example:
message: Unauthorized
properties:
message:
pattern: Unauthorized
type: string
required:
- message
title: UnauthorizedResponse
type: object
UnprocessableEntityResponse:
anyOf:
- properties:
errors:
type: object
required:
- errors
type: object
- properties:
message:
oneOf:
- type: string
- $ref: '#/components/schemas/ParameterError'
- items:
$ref: '#/components/schemas/ParameterError'
title: ParameterErrors
type: array
- $ref: '#/components/schemas/ActionError'
- items:
$ref: '#/components/schemas/ActionError'
title: ActionErrors
type: array
required:
- message
type: object
example:
errors:
some_field:
- is invalid
title: UnprocessableEntityResponse
type: object
NotFoundResponse:
description: Returned when the requested resource does not exist or is not accessible with the current authentication credentials.
example:
message: '{resource} not found'
properties:
message:
description: A message indicating which resource was not found.
pattern: Not Found
type: string
title: NotFoundResponse
type: object
Country:
description: A supported country on Remote
example:
alpha_2_code: PT
code: PRT
contractor_products_available:
- standard
- plus
- cor
country_subdivisions:
- code: PT-06
name: Coimbra
subdivision_type: District
- code: PT-11
name: Lisboa
subdivision_type: District
employment_agreement_preview_available: true
eor_onboarding: true
locked_benefits: after_first_hire
name: Portugal
region: Europe
subregion: Southern Europe
supported_json_schemas:
- additional_documents
- address_details
- administrative_details
- employment-basic-information
- bank_account_details
- contract_details
- emergency_contact
properties:
alpha_2_code:
description: The ISO 3166-1 alpha-2 country code (e.g., "PT").
type: string
code:
description: The ISO 3166-1 alpha-3 country code (e.g., "PRT"). This is the primary code used across the Remote API.
type: string
contractor_products_available:
description: Contractor product names available for this country
items:
enum:
- standard
- plus
- cor
type: string
type: array
country_subdivisions:
description: Administrative subdivisions of the country (e.g., states, provinces, districts). Null if the country has no subdivisions relevant to Remote's services.
items:
$ref: '#/components/schemas/CountrySubdivision'
nullable: true
type: array
employment_agreement_preview_available:
description: Whether an Employment Agreement preview is available for this country.
type: boolean
eor_onboarding:
description: Whether EOR (Employer of Record) onboarding is available in this country.
type: boolean
locked_benefits:
description: When benefit plan selections become locked for this country (e.g., "after_first_hire" means benefits cannot be changed after the first employee is hired).
type: string
name:
description: The country's full English name.
type: string
region:
description: The geographic region the country belongs to (e.g., "Europe", "Asia", "Americas").
type: string
subregion:
description: The geographic subregion (e.g., "Southern Europe", "Southeast Asia"). Null for some countries.
nullable: true
type: string
supported_json_schemas:
description: The list of JSON schema form names available for this country (e.g., "address_details", "contract_details"). Use these with the Show form schema endpoint to get country-specific field requirements.
items:
type: string
type: array
required:
- alpha_2_code
- code
- name
title: Country
type: object
Date:
description: UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
example: '2021-07-01'
format: date
title: Date
type: string
WorkAuthorizationUser:
additionalProperties: false
description: A user associated with a work authorization request (either the employee or the employer approver).
example:
email: user0@company.com
id: 93aaf0b3-1d79-4d2c-8d47-3d5406727d70
name: User Name
nullable: true
properties:
email:
description: The user's email address.
type: string
id:
description: The unique identifier (UUID) of the user.
format: uuid
type: string
name:
description: The user's full name.
type: string
required:
- email
- name
- id
title: WorkAuthorizationUser
type: object
ListWorkAuthorizationRequestsResponse:
description: Response schema listing many work_authorization_requests
example:
current_page: 1
total_count: 1
total_pages: 1
work_authorization_requests:
- additional_information: Some additional information
destination_country:
alpha_2_code: PT
code: PRT
contractor_products_available:
- standard
- plus
- cor
country_subdivisions:
- code: PT-06
name: Coimbra
subdivision_type: District
- code: PT-11
name: Lisboa
subdivision_type: District
employment_agreement_preview_available: true
eor_onboarding: true
locked_benefits: after_first_hire
name: Portugal
region: Europe
subregion: Southern Europe
supported_json_schemas:
- additional_documents
- address_details
- administrative_details
- employment-basic-information
- bank_account_details
- contract_details
- emergency_contact
employer_approver:
email: user0@company.com
id: 93aaf0b3-1d79-4d2c-8d47-3d5406727d70
name: User Name
employer_special_instructions: Some special instruction
id: d1bb9535-3296-4240-8a67-81475bd24e80
reason: Some reason
status: pending
submitted_at: '2021-07-15T18:18:17Z'
travel_date_end: '2021-07-01'
travel_date_start: '2021-07-01'
travel_document_number: FC123456
user:
email: user0@company.com
id: 93aaf0b3-1d79-4d2c-8d47-3d5406727d70
name: User Name
will_negotiate_or_sign_contracts: true
work_location: Some work location
properties:
data:
properties:
current_page:
description: The current page among all of the total_pages
type: integer
total_count:
description: The total number of records in the result
type: integer
total_pages:
description: The total number of pages the user can go through
type: integer
work_authorization_requests:
items:
$ref: '#/components/schemas/WorkAuthorizationRequest'
type: array
type: object
title: ListWorkAuthorizationRequestsResponse
type: object
WorkAuthorizationRequest:
description: A work authorization request submitted by an employee who needs authorization to work in a different country. Similar to a travel letter request but specifically for work authorization purposes.
example:
additional_information: Some additional information
destination_country:
alpha_2_code: PT
code: PRT
contractor_products_available:
- standard
- plus
- cor
country_subdivisions:
- code: PT-06
name: Coimbra
subdivision_type: District
- code: PT-11
name: Lisboa
subdivision_type: District
employment_agreement_preview_available: true
eor_onboarding: true
locked_benefits: after_first_hire
name: Portugal
region: Europe
subregion: Southern Europe
supported_json_schemas:
- additional_documents
- address_details
- administrative_details
- employment-basic-information
- bank_account_details
- contract_details
- emergency_contact
employer_approver:
email: user0@company.com
id: 93aaf0b3-1d79-4d2c-8d47-3d5406727d70
name: User Name
employer_special_instructions: Some special instruction
id: d1bb9535-3296-4240-8a67-81475bd24e80
reason: Some reason
status: pending
submitted_at: '2021-07-15T18:18:17Z'
travel_date_end: '2021-07-01'
travel_date_start: '2021-07-01'
travel_document_number: FC123456
user:
email: user0@company.com
id: 93aaf0b3-1d79-4d2c-8d47-3d5406727d70
name: User Name
will_negotiate_or_sign_contracts: true
work_location: Some work location
properties:
additional_information:
description: Additional information provided by the employee about their work authorization needs.
type: string
destination_country:
$ref: '#/components/schemas/Country'
employer_approver:
$ref: '#/components/schemas/WorkAuthorizationUser'
employer_special_instructions:
description: Special instructions from the employer. Null if none provided.
nullable: true
type: string
id:
description: The unique identifier (UUID) of the work authorization request.
format: uuid
type: string
reason:
description: The reason for the work authorization request.
type: string
status:
description: 'The current status of the work authorization request.
- `pending`: Submitted and awaiting manager review.
- `cancelled`: Cancelled by the employee.
- `declined_by_manager`: Declined by the employer manager.
- `declined_by_remote`: Declined by Remote after manager approval.
- `approved_by_manager`: Approved by the manager, awaiting Remote''s review.
- `approved_by_remote`: Fully approved by both manager and Remote.
'
enum:
- pending
- cancelled
- declined_by_manager
- declined_by_remote
- approved_by_manager
- approved_by_remote
type: string
submitted_at:
$ref: '#/components/schemas/DateTimeIso8601'
travel_date_end:
$ref: '#/components/schemas/Date'
travel_date_start:
$ref: '#/components/schemas/Date'
travel_document_number:
description: The employee's travel document (passport) number.
type: string
user:
$ref: '#/components/schemas/WorkAuthorizationUser'
will_negotiate_or_sign_contracts:
description: Whether the employee will negotiate or sign contracts on behalf of the company in the destination country. This may affect the type of work authorization required.
nullable: true
type: boolean
work_location:
description: The specific work location or address in the destination country. Null if not specified.
nullable: true
type: string
required:
- additional_information
- destination_country
- employer_approver
- employer_special_instructions
- id
- reason
- status
- submitted_at
- travel_date_end
- travel_date_start
- travel_document_number
- user
- will_negotiate_or_sign_contracts
- work_location
title: WorkAuthorizationRequest
type: object
DeclinedWorkAuthozation:
additionalProperties: false
description: Schema for declined work authorization
example:
employer_special_instructions: Some special instruction
reason: some reason
status: declined_by_manager
properties:
employer_special_instructions:
nullable: true
type: string
reason:
type: string
status:
enum:
- declined_by_manager
type: string
required:
- status
- reason
title: DeclinedWorkAuthozation
type: object
UpdateWorkAuthorizationRequestParams:
additionalProperties: false
description: Schema for updating a work authorization request
example:
employer_special_instructions: some special instruction
status: approved_by_manager
oneOf:
- $ref: '#/components/schemas/ApprovedWorkAuthozation'
- $ref: '#/components/schemas/DeclinedWorkAuthozation'
title: UpdateWorkAuthorizationRequestParams
CountrySubdivision:
description: A subdivision of a supported country on Remote
example:
code: PT-11
name: Lisboa
subdivision_type: District
properties:
code:
description: The ISO 3166-2 subdivision code (e.g., "PT-11" for Lisboa).
type: string
name:
description: The subdivision's name (e.g., "Lisboa", "California").
type: string
subdivision_type:
description: The type of subdivision (e.g., "District", "State", "Province").
type: string
required:
- name
title: CountrySubdivision
type: object
securitySchemes:
BasicAuth:
description: 'Authenticate using the basic authentication for partners.
Use the CLIENT_ID as login and CLIENT_SECRET as password.
'
scheme: basic
type: http
ClientToken:
description: 'Authenticate a partner using only the the provided `client_token`.
This authentication method only allows accessing marketing endpoints.
'
scheme: bearer
type: http
CustomerAPIToken:
description: 'Authenticate using API Key generated by the customer in their Integration Settings page.
'
scheme: bearer
type: http
OAuth2:
description: 'Authenticate using OAuth 2.0 protocol.
'
flows:
authorizationCode:
authorizationUrl: /auth/oauth2/authorize
scopes:
company_department:read: company_department:read
webhook:write: webhook:write
magic_link:write: magic_link:write
offboarding:write: offboarding:write
custom_field:write: custom_field:write
address:write: address:write
expense:read: expense:read
employment:write: employment:write
identity_verification:write: identity_verification:write
timesheet:write: timesheet:write
travel_letter:write: travel_letter:write
incentive:read: incentive:read
personal_detail:read: personal_detail:read
invoices:write: invoices:write
work_authorization:write: work_authorization:write
timeoff:write: timeoff:write
company_structure:read: company_structure:read
benefit_renewal:write: benefit_renewal:write
benefit_offer:read: benefit_offer:read
employment_documents: employment_documents
onboarding:write: onboarding:write
payroll_run:read: payroll_run:read
risk_reserve:write: risk_reserve:write
invoices: invoices
resignation_letter:read: resignation_letter:read
resignation:read: resignation:read
convert_currency:read: convert_currency:read
employments: employments
probation_document:read: probation_document:read
company_admin: company_admin
payroll: payroll
help_center_article:read: help_center_article:read
timesheet:read: timesheet:read
custom_field_value:write: custom_field_value:write
company_currencies:read: company_currencies:read
payslip:read: payslip:read
pay_item:write: pay_item:write
resignation:write: resignation:write
custom_field:read: custom_field:read
payroll_calendar:read: payroll_calendar:read
contract_amendment:write: contract_amendment:write
offboarding:read: offboarding:read
timeoff:read: timeoff:read
probation_document:write: probation_document:write
country:read: country:read
webhook:read: webhook:read
company_department:write: company_department:write
company_manager:read: company_manager:read
pay_item:read: pay_item:read
contract_amendment:read: contract_amendment:read
company:read: company:read
sso_configuration:write: sso_configuration:write
benefit_offer:write: benefit_offer:write
contract_eligibility:write: contract_eligibility:write
benefit_renewal:read: benefit_renewal:read
background_check:read: background_check:read
custom_field_value:read: custom_field_value:read
expense:write: expense:write
identity_verification:read: identity_verification:read
address:read: address:read
document:write: document:write
time_and_attendance: time_and_attendance
employment_payments: employment_payments
form:read: form:read
work_authorization:read: work_authorization:read
invoices:read: invoices:read
incentive:write: incentive:write
# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/remote/refs/heads/main/openapi/remote-work-authorization-api-openapi.yml