Remote

Global HR and payroll for remote teams

developer.remote.com ↗
Version
0.1.0
OpenAPI
3.0.0
Endpoints
83
Schemas
202
89
Quality
Updated
3 days ago
Hr hr payroll remote-work
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://gateway.remote.com
https://gateway.remote-sandbox.com

Endpoints

Clear filters

Companies 1 endpoints

PUT /v1/companies/{company_id}

Given an ID and a request object with new information, updates a company.

Getting a company and its owner to active status

If you created a company using the
create a company endpoint without all the required
request body parameters, you can use this endpoint to provide the missing data. Once the company
and its owner have all the necessary data, both their statuses will be set to active and the company
onboarding will be marked as “completed”.

The following constitutes a company with “all the necessary data”:

  • Complete address, with valid address, postal_code, country and state parameters (Varies by country. Use the
    show form schema endpoint to see which address parameters
    are required).
  • Company tax_number or registration_number is not nil
  • Company name is not nil (already required when creating the company)
  • Company has a desired_currency in their bank account (already required when creating the company)
  • Company has accepted terms of service (already required when creating the company)
operationId: Companies_updateCompany

Parameters

Name In Required Type Description
company_id path required string

Company ID

Request Body

Update Company params

application/json
schema UpdateCompanyParams
Property Type Required
name string optional
tax_number string optional
country_code string optional
phone_number string optional
address_details object optional
desired_currency string optional
registration_number string optional
bank_account_details object optional

Responses

200

Success

400

Bad Request

401

Unauthorized

404

Not Found

422

Unprocessable Entity

429

Too many requests

PUT /v1/companies/{company_id}

Employments 1 endpoints

PUT /v1/employments/{employment_id}

Updates an employment.

For created employments: You can change all basic params and onboarding tasks or perform a per onboarding task update. You can also update basic_information.

For active employments: You can update the manager (manager_id field), emergency_contact_details and address_details.

This endpoint requires and returns country-specific data. The exact required and returned fields will
vary depending on which country the employment is in. To see the list of parameters for each country,
see the Show form schema endpoint under the Countries category.

Please note that the compliance requirements for each country are subject to change according to local
laws. Given its continual updates, using Remote’s json-schema-form should be considered in order to avoid
compliance issues and to have the latest version of a country requirements.

If you are using this endpoint to build an integration, make sure you are dynamically collecting or
displaying the latest parameters for each country by querying the “Show form schema” endpoint.

For more information on JSON Schemas, see the How JSON Schemas work documentation.

To learn how you can dynamically generate forms to display in your UI, see the documentation for
the json-schema-form tool.

Automatically inviting an employee

When you submit the contract_details and pricing_plan_details, Remote should have all the required data to automatically
send an invite to the employee. You can tell if an automatic invite has been sent by looking at the employment_lifecycle_stage
field value. If its value is employee_self_enrollment, it means the employee has received an email to join the Remote platform
at their personal_email.

After an automatic invite is sent to an employee, you will not be able to update employment data through the Remote API.
After onboarding, only a limited set of employment data will be available for updates, such as emergency_contact_details.
If you want to provide additional information for an employment, please make sure to do so before the employee is invited.
We block updates to some employment data because employees need to agree to amendments in certain cases,
such as when there are changes to their contract_details.
Currently, these amendments can only be done through the Remote UI.

Please contact Remote if you need to update contractors via API since it’s currently not supported.

operationId: Employments_updateDetails

Parameters

Name In Required Type Description
employment_id path required string

Employment ID

Request Body

Employment params

application/json
schema EmploymentFullParams
Property Type Required
manager string optional
full_name string required
job_title string required
company_id string optional
country_code string required
department_id string optional
personal_email string required
address_details object optional
contract_details object optional
personal_details object optional
basic_information object optional
name string optional
email string optional
job_title string optional
has_seniority_date string optional
provisional_start_date string optional
bank_account_details object optional
pricing_plan_details object optional
frequency string optional
administrative_details object optional
provisional_start_date string optional
billing_address_details object optional
emergency_contact_details object optional

Responses

200

Success

400

Bad Request

401

Unauthorized

404

Not Found

409

Conflict

422

Unprocessable Entity

429

Too many requests

PUT /v1/employments/{employment_id}

Expenses 1 endpoints

PUT /v1/expenses/{id}

Updates an expense

operationId: Expenses_updateExpense

Parameters

Name In Required Type Description
id path required string

Expense ID

Request Body

Expenses

application/json
schema UpdateExpenseParams

Responses

200

Success

400

Bad Request

401

Unauthorized

404

Not Found

409

Conflict

422

Unprocessable Entity

429

Too many requests

PUT /v1/expenses/{id}

Incentives 1 endpoints

PUT /v1/incentives/{id}

Updates an Incentive.

Incentives use the currency of the employment specified provided in the employment_id field.

The API doesn’t support updating paid incentives.

operationId: Incentives_updateIncentive

Parameters

Name In Required Type Description
id path required string

Incentive ID

Request Body

Incentive

application/json
schema UpdateIncentiveParams
Property Type Required
note string optional
amount integer optional
effective_date string optional
amount_tax_type string optional
type string optional

Responses

200

Success

400

Bad Request

401

Unauthorized

404

Not Found

409

Conflict

422

Unprocessable Entity

429

Too many requests

PUT /v1/incentives/{id}

Resignation 1 endpoints

PUT /v1/resignations/{employment_request_id}/validate

Validates a resignation employment request

operationId: Resignation_validateEmploymentRequest

Parameters

Name In Required Type Description
employment_request_id path required string

The employment request ID

Request Body

required

ValidateResignation

application/json
schema ValidateResignationRequest

Responses

200

Success

400

Bad Request

401

Unauthorized

404

Not Found

422

Unprocessable Entity

429

Unprocessable Entity

PUT /v1/resignations/{employment_request_id}/validate

Sandbox 3 endpoints

PUT /v1/sandbox/contract-amendments/{contract_amendment_request_id}/approve

Approves a contract amendment request without the intervention of a Remote admin.
Approvals done via this endpoint are effective immediately,
regardless of the effective date entered on the contract amendment creation.

This endpoint is only available in Sandbox, otherwise it will respond with a 404.

operationId: ContractAmendments_approveAmendment

Parameters

Name In Required Type Description
contract_amendment_request_id path required string

Contract amendment request ID

Responses

200

Success

400

Bad Request

401

Unauthorized

404

Not Found

422

Unprocessable Entity

429

Too many requests

PUT /v1/sandbox/contract-amendments/{contract_amendment_request_id}/approve
PUT /v1/sandbox/contract-amendments/{contract_amendment_request_id}/cancel

Use this endpoint to cancel an existing contract amendment request.

This endpoint is only available in Sandbox, otherwise it will respond with a 404.

operationId: Sandbox_cancelAmendmentRequest

Parameters

Name In Required Type Description
contract_amendment_request_id path required string

