Remote Work Authorization API

The Work Authorization API from Remote — 2 operation(s) for work authorization.

OpenAPI Specification

remote-work-authorization-api-openapi.yml Raw ↑
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