Contract amendment request ID

Responses

200

Success

400

Bad Request

401

Unauthorized

404

Not Found

422

Unprocessable Entity

429

Too many requests

PUT /v1/sandbox/contract-amendments/{contract_amendment_request_id}/cancel
PUT /v1/sandbox/employments/{employment_id}

Updates an employment. Use this endpoint to modify employment states for testing
in the Sandbox environment. This endpoint will respond with a 404 outside of the
Sandbox environment.

For updating an employment’s parameters outside of testing purposes, use this
Employment update endpoint
.

operationId: Sandbox_employmentUpdate

Parameters

Name In Required Type Description
employment_id path required string

Employment ID

Request Body

Employment params

application/json
schema EmploymentUpdateParams
Property Type Required
status string optional

Responses

200

Success

400

Bad Request

401

Unauthorized

404

Not Found

409

Conflict

422

Unprocessable Entity

429

Too many requests

PUT /v1/sandbox/employments/{employment_id}

Timeoff 1 endpoints

PUT /v1/timeoff/{id}

Updates a Time Off record. This endpoint can also be used for cancelling a time off.

operationId: TimeOff_updateRecord

Parameters

Name In Required Type Description
id path required string

Timeoff ID

Request Body

required

UpdateTimeoff

application/json
schema UpdateApprovedTimeoffParams
Property Type Required
notes string optional
status string optional
document object optional
name string required
content string required
end_date string optional
timezone string optional
start_date string optional
approved_at string optional
approver_id string optional
edit_reason string required
timeoff_days array optional
day string optional
hours integer optional
timeoff_type string optional
cancel_reason string required

Responses

200

Success

400

Bad Request

401

Unauthorized

404

Not Found

422

Unprocessable Entity

429

Unprocessable Entity

PUT /v1/timeoff/{id}

Schemas

object ActionError
{
  "type": "object",
  "title": "ActionError",
  "required": [
    "code",
    "message",
    "action"
  ],
  "x-struct": null,
  "properties": {
    "code": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "An error code that describes the nature of the error."
    },
    "action": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The action that lead to the error message."
    },
    "message": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "A developer friendly error message that gives details on what the error was and how it may be remedied."
    }
  },
  "x-validate": null
}
array ActionErrors
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/ActionError"
  },
  "title": "ActionErrors",
  "x-struct": null,
  "x-validate": null
}
string AmountTaxType
{
  "enum": [
    "gross",
    "net"
  ],
  "type": "string",
  "title": "AmountTaxType",
  "example": "net",
  "x-struct": null,
  "x-validate": null,
  "description": "  Whether the amount given accounts for taxes or not.\n\n  `gross` indicates that the amount given is the amount to be paid before taxes\n  are subtracted.\n\n  `net` indicates that the amount given is the amount which will be paid to the\n  employee after taxes. Remote will gross this up to ensure the taxes are\n  included and employee receives the amount requested without further reduction.\n"
}
object ApproveExpenseParams
{
  "type": "object",
  "title": "ApproveExpenseParams",
  "example": {
    "status": "approved"
  },
  "required": [
    "status"
  ],
  "x-struct": null,
  "properties": {
    "status": {
      "enum": [
        "approved"
      ],
      "type": "string",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Approve an expense"
}
object AuthorizationCodeParams
{
  "type": "object",
  "title": "AuthorizationCodeParams",
  "example": {
    "code": "eyJhbG...xb6H0",
    "grant_type": "authorization_code"
  },
  "required": [
    "grant_type",
    "code"
  ],
  "x-struct": null,
  "properties": {
    "code": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The authorization code generated in Authorization Code flow"
    },
    "grant_type": {
      "enum": [
        "authorization_code"
      ],
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The Authorization flow"
    }
  },
  "x-validate": null
}
object AuthorizationCodeResponse
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/BaseTokenResponse"
    },
    {
      "type": "object",
      "example": {
        "user_id": "6550e536-8655-4bce-8bd9-b295f786ad71",
        "company_id": "6e60f5f9-e6a6-4b04-b13c-84bced848bab",
        "expires_in": 7200,
        "token_type": "Bearer",
        "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ",
        "refresh_token": "b480036a-d229-49ef-a606-7e8fba58a5eb"
      },
      "x-struct": null,
      "properties": {
        "user_id": {
          "type": "string",
          "x-struct": null,
          "x-validate": null,
          "description": "The ID of the user who connected the company."
        },
        "company_id": {
          "type": "string",
          "x-struct": null,
          "x-validate": null,
          "description": "The ID of the connected company."
        },
        "refresh_token": {
          "type": "string",
          "x-struct": null,
          "x-validate": null,
          "description": "The refresh token. This token must be stored and used for issuing new access tokens for managing the company's resources."
        }
      },
      "x-validate": null
    }
  ],
  "title": "AuthorizationCodeResponse",
  "x-struct": null,
  "x-validate": null
}
object BadRequestResponse
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "message"
      ],
      "x-struct": null,
      "properties": {
        "message": {
          "type": "string",
          "x-struct": null,
          "x-validate": null
        }
      },
      "x-validate": null
    },
    {
      "type": "object",
      "x-struct": null,
      "properties": {
        "message": {
          "type": "object",
          "required": [
            "code",
            "message"
          ],
          "x-struct": null,
          "properties": {
            "code": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "message": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            }
          },
          "x-validate": null
        }
      },
      "x-validate": null
    }
  ],
  "title": "BadRequestResponse",
  "example": {
    "message": "invalid {resource}"
  },
  "x-struct": null,
  "x-validate": null
}
object Base64File
{
  "type": "object",
  "title": "Base64File",
  "example": {
    "name": "receipt.pdf",
    "content": "UGVyaW9kIEVuZCBEYXRlLFBheSBEYXRlLEVtcG...5jZSBPZiBSZXNpZGVuYdXJyZW50LEFsbG93"
  },
  "required": [
    "name",
    "content"
  ],
  "x-struct": null,
  "properties": {
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The file name."
    },
    "content": {
      "type": "string",
      "format": "binary",
      "x-struct": null,
      "x-validate": null,
      "description": "The content in base64 encoding."
    }
  },
  "x-validate": null,
  "description": "All the params needed upload a base64 file."
}
object BaseTokenResponse
{
  "type": "object",
  "title": "BaseTokenResponse",
  "example": {
    "expires_in": 7200,
    "token_type": "Bearer",
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ"
  },
  "x-struct": null,
  "properties": {
    "expires_in": {
      "type": "integer",
      "format": "int32",
      "x-struct": null,
      "x-validate": null,
      "description": "Number of seconds until token is expired."
    },
    "token_type": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The type of the token. For now, always `Bearer`."
    },
    "access_token": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "A JWT token."
    }
  },
  "x-validate": null
}
object Benefit
{
  "type": "object",
  "title": "Benefit",
  "example": {
    "id": "562977cfd-cf60-4cf4-a70f-ac2061d709088X",
    "name": "benefit name",
    "type": "benefit type",
    "costs": {
      "employee_cost": 234,
      "employer_cost": 44
    },
    "status": "enrolled",
    "provider": {
      "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
      "name": "Health Provider"
    },
    "projected_costs": null,
    "coverage_end_date": "2025-02-28",
    "coverage_start_date": "2024-03-18"
  },
  "required": [
    "id",
    "status",
    "name",
    "type",
    "coverage_start_date",
    "coverage_end_date",
    "provider",
    "costs",
    "projected_costs"
  ],
  "x-struct": null,
  "properties": {
    "id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "type": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "costs": {
      "$ref": "#/components/schemas/Costs"
    },
    "status": {
      "enum": [
        "initiated",
        "enrolled",
        "waived"
      ],
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "provider": {
      "$ref": "#/components/schemas/BenefitProvider"
    },
    "projected_costs": {
      "$ref": "#/components/schemas/Costs"
    },
    "coverage_end_date": {
      "type": "string",
      "format": "date",
      "x-struct": null,
      "x-validate": null
    },
    "coverage_start_date": {
      "type": "string",
      "format": "date",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Benefits with status enrolled have their summed costs in costs.\nBenefits with status initiated have their summed costs in projected_costs.\nBenefit-offers where the employer opted-out have benefit_tier: null in the response.\n"
}
object BenefitGroup
{
  "type": "object",
  "title": "BenefitGroup",
  "example": {
    "id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
    "name": "Health",
    "policy_end_date": "2024-12-31",
    "policy_start_date": "2024-01-01"
  },
  "required": [
    "id",
    "name",
    "policy_start_date",
    "policy_end_date"
  ],
  "x-struct": null,
  "properties": {
    "id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "policy_end_date": {
      "type": "string",
      "format": "date",
      "x-struct": null,
      "x-validate": null
    },
    "policy_start_date": {
      "type": "string",
      "format": "date",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object BenefitOffer
{
  "type": "object",
  "title": "BenefitOffer",
  "example": {
    "costs": {
      "employee_cost": 234,
      "employer_cost": 44
    },
    "benefits": [
      {
        "id": "562977cfd-cf60-4cf4-a70f-ac2061d709088",
        "name": "benefit name",
        "type": "benefit type",
        "costs": {
          "employee_cost": 234,
          "employer_cost": 44
        },
        "status": "enrolled",
        "provider": {
          "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
          "name": "Health Provider"
        },
        "projected_costs": null,
        "coverage_end_date": "2025-02-28",
        "coverage_start_date": "2024-03-18"
      }
    ],
    "benefit_tier": {
      "id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
      "name": "Premium 2023 (Medical, Dental and Vision)",
      "providers": [
        {
          "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
          "name": "Health Provider"
        }
      ]
    },
    "benefit_group": {
      "id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
      "name": "Health",
      "policy_end_date": "2024-12-31",
      "policy_start_date": "2024-01-01"
    }
  },
  "required": [
    "benefit_group",
    "benefit_tier",
    "costs",
    "benefits"
  ],
  "x-struct": null,
  "properties": {
    "costs": {
      "$ref": "#/components/schemas/Costs"
    },
    "benefits": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Benefit"
      },
      "x-struct": null,
      "x-validate": null
    },
    "benefit_tier": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/components/schemas/BenefitTier"
        }
      ],
      "title": "MaybeBenefitTier",
      "example": {
        "id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
        "name": "Premium 2023 (Medical, Dental and Vision)",
        "providers": [
          {
            "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
            "name": "Health Provider"
          }
        ]
      },
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "benefit_group": {
      "$ref": "#/components/schemas/BenefitGroup"
    }
  },
  "x-validate": null
}
object BenefitOfferByEmploymentResponse
{
  "type": "object",
  "title": "BenefitOfferByEmploymentResponse",
  "example": {
    "data": {
      "currency": [
        {
          "code": "EUR",
          "name": "European Euro",
          "slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
          "symbol": "€"
        }
      ],
      "company_id": "79297cfd-cf60-4cf4-a70f-ac2061d72a74",
      "benefit_offers_by_employment": [
        {
          "costs": {
            "employee_cost": 234,
            "employer_cost": 44
          },
          "employment": {
            "id": "67897cfd-cf60-4cf4-a70f-ac2061d72984X",
            "name": "Name",
            "country": {
              "code": "PRT",
              "name": "Portugal",
              "alpha_2_code": "PT",
              "country_subdivisions": [
                {
                  "code": "PT-06",
                  "name": "Coimbra",
                  "subdivision_type": "District"
                },
                {
                  "code": "PT-11",
                  "name": "Lisboa",
                  "subdivision_type": "District"
                }
              ],
              "supported_json_schemas": [
                "additional_documents",
                "address_details",
                "administrative_details",
                "employment-basic-information",
                "bank_account_details",
                "contract_details",
                "emergency_contact"
              ]
            },
            "surname": "Surname",
            "given_name": "Given Name"
          },
          "benefit_offers": [
            {
              "costs": {
                "employee_cost": 234,
                "employer_cost": 44
              },
              "benefits": [
                {
                  "id": "562977cfd-cf60-4cf4-a70f-ac2061d709088X",
                  "name": "benefit name",
                  "type": "benefit type",
                  "costs": {
                    "employee_cost": 234,
                    "employer_cost": 44
                  },
                  "status": "enrolled",
                  "provider": {
                    "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
                    "name": "Health Provider"
                  },
                  "projected_costs": null,
                  "coverage_end_date": "2025-02-28",
                  "coverage_start_date": "2024-03-18"
                }
              ],
              "benefit_tier": {
                "id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
                "name": "Premium 2023 (Medical, Dental and Vision)",
                "providers": [
                  {
                    "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
                    "name": "Health Provider"
                  }
                ]
              },
              "benefit_group": {
                "id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
                "name": "Health",
                "policy_end_date": "2024-12-31",
                "policy_start_date": "2024-01-01"
              }
            }
          ]
        }
      ]
    }
  },
  "required": [
    "data"
  ],
  "x-struct": null,
  "properties": {
    "data": {
      "type": "object",
      "required": [
        "benefit_offers_by_employment",
        "company_id",
        "currency"
      ],
      "x-struct": null,
      "properties": {
        "currency": {
          "$ref": "#/components/schemas/Currency"
        },
        "company_id": {
          "type": "string",
          "x-struct": null,
          "x-validate": null
        },
        "benefit_offers_by_employment": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/BenefitOffersByEmployment"
          },
          "x-struct": null,
          "x-validate": null
        }
      },
      "x-validate": null
    }
  },
  "x-validate": null
}
object BenefitOffersByEmployment
{
  "type": "object",
  "title": "BenefitOffersByEmployment",
  "example": {
    "costs": {
      "employee_cost": 234,
      "employer_cost": 44
    },
    "employment": {
      "id": "67897cfd-cf60-4cf4-a70f-ac2061d72984X",
      "name": "Name",
      "country": {
        "code": "PRT",
        "name": "Portugal",
        "alpha_2_code": "PT",
        "country_subdivisions": [
          {
            "code": "PT-06",
            "name": "Coimbra",
            "subdivision_type": "District"
          },
          {
            "code": "PT-11",
            "name": "Lisboa",
            "subdivision_type": "District"
          }
        ],
        "supported_json_schemas": [
          "additional_documents",
          "address_details",
          "administrative_details",
          "employment-basic-information",
          "bank_account_details",
          "contract_details",
          "emergency_contact"
        ]
      },
      "surname": "Surname",
      "given_name": "Given Name"
    },
    "benefit_offers": [
      {
        "costs": {
          "employee_cost": 234,
          "employer_cost": 44
        },
        "benefits": [
          {
            "id": "562977cfd-cf60-4cf4-a70f-ac2061d709088X",
            "name": "benefit name",
            "type": "benefit type",
            "costs": {
              "employee_cost": 234,
              "employer_cost": 44
            },
            "status": "enrolled",
            "provider": {
              "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
              "name": "Health Provider"
            },
            "projected_costs": null,
            "coverage_end_date": "2025-02-28",
            "coverage_start_date": "2024-03-18"
          }
        ],
        "benefit_tier": {
          "id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
          "name": "Premium 2023 (Medical, Dental and Vision)",
          "providers": [
            {
              "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
              "name": "Health Provider"
            }
          ]
        },
        "benefit_group": {
          "id": "54297cfd-cf60-4cf4-a70f-ac2061d72b44X",
          "name": "Health",
          "policy_end_date": "2024-12-31",
          "policy_start_date": "2024-01-01"
        }
      }
    ]
  },
  "required": [
    "employment",
    "costs",
    "benefit_offers"
  ],
  "x-struct": null,
  "properties": {
    "costs": {
      "$ref": "#/components/schemas/Costs"
    },
    "employment": {
      "$ref": "#/components/schemas/Employment"
    },
    "benefit_offers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BenefitOffer"
      },
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object BenefitProvider
{
  "type": "object",
  "title": "BenefitProvider",
  "example": {
    "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
    "name": "Health Provider"
  },
  "required": [
    "id",
    "name"
  ],
  "x-struct": null,
  "properties": {
    "id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object BenefitTier
{
  "type": "object",
  "title": "BenefitTier",
  "example": {
    "id": "66297cfd-cf60-4cf4-a70f-ac2561d92b04X",
    "name": "Premium 2023 (Medical, Dental and Vision)",
    "providers": [
      {
        "id": "88297cfd-cf60-4cf4-a70f-ac2861d92b87X",
        "name": "Health Provider"
      }
    ]
  },
  "required": [
    "id",
    "name",
    "providers"
  ],
  "x-struct": null,
  "properties": {
    "id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "providers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BenefitProvider"
      },
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object BillingDocument
{
  "type": "object",
  "title": "BillingDocument",
  "example": {
    "id": "8772a9f1-b43c-46be-a1ce-e50b6819f5eeX",
    "items": [
      {
        "type": "base_salary",
        "employment_id": "0d25c513-employment-id-198557128104",
        "source_amount": 50000,
        "source_currency": "EUR",
        "billing_document_amount": 1000000,
        "billing_document_currency": "CAD"
      }
    ],
    "total": 1100000,
    "company_id": "2f889520-9a21-44b0-990d-e4ae37d8db53",
    "issued_date": "2023-08-22",
    "billing_document_type": "reconciliation_invoice",
    "billing_document_period": "2021-12",
    "billing_document_currency": "EUR"
  },
  "required": [
    "company_id",
    "id",
    "billing_document_period",
    "issued_date",
    "billing_document_type",
    "billing_document_currency",
    "total",
    "items"
  ],
  "x-struct": null,
  "properties": {
    "id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BillingDocumentAmountItem"
      },
      "x-struct": null,
      "x-validate": null
    },
    "total": {
      "type": "integer",
      "x-struct": null,
      "x-validate": null
    },
    "company_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "issued_date": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "billing_document_type": {
      "enum": [
        "reconciliation_invoice",
        "prefunding_invoice",
        "supplemental_service_invoice",
        "reconciliation_credit_note"
      ],
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "billing_document_period": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "billing_document_currency": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Information of a billing document"
}
object BillingDocumentAmountItem
{
  "type": "object",
  "title": "BillingDocumentAmountItem",
  "example": {
    "type": "base_salary",
    "employment_id": "0d25c513-employment-id-198557128104",
    "source_amount": 50000,
    "source_currency": "EUR",
    "billing_document_amount": 1000000,
    "billing_document_currency": "CAD"
  },
  "required": [
    "type",
    "billing_document_amount",
    "billing_document_currency"
  ],
  "x-struct": null,
  "properties": {
    "type": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "employment_id": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "source_amount": {
      "type": "integer",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "source_currency": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "billing_document_amount": {
      "type": "integer",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "billing_document_currency": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object BillingDocumentResponse
{
  "type": "object",
  "title": "BillingDocumentResponse",
  "example": {
    "data": {
      "billing_document": {
        "id": "8772a9f1-b43c-46be-a1ce-e50b6819f5eeX",
        "items": [
          {
            "type": "base_salary",
            "employment_id": "0d25c513-employment-id-198557128104",
            "source_amount": 50000,
            "source_currency": "EUR",
            "billing_document_amount": 1000000,
            "billing_document_currency": "CAD"
          }
        ],
        "total": 1100000,
        "company_id": "2f889520-9a21-44b0-990d-e4ae37d8db53",
        "issued_date": "2023-08-22",
        "billing_document_type": "reconciliation_invoice",
        "billing_document_period": "2021-12",
        "billing_document_currency": "EUR"
      }
    }
  },
  "required": [
    "data"
  ],
  "x-struct": null,
  "properties": {
    "data": {
      "type": "object",
      "required": [
        "billing_document"
      ],
      "x-struct": null,
      "properties": {
        "billing_document": {
          "$ref": "#/components/schemas/BillingDocument"
        }
      },
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Information of a billing document"
}
object BillingDocumentsResponse
{
  "type": "object",
  "title": "BillingDocumentsResponse",
  "example": {
    "data": {
      "total_count": 1,
      "total_pages": 1,
      "current_page": 1,
      "billing_documents": [
        {
          "id": "8772a9f1-b43c-46be-a1ce-e50b6819f5ee",
          "billing_document_type": "base_salary",
          "billing_document_period": "2023-12"
        }
      ]
    }
  },
  "required": [
    "data"
  ],
  "x-struct": null,
  "properties": {
    "data": {
      "type": "object",
      "required": [
        "billing_documents",
        "current_page",
        "total_pages",
        "total_count"
      ],
      "x-struct": null,
      "properties": {
        "total_count": {
          "type": "integer",
          "example": 100,
          "x-struct": null,
          "x-validate": null,
          "description": "The total number of records returned counting all pages"
        },
        "total_pages": {
          "type": "integer",
          "example": 10,
          "x-struct": null,
          "x-validate": null,
          "description": "The total number of pages the user can go through"
        },
        "current_page": {
          "type": "integer",
          "example": 1,
          "x-struct": null,
          "x-validate": null,
          "description": "The current page among all of the total_pages"
        },
        "billing_documents": {
          "type": "array",
          "items": {
            "x-struct": null,
            "properties": {
              "id": {
                "type": "string",
                "x-struct": null,
                "x-validate": null
              },
              "billing_document_type": {
                "enum": [
                  "reconciliation_invoice",
                  "prefunding_invoice",
                  "supplemental_service_invoice",
                  "reconciliation_credit_note"
                ],
                "type": "string",
                "x-struct": null,
                "x-validate": null
              },
              "billing_document_period": {
                "type": "string",
                "x-struct": null,
                "x-validate": null
              }
            },
            "x-validate": null
          },
          "x-struct": null,
          "x-validate": null
        }
      },
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Information about a list of billing documents"
}
object ClientCredentialsParams
{
  "type": "object",
  "title": "ClientCredentialsParams",
  "example": {
    "client_id": "<client_id>",
    "grant_type": "client_credentials"
  },
  "required": [
    "grant_type",
    "client_id"
  ],
  "x-struct": null,
  "properties": {
    "client_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The client id generated during registration"
    },
    "grant_type": {
      "enum": [
        "client_credentials"
      ],
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The Authorization flow"
    }
  },
  "x-validate": null
}
object CommonIncentiveParams
{
  "type": "object",
  "title": "CommonIncentiveParams",
  "example": {
    "note": "Bonus for moving start date to an earlier date",
    "amount": 50000,
    "effective_date": "2021-12-20",
    "amount_tax_type": "net"
  },
  "x-struct": null,
  "properties": {
    "note": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "amount": {
      "type": "integer",
      "x-struct": null,
      "x-validate": null,
      "description": "The amount (in the currency of the employment) to be given to the employee.\n\nThis field accepts fractional amounts as well. However to avoid precision issues\nand errors that can arise from storing fractional amounts, the Remote API only\naccepts currencies and their fractional amounts as integers. This means you\nshould append fractional amounts to the end of the amount you're passing in with\nthis field.\n\nFor example, if the incentive you're offering is EUR 500.25, you would specify `50025` as\nthe amount for this field.\n"
    },
    "effective_date": {
      "type": "string",
      "format": "date",
      "x-struct": null,
      "x-validate": null,
      "description": "The date at which the incentive should take effect.\n\nNote that the incentive is not paid out on the effective date, but during the\nnext payroll cycle. The effective date determines which payroll cycle the\nincentive will be paid out in.\n\nThe effective date needs to be today or a future date.\n\nNote for recurring incentives: since the months don't have the same amount of days,\nif day of month of `effective_date` is one of [28, 29, 30, 31] it will be transformed to\nthe last day of each month, avoiding the possibility of skipping a month in the recurrence.\n"
    },
    "amount_tax_type": {
      "$ref": "#/components/schemas/AmountTaxType"
    }
  },
  "x-validate": null
}
object CompaniesResponse
{
  "type": "object",
  "title": "CompaniesResponse",
  "example": {
    "data": {
      "companies": [
        {
          "id": "e5a8b061-company-id-4c5c81ac885eX",
          "name": "Your Company Name",
          "status": "active",
          "created_at": "2021-10-29T12:39:13",
          "updated_at": "2021-10-29T12:39:15",
          "external_id": "00001111",
          "country_code": "USA",
          "phone_number": "+1123123456",
          "address_details": {
            "city": "San Francisco",
            "state": "CA",
            "address": "1709 Broderick St",
            "postal_code": "94115",
            "address_line_2": "Flat number 123"
          },
          "desired_currency": "USD",
          "company_owner_name": "Joe Smith",
          "company_owner_email": "te@remote.com",
          "bank_account_details": {
            "name": "Bank name",
            "account_type": "savings",
            "account_holder": "Joe Smith",
            "account_number": "31234123123",
            "ownership_type": "BUSINESS",
            "routing_number": "123124123"
          },
          "terms_of_service_accepted_at": "2021-10-29T12:39:15Z"
        }
      ]
    }
  },
  "x-struct": null,
  "properties": {
    "companies": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Company"
      },
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Shows a list of companies"
}
object Company
{
  "type": "object",
  "title": "Company",
  "example": {
    "id": "e5a8b061-company-id-4c5c81ac885eX",
    "name": "Your Company Name",
    "status": "active",
    "created_at": "2021-10-29T12:39:13",
    "updated_at": "2021-10-29T12:39:15",
    "external_id": "00001111",
    "country_code": "USA",
    "phone_number": "+1123123456",
    "address_details": {
      "city": "San Francisco",
      "state": "CA",
      "address": "1709 Broderick St",
      "postal_code": "94115",
      "address_line_2": "Flat number 123"
    },
    "desired_currency": "USD",
    "company_owner_name": "Joe Smith",
    "company_owner_email": "te@remote.com",
    "bank_account_details": {
      "name": "Bank name",
      "account_type": "savings",
      "account_holder": "Joe Smith",
      "account_number": "31234123123",
      "ownership_type": "BUSINESS",
      "routing_number": "123124123"
    },
    "terms_of_service_accepted_at": "2021-10-29T12:39:15Z"
  },
  "required": [
    "address_details",
    "company_owner_email",
    "country_code",
    "created_at",
    "desired_currency",
    "id",
    "name",
    "status",
    "updated_at",
    "terms_of_service_accepted_at"
  ],
  "x-struct": null,
  "properties": {
    "id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "status": {
      "enum": [
        "pending",
        "review",
        "active",
        "archived"
      ],
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The company status determines what a company is allowed to do:\n- `pending`: The company has been created and the company owner invited. Remote is waiting for the company owner to complete onboarding.\n- `review`: The company is under review. In rare occasions, a company may not automatically get created in `active` status because Remote needs to\n  manually review the company that was created. The company will become `active` once the review is completed and no further action is necessary\n  through the Remote API.\n- `active`: The company owner has completed onboarding and the company is ready to employ.\n- `archived`: The company is no longer active on the Remote platform and no changes can be made to the company.\n"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "x-struct": null,
      "x-validate": null
    },
    "tax_number": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "x-struct": null,
      "x-validate": null
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "country_code": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "phone_number": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "address_details": {
      "type": "object",
      "x-struct": null,
      "x-validate": null,
      "description": "Fields can vary depending on the country. Please, check the required fields structure using the [Show form schema endpoint](https://gateway.remote.com/v1/docs/openapi.html).\nUse the desired country and `address_details` as the form name for the placeholders.\nThe response complies with the [JSON Schema](https://remote.com/resources/api/how-json-schemas-work) specification.\n"
    },
    "desired_currency": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "company_owner_name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "company_owner_email": {
      "type": "string",
      "format": "email",
      "x-struct": null,
      "x-validate": null
    },
    "registration_number": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "bank_account_details": {
      "type": "object",
      "x-struct": null,
      "x-validate": null,
      "description": "Fields can vary depending on the country. Please, check the required fields structure using the [Show form schema endpoint](https://gateway.remote.com/v1/docs/openapi.html).\nUse the desired country and `bank_account_details` as the form name for the placeholders.\nThe response complies with the [JSON Schema](https://remote.com/resources/api/how-json-schemas-work) specification.\n"
    },
    "terms_of_service_accepted_at": {
      "type": "string",
      "format": "date-time",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object CompanyAlreadyExistsErrorResponse
{
  "type": "object",
  "title": "CompanyAlreadyExistsErrorResponse",
  "example": {
    "message": {
      "code": "resource_already_exists",
      "message": "The company with the provided EIN is already registered.",
      "resource_id": "d1bb9535-3296-4240-8a67-81475bd24e80",
      "resource_type": "company_creation"
    }
  },
  "x-struct": null,
  "properties": {
    "code": {
      "type": "string",
      "pattern": "resource_already_exists",
      "x-struct": null,
      "x-validate": null
    },
    "message": {
      "type": "string",
      "pattern": "The company with the provided EIN is already registered.",
      "x-struct": null,
      "x-validate": null
    },
    "resource_id": {
      "type": "string",
      "format": "uuid",
      "x-struct": null,
      "x-validate": null
    },
    "resource_type": {
      "type": "string",
      "pattern": "company_creation",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Error returned when a company with matching criteria already exists"
}
object CompanyCreationConflictErrorResponse
{
  "type": "object",
  "title": "CompanyCreationConflictErrorResponse",
  "x-struct": null,
  "properties": {
    "message": {
      "oneOf": [
        {
          "$ref": "#/components/schemas/CompanyAlreadyExistsErrorResponse"
        },
        {
          "$ref": "#/components/schemas/CompanyNotEligibleForCreationErrorResponse"
        }
      ],
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object CompanyCreationResponse
{
  "type": "object",
  "title": "CompanyCreationResponse",
  "x-struct": null,
  "properties": {
    "data": {
      "oneOf": [
        {
          "$ref": "#/components/schemas/CompanyResponse"
        },
        {
          "$ref": "#/components/schemas/CompanyWithTokensResponse"
        }
      ],
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object CompanyDepartment
{
  "type": "object",
  "title": "CompanyDepartment",
  "example": {
    "id": "89c4fbb2-cd1f-4334-8e4b-280f8795bbd8X",
    "name": "Marketing",
    "company_id": "669f9e18-889f-4c2c-95b8-67795a3113cc"
  },
  "required": [
    "id",
    "company_id",
    "name"
  ],
  "x-struct": null,
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "x-struct": null,
      "x-validate": null
    },
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "company_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "Company ID"
    }
  },
  "x-validate": null
}
object CompanyDepartmentCreatedResponse
{
  "type": "object",
  "title": "CompanyDepartmentCreatedResponse",
  "example": {
    "data": {
      "company_department": {
        "id": "89c4fbb2-cd1f-4334-8e4b-280f8795bbd8X",
        "name": "Marketing",
        "company_id": "669f9e18-889f-4c2c-95b8-67795a3113cc"
      }
    }
  },
  "x-struct": null,
  "properties": {
    "company_department": {
      "$ref": "#/components/schemas/CompanyDepartment"
    }
  },
  "x-validate": null
}
object CompanyManager
{
  "type": "object",
  "title": "CompanyManager",
  "example": {
    "role": "owner",
    "user_id": "983088c9-user-id-023fc08b8625",
    "user_name": "Anne White",
    "company_id": "0a8s2d1-company-id-2e3f4th",
    "user_email": "user@example.com"
  },
  "required": [
    "company_id",
    "user_id",
    "user_name",
    "user_email",
    "role"
  ],
  "x-struct": null,
  "properties": {
    "role": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "Company Manager role."
    },
    "user_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "User ID"
    },
    "user_name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "User's name"
    },
    "company_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "Company ID"
    },
    "user_email": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "User Email"
    }
  },
  "x-validate": null
}
object CompanyManagerData
{
  "type": "object",
  "title": "CompanyManagerData",
  "example": {
    "company_manager": {
      "role": "owner",
      "user_id": "983088c9-user-id-023fc08b8625",
      "user_name": "Anne White",
      "company_id": "0a8s2d1-company-id-2e3f4th",
      "user_email": "user@example.com"
    }
  },
  "required": [
    "company_manager"
  ],
  "x-struct": null,
  "properties": {
    "company_manager": {
      "$ref": "#/components/schemas/CompanyManager"
    }
  },
  "x-validate": null
}
object CompanyManagerParams
{
  "type": "object",
  "title": "CompanyManagerParams",
  "required": [
    "name",
    "email",
    "role"
  ],
  "x-struct": null,
  "properties": {
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The name of the company manager"
    },
    "role": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The role assigned for the new manager. The value should be one of the following:\n\n- `admin`: an Admin can manage most of the resources in remote.\n- `onboarding_manager`: an Onboarding Manager can add, see and manage new hires.\n- `people_manager`: a People Manager can view employee profiles of the team members they manage and approve and decline time off and expenses for their employees.\n"
    },
    "email": {
      "type": "string",
      "format": "email",
      "x-struct": null,
      "x-validate": null,
      "description": "The work email of the company manager"
    },
    "company_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The Company ID. Required if the access token can access multiple companies. Optional otherwise."
    }
  },
  "x-validate": null
}
object CompanyManagerResponse
{
  "type": "object",
  "title": "CompanyManagerResponse",
  "example": {
    "data": {
      "company_manager": {
        "role": "owner",
        "user_id": "983088c9-user-id-023fc08b8625",
        "user_name": "Anne White",
        "company_id": "0a8s2d1-company-id-2e3f4th",
        "user_email": "user@example.com"
      }
    }
  },
  "required": [
    "data"
  ],
  "x-struct": null,
  "properties": {
    "data": {
      "$ref": "#/components/schemas/CompanyManagerData"
    }
  },
  "x-validate": null
}
object CompanyManagersResponse
{
  "type": "object",
  "title": "CompanyManagersResponse",
  "example": {
    "total_count": 1,
    "total_pages": 1,
    "current_page": 1,
    "company_managers": [
      {
        "role": "owner",
        "user_id": "983088c9-user-id-023fc08b8625",
        "user_name": "Anne White",
        "company_id": "0a8s2d1-company-id-2e3f4th",
        "user_email": "user@example.com"
      }
    ]
  },
  "x-struct": null,
  "properties": {
    "data": {
      "type": "object",
      "x-struct": null,
      "properties": {
        "total_count": {
          "type": "integer",
          "x-struct": null,
          "x-validate": null,
          "description": "The total number of records in the result"
        },
        "total_pages": {
          "type": "integer",
          "x-struct": null,
          "x-validate": null,
          "description": "The total number of pages the user can go through"
        },
        "current_page": {
          "type": "integer",
          "x-struct": null,
          "x-validate": null,
          "description": "The current page among all of the total_pages"
        },
        "company_managers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/CompanyManager"
          },
          "x-struct": null,
          "x-validate": null
        }
      },
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Response schema listing many company_managers"
}
object CompanyNotEligibleForCreationErrorResponse
{
  "type": "object",
  "title": "CompanyNotEligibleForCreationErrorResponse",
  "example": {
    "message": {
      "code": "resource_not_eligible",
      "message": "The company already have employees in integration supported countries.",
      "resource_id": "d1bb9535-3296-4240-8a67-81475bd24e80",
      "resource_type": "company_creation"
    }
  },
  "x-struct": null,
  "properties": {
    "code": {
      "type": "string",
      "pattern": "resource_not_eligible",
      "x-struct": null,
      "x-validate": null
    },
    "message": {
      "type": "string",
      "pattern": "The company already have employees in integration supported countries.",
      "x-struct": null,
      "x-validate": null
    },
    "resource_id": {
      "type": "string",
      "format": "uuid",
      "x-struct": null,
      "x-validate": null
    },
    "resource_type": {
      "type": "string",
      "pattern": "company_creation",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Error returned when the company already have employees in countries supported by the integration."
}
object CompanyResponse
{
  "type": "object",
  "title": "CompanyResponse",
  "example": {
    "data": {
      "company": {
        "id": "e5a8b061-company-id-4c5c81ac885eX",
        "name": "Your Company Name",
        "status": "active",
        "created_at": "2021-10-29T12:39:13",
        "updated_at": "2021-10-29T12:39:15",
        "external_id": "00001111",
        "country_code": "USA",
        "phone_number": "+1123123456",
        "address_details": {
          "city": "San Francisco",
          "state": "CA",
          "address": "1709 Broderick St",
          "postal_code": "94115",
          "address_line_2": "Flat number 123"
        },
        "desired_currency": "USD",
        "company_owner_name": "Joe Smith",
        "company_owner_email": "te@remote.com",
        "bank_account_details": {
          "name": "Bank name",
          "account_type": "savings",
          "account_holder": "Joe Smith",
          "account_number": "31234123123",
          "ownership_type": "BUSINESS",
          "routing_number": "123124123"
        },
        "terms_of_service_accepted_at": "2021-10-29T12:39:15Z"
      }
    }
  },
  "x-struct": null,
  "properties": {
    "company": {
      "$ref": "#/components/schemas/Company"
    }
  },
  "x-validate": null,
  "description": "Shows a company"
}
object CompanyWithTokensResponse
{
  "type": "object",
  "title": "CompanyWithTokensResponse",
  "example": {
    "data": {
      "tokens": {
        "user_id": "6550e536-8655-4bce-8bd9-b295f786ad71",
        "company_id": "6e60f5f9-e6a6-4b04-b13c-84bced848bab",
        "expires_in": 7200,
        "token_type": "Bearer",
        "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ",
        "refresh_token": "b480036a-d229-49ef-a606-7e8fba58a5eb"
      },
      "company": {
        "id": "e5a8b061-company-id-4c5c81ac885e",
        "name": "Your Company Name",
        "status": "active",
        "created_at": "2021-10-29T12:39:13",
        "updated_at": "2021-10-29T12:39:15",
        "external_id": "00001111",
        "country_code": "USA",
        "phone_number": "+1123123456",
        "address_details": {
          "city": "San Francisco",
          "state": "CA",
          "address": "1709 Broderick St",
          "postal_code": "94115",
          "address_line_2": "Flat number 123"
        },
        "desired_currency": "USD",
        "company_owner_name": "Joe Smith",
        "company_owner_email": "te@remote.com",
        "bank_account_details": {
          "name": "Bank name",
          "account_type": "savings",
          "account_holder": "Joe Smith",
          "account_number": "31234123123",
          "ownership_type": "BUSINESS",
          "routing_number": "123124123"
        },
        "terms_of_service_accepted_at": "2021-10-29T12:39:15Z"
      }
    }
  },
  "x-struct": null,
  "properties": {
    "tokens": {
      "$ref": "#/components/schemas/OAuth2Tokens"
    },
    "company": {
      "$ref": "#/components/schemas/Company"
    }
  },
  "x-validate": null,
  "description": "Shows a company with its refresh and access tokens. Please contact Remote if you need the tokens when creating a company."
}
object Compensation
{
  "type": "object",
  "title": "Compensation",
  "example": {
    "amount": 33000,
    "currency_code": "CAD"
  },
  "required": [
    "amount",
    "currency_code"
  ],
  "x-struct": null,
  "properties": {
    "amount": {
      "type": "integer",
      "x-struct": null,
      "x-validate": null
    },
    "currency_code": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object CompleteOnboarding
{
  "type": "object",
  "title": "CompleteOnboarding",
  "x-struct": null,
  "properties": {
    "employment_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Parameters to complete onboarding"
}
object ConflictResponse
{
  "type": "object",
  "title": "ConflictResponse",
  "example": {
    "message": "Company needs to be in status active to manage employments"
  },
  "x-struct": null,
  "properties": {
    "message": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object ContractAmendment
{
  "type": "object",
  "title": "ContractAmendment",
  "example": {
    "id": "ba310525-9282-40c9-8977-14d844bf891aX",
    "status": "submitted",
    "changes": {
      "contract.job_title": {
        "current": "A new job title",
        "previous": "An old job title"
      },
      "compensation.amount": {
        "current": 500000,
        "previous": 400000
      },
      "contract_details.details.contract_duration_type": {
        "current": "fixed_term",
        "previous": "indefinite"
      }
    },
    "requested_by": "5a31f3c1-d7a7-4311-89cb-928959d3d540",
    "submitted_at": "2023-04-13T13:35:06Z",
    "employment_id": "1e74fdc2-7420-4eef-ab0a-b794cbbef4e1",
    "requested_details": {
      "effective_date": "2024-03-04",
      "reason_for_change": "annual_pay_adjustment",
      "additional_comments": null,
      "salary_decrease_details": null,
      "reason_for_change_description": null
    },
    "zendesk_ticket_url": "https://zendesk.com/ticket-23333",
    "amendment_contract_id": "8772a9f1-b43c-46be-a1ce-e50b6819f5ee"
  },
  "required": [
    "id",
    "amendment_contract_id",
    "employment_id",
    "status",
    "requested_by",
    "submitted_at",
    "request_details",
    "changes",
    "zendesk_ticket_url"
  ],
  "x-struct": null,
  "properties": {
    "id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "status": {
      "enum": [
        "submitted",
        "in_review",
        "done",
        "canceled",
        "deleted"
      ],
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "changes": {
      "type": "object",
      "x-struct": null,
      "x-validate": null,
      "description": "Describes all the changes requested for the contract and contract details with all their previous and current values."
    },
    "requested_by": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "submitted_at": {
      "type": "string",
      "format": "datetime",
      "x-struct": null,
      "x-validate": null
    },
    "employment_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "request_details": {
      "$ref": "#/components/schemas/RequestDetails"
    },
    "zendesk_ticket_url": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "amendment_contract_id": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Contract Amendment"
}
object ContractAmendmentAutomatableResponse
{
  "type": "object",
  "title": "ContractAmendmentAutomatableResponse",
  "x-struct": null,
  "properties": {
    "data": {
      "type": "object",
      "x-struct": null,
      "properties": {
        "message": {
          "type": "string",
          "x-struct": null,
          "x-validate": null,
          "description": "The message to explain how the contract amendment request will be processed depending if it is automatable or not."
        },
        "automatable": {
          "type": "boolean",
          "x-struct": null,
          "x-validate": null,
          "description": "If true, it means that the contract amendment request is automatable."
        }
      },
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Contract Amendment Automatable response"
}
object ContractAmendmentFormResponse
{
  "type": "object",
  "title": "ContractAmendmentFormResponse",
  "example": {
    "data": {
      "type": "object",
      "required": [
        "job_title",
        "effective_date"
      ],
      "properties": {
        "job_title": {
          "type": "string",
          "title": "Job title",
          "maxLength": 255,
          "description": "What is their job title? E.g. Product designer"
        },
        "effective_date": {
          "type": "date",
          "title": "Effective date of change",
          "description": "If you want to backdate this amendment, we cannot guarantee your preferred date is possible due to country-specific laws.\nPlease enter your preferred date, and we’ll reach out to you if there are any issues.\n"
        }
      }
    }
  },
  "x-struct": null,
  "properties": {
    "data": {
      "type": "object",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Object with required and optional fields, its descriptions and suggested presentation"
}
object ContractAmendmentResponse
{
  "type": "object",
  "title": "ContractAmendmentResponse",
  "x-struct": null,
  "properties": {
    "data": {
      "type": "object",
      "required": [
        "contract_amendment"
      ],
      "x-struct": null,
      "properties": {
        "contract_amendment": {
          "$ref": "#/components/schemas/ContractAmendment"
        }
      },
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "Contract Amendment response"
}
object ContractAmendmentSchemaParams
{
  "type": "object",
  "title": "ContractAmendmentSchemaParams",
  "required": [
    "country_code",
    "employment_id"
  ],
  "x-struct": null,
  "properties": {
    "form": {
      "enum": [
        "contract_amendment"
      ],
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "Name of the desired form"
    },
    "country_code": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "Country code according to ISO 3-digit alphabetic codes."
    },
    "employment_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null,
      "description": "The ID of the employment concerned by the contract amendment request."
    }
  },
  "x-validate": null
}
object ContractPendingChanges
{
  "type": "object",
  "title": "ContractPendingChanges",
  "example": {
    "changes": {
      "contract.job_title": {
        "current": "Senior Engineer",
        "previous": "Engineer"
      }
    },
    "contract_id": "0073fcb5-b669-4e4a-b963-2a47744e75a1",
    "effective_at": "2021-07-15T18:18:17Z"
  },
  "required": [
    "effective_at",
    "contract_id",
    "changes"
  ],
  "x-struct": null,
  "properties": {
    "changes": {
      "type": "object",
      "x-struct": null,
      "x-validate": null,
      "description": "Describes all the changes requested for the contract and contract details with all their previous and current values.\nIts properties may vary depending on the country.\n"
    },
    "contract_id": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "effective_at": {
      "$ref": "#/components/schemas/DateTimeIso8601"
    }
  },
  "x-validate": null
}
string CostCalculator.CountryAvailability
{
  "enum": [
    "active",
    "coming_soon"
  ],
  "type": "string",
  "title": "CostCalculator.CountryAvailability",
  "example": "active",
  "x-struct": null,
  "x-validate": null,
  "description": "- active: country is ready to onboard employee\n- coming_soon: country is in process of getting ready\n"
}
object CostCalculator.CountryLevelRegion
{
  "type": "object",
  "title": "CostCalculator.CountryLevelRegion",
  "example": {
    "code": "PRT",
    "name": "Portugal",
    "currency": {
      "code": "EUR",
      "name": "European Euro",
      "slug": "eur-3b840951-099f-4bd5-90b9-032f7bfe51d9",
      "symbol": "€"
    },
    "region_slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5",
    "availability": "active",
    "child_regions": {
      "code": "USA",
      "name": "United States",
      "slug": "663e0b79-c893-45ff-a1b2-f6dcabc098b5"
    },
    "has_additional_fields": "true",
    "original_country_slug": "portugal-ab18d96a-a9fd-42c0-9688-24f963d8bdc1"
  },
  "required": [
    "code",
    "currency",
    "name",
    "original_country_slug",
    "region_slug",
    "availability",
    "child_regions"
  ],
  "x-struct": null,
  "properties": {
    "code": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "currency": {
      "$ref": "#/components/schemas/Currency"
    },
    "region_slug": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "availability": {
      "$ref": "#/components/schemas/CostCalculator.CountryAvailability"
    },
    "child_regions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/MinimalRegion"
      },
      "x-struct": null,
      "x-validate": null
    },
    "has_additional_fields": {
      "type": "boolean",
      "x-struct": null,
      "x-validate": null
    },
    "original_country_slug": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null,
  "description": "A supported country on Remote"
}
object CostCalculator.ListCountryResponse
{
  "type": "object",
  "title": "CostCalculator.ListCountryResponse",
  "required": [
    "data"
  ],
  "x-struct": null,
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CostCalculator.CountryLevelRegion"
      },
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}
object CostCalculatorCost
{
  "type": "object",
  "title": "CostCalculatorCost",
  "example": {
    "name": "Insurance",
    "amount": 1120000,
    "description": "Description of how the amount is calculated.",
    "zendesk_article_url": "https://examplezendesk.com/article/1234"
  },
  "required": [
    "amount",
    "description",
    "name",
    "zendesk_article_url"
  ],
  "x-struct": null,
  "properties": {
    "name": {
      "type": "string",
      "x-struct": null,
      "x-validate": null
    },
    "amount": {
      "type": "integer",
      "x-struct": null,
      "x-validate": null
    },
    "description": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    },
    "zendesk_article_url": {
      "type": "string",
      "nullable": true,
      "x-struct": null,
      "x-validate": null
    }
  },
  "x-validate": null
}