Remote Benefit Offers API
The Benefit Offers API from Remote — 3 operation(s) for benefit offers.
The Benefit Offers API from Remote — 3 operation(s) for benefit offers.
openapi: 3.0.0
info:
title: Remote Address Details Benefit Offers API
version: 0.1.0
servers:
- url: https://gateway.remote.com/
variables: {}
- url: https://gateway.remote-sandbox.com/
variables: {}
security:
- OAuth2: []
tags:
- name: Benefit Offers
paths:
/v1/employments/{employment_id}/benefit-offers:
get:
callbacks: {}
deprecated: false
description: '## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage company resources (`company_admin`) | View benefit offers (`benefit_offer:read`) | Manage benefit offers (`benefit_offer:write`) |
'
operationId: get_v1_employments_employment_id_benefit-offers
parameters:
- 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
minimum: 1
type: integer
- description: Unique identifier of the employment
in: path
name: employment_id
required: true
schema:
$ref: '#/components/schemas/UuidSlug'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Employments.BenefitOffers.ListBenefitOffers'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden
'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
- benefit_offer:read
- benefit_offer:write
- company_admin
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- benefit_offer:read
- benefit_offer:write
- company_admin
- all:write
- all:read
summary: Get employment benefit offers
tags:
- Benefit Offers
put:
callbacks: {}
deprecated: false
operationId: put_v1_employments_employment_id_benefit-offers
parameters:
- description: Unique identifier of the employment
in: path
name: employment_id
required: true
schema:
$ref: '#/components/schemas/UuidSlug'
- description: Version of the form schema
example: 1
in: query
name: json_schema_version
required: false
schema:
default: latest
oneOf:
- description: Specific version number
minimum: 1
type: integer
- description: Use latest version
enum:
- latest
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Unified.Employment.UpsertBenefitOffersRequest'
description: Upsert employment benefit offers request
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Not Found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Unprocessable Entity
summary: Upserts employment benefit offers
tags:
- Benefit Offers
/v1/employments/{employment_id}/benefit-offers/schema:
get:
callbacks: {}
deprecated: false
description: '## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage company resources (`company_admin`) | View benefit offers (`benefit_offer:read`) | Manage benefit offers (`benefit_offer:write`) |
'
operationId: get_v1_employments_employment_id_benefit-offers_schema
parameters:
- description: Unique identifier of the employment
in: path
name: employment_id
required: true
schema:
$ref: '#/components/schemas/UuidSlug'
- description: Version of the form schema
example: 1
in: query
name: json_schema_version
required: false
schema:
default: latest
oneOf:
- description: Specific version number
minimum: 1
type: integer
- description: Use latest version
enum:
- latest
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Unified.Employments.BenefitOffersJSONSchemaResponse'
description: Success
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden
'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
- benefit_offer:read
- benefit_offer:write
- company_admin
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- benefit_offer:read
- benefit_offer:write
- company_admin
- all:write
- all:read
summary: Get a employment benefit offers JSON schema
tags:
- Benefit Offers
/v1/benefit-offers/country-summaries:
get:
callbacks: {}
deprecated: false
description: 'List benefit offers for each country.
## Scopes
| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage company resources (`company_admin`) | View benefit offers (`benefit_offer:read`) | Manage benefit offers (`benefit_offer:write`) |
'
operationId: get_v1_benefit-offers_country-summaries
parameters:
- description: 'Requires a Company-scoped access token obtained through the Authorization Code flow or the Refresh Token flow.
The refresh token needs to have been obtained through the Authorization Code flow.
'
example: Bearer <COMPANY-SCOPED ACCESS TOKEN>
in: header
name: Authorization
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CountrySummariesResponse'
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
- benefit_offer:read
- benefit_offer:write
- company_admin
- all:write
- all:read
OAuth2AuthorizationCode:
- https://gateway.remote.com/company.manage
- benefit_offer:read
- benefit_offer:write
- company_admin
- all:write
- all:read
summary: List Benefit Offers
tags:
- Benefit Offers
components:
schemas:
Unified.Employment.BenefitOffer:
additionalProperties: false
description: The benefit offer for an employment schema
example:
benefit_group:
filter:
name: Benefit Group
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
name: Benefit Group
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
benefit_tier:
display_cost: $1337 + pension
name: Benefit Tier 1
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
properties:
benefit_group:
$ref: '#/components/schemas/Unified.Employment.BenefitGroup'
benefit_tier:
allOf:
- $ref: '#/components/schemas/Unified.Employment.BenefitTier'
example:
display_cost: $1337 + pension
name: Benefit Tier 1
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
nullable: true
title: MaybeUnified.Employment.BenefitTier
type: object
required:
- benefit_group
- benefit_tier
title: Unified.Employment.BenefitOffer
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
BenefitTier:
additionalProperties: false
description: A specific coverage level within a benefit group. For example, a "Health" benefit group might have tiers like "Basic", "Standard", and "Premium", each with different coverage and providers.
example:
description: This is the premium tier for 2023 that includes medical, dental and vision benefits.
id: 66297cfd-cf60-4cf4-a70f-ac2561d92b04
name: Premium 2023 (Medical, Dental and Vision)
providers:
- id: 88297cfd-cf60-4cf4-a70f-ac2861d92b87
name: Health Provider
properties:
description:
description: A detailed description of what this tier covers, including the types of benefits included.
type: string
id:
description: The unique identifier (UUID) of the benefit tier.
type: string
name:
description: The name of this tier (e.g., "Premium 2024 (Medical, Dental and Vision)").
type: string
providers:
description: The insurance carriers or providers associated with this tier.
items:
$ref: '#/components/schemas/BenefitProvider'
type: array
required:
- id
- name
- description
- providers
title: BenefitTier
type: object
OfferedBenefitGroup:
additionalProperties: false
description: A benefit group that has been offered to employees, including enrollment statistics aggregated across all tiers and the individual offered tiers with their own statistics.
example:
benefit_group:
id: 54297cfd-cf60-4cf4-a70f-ac2061d72b44
name: Health
policy_end_date: '2024-12-31'
policy_start_date: '2024-01-01'
employee_stats:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
offered_benefit_tiers:
- benefit_tier:
description: This is the premium tier for 2023 that includes medical, dental and vision benefits.
id: 66297cfd-cf60-4cf4-a70f-ac2561d92b04
name: Premium 2023 (Medical, Dental and Vision)
providers:
- id: 88297cfd-cf60-4cf4-a70f-ac2861d92b87
name: Health Provider
employee_stats:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
properties:
benefit_group:
$ref: '#/components/schemas/BenefitGroup'
employee_stats:
$ref: '#/components/schemas/EmployeeStats'
offered_benefit_tiers:
description: The individual tiers within this group that have been offered, each with their own enrollment statistics.
items:
$ref: '#/components/schemas/OfferedBenefitTier'
type: array
required:
- benefit_group
- employee_stats
- offered_benefit_tiers
title: OfferedBenefitGroup
type: object
Unified.MinimalBenefitGroup:
example:
name: Benefit Group
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
properties:
name:
nullable: true
type: string
slug:
$ref: '#/components/schemas/Slug'
required:
- name
- slug
title: Unified.MinimalBenefitGroup
type: object
OfferedBenefitTier:
additionalProperties: false
description: A benefit tier that has been offered to employees, combined with enrollment statistics for that tier.
example:
benefit_tier:
description: This is the premium tier for 2023 that includes medical, dental and vision benefits.
id: 66297cfd-cf60-4cf4-a70f-ac2561d92b04
name: Premium 2023 (Medical, Dental and Vision)
providers:
- id: 88297cfd-cf60-4cf4-a70f-ac2861d92b87
name: Health Provider
employee_stats:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
properties:
benefit_tier:
$ref: '#/components/schemas/BenefitTier'
employee_stats:
$ref: '#/components/schemas/EmployeeStats'
required:
- benefit_tier
- employee_stats
title: OfferedBenefitTier
type: object
SuccessResponse:
description: A generic success response returned by operations that don't produce a specific resource (e.g., updates, deletes).
example:
data:
status: ok
properties:
data:
properties:
status:
description: The result status. Always `"ok"` for successful operations.
type: string
type: object
required:
- data
title: SuccessResponse
type: object
Slug:
example: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
nullable: false
title: Slug
type: string
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
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
Unified.Employment.BenefitGroup:
additionalProperties: false
example:
filter:
name: Benefit Group
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
name: Benefit Group
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
properties:
filter:
allOf:
- $ref: '#/components/schemas/Unified.MinimalBenefitGroup'
example:
name: Benefit Group
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
nullable: true
title: MaybeUnified.MinimalBenefitGroup
type: object
name:
nullable: true
type: string
slug:
$ref: '#/components/schemas/Slug'
required:
- name
- slug
- filter
title: Unified.Employment.BenefitGroup
type: object
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
EmployeeStats:
additionalProperties: false
description: Enrollment statistics for a benefit at a given level (country, group, or tier). Shows how many employees have been offered the benefit versus how many are actively enrolled.
example:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
properties:
number_of_employees_enrolled:
description: The number of employees currently enrolled in this benefit. An enrolled employee has an active benefit record.
type: integer
number_of_employees_offered:
description: The total number of employees who have been offered this benefit. An employee is counted as offered once a benefit offer record exists, regardless of whether they have enrolled.
type: integer
required:
- number_of_employees_offered
- number_of_employees_enrolled
title: EmployeeStats
type: object
CountrySummariesResponse:
additionalProperties: false
description: Response containing a company's benefit offering summaries broken down by country. Each country includes aggregate enrollment statistics and details of all offered benefit groups and tiers.
example:
data:
company_id: 79297cfd-cf60-4cf4-a70f-ac2061d72a74
country_summaries:
- 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
employee_stats:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
offered_benefit_groups:
- benefit_group:
id: 54297cfd-cf60-4cf4-a70f-ac2061d72b44
name: Health
policy_end_date: '2024-12-31'
policy_start_date: '2024-01-01'
employee_stats:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
offered_benefit_tiers:
- benefit_tier:
description: This is the premium tier for 2023 that includes medical, dental and vision benefits.
id: 66297cfd-cf60-4cf4-a70f-ac2561d92b04
name: Premium 2023 (Medical, Dental and Vision)
providers:
- id: 88297cfd-cf60-4cf4-a70f-ac2861d92b87
name: Health Provider
employee_stats:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
properties:
data:
additionalProperties: false
properties:
company_id:
description: The unique identifier (UUID) of the company these benefit summaries belong to.
type: string
country_summaries:
description: Benefit offering summaries for each country where the company has employees.
items:
$ref: '#/components/schemas/CountrySummary'
type: array
required:
- company_id
- country_summaries
type: object
required:
- data
title: CountrySummariesResponse
type: object
ForbiddenResponse:
description: Returned when the authenticated user or token does not have permission to perform the requested action. Check that the token has the required OAuth2 scopes and that the user has the necessary role.
example:
message: Forbidden
properties:
message:
pattern: Forbidden
type: string
required:
- message
title: ForbiddenResponse
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
CountrySummary:
additionalProperties: false
description: A per-country summary of benefit offerings, including aggregate enrollment statistics and a breakdown of all offered benefit groups and their tiers for that country.
example:
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
employee_stats:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
offered_benefit_groups:
- benefit_group:
id: 54297cfd-cf60-4cf4-a70f-ac2061d72b44
name: Health
policy_end_date: '2024-12-31'
policy_start_date: '2024-01-01'
employee_stats:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
offered_benefit_tiers:
- benefit_tier:
description: This is the premium tier for 2023 that includes medical, dental and vision benefits.
id: 66297cfd-cf60-4cf4-a70f-ac2561d92b04
name: Premium 2023 (Medical, Dental and Vision)
providers:
- id: 88297cfd-cf60-4cf4-a70f-ac2861d92b87
name: Health Provider
employee_stats:
number_of_employees_enrolled: 10
number_of_employees_offered: 12
properties:
country:
$ref: '#/components/schemas/Country'
employee_stats:
$ref: '#/components/schemas/EmployeeStats'
offered_benefit_groups:
description: All benefit groups that have been offered to employees in this country.
items:
$ref: '#/components/schemas/OfferedBenefitGroup'
type: array
required:
- country
- employee_stats
- offered_benefit_groups
title: CountrySummary
type: object
BenefitProvider:
additionalProperties: false
description: The insurance carrier or provider that underwrites a benefit tier. May be null if the benefit tier does not have a specific external provider assigned.
example:
id: 88297cfd-cf60-4cf4-a70f-ac2861d92b87
name: Health Provider
nullable: true
properties:
id:
description: The unique identifier (UUID) of the benefit provider.
type: string
name:
description: The name of the insurance carrier or benefit provider (e.g., "Allianz", "Bupa").
type: string
required:
- id
- name
title: BenefitProvider
type: object
Employments.BenefitOffers.ListBenefitOffers:
additionalProperties: false
description: The list of benefit offers for an employment schema
example:
data:
- benefit_group:
filter:
name: Benefit Group
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
name: Benefit Group
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
benefit_tier:
display_cost: $1337 + pension
name: Benefit Tier 1
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
properties:
data:
items:
$ref: '#/components/schemas/Unified.Employment.BenefitOffer'
type: array
required:
- data
title: Employments.BenefitOffers.ListBenefitOffers
type: object
Unified.Employment.BenefitTier:
additionalProperties: false
example:
display_cost: $1337 + pension
name: Benefit Tier 1
slug: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
properties:
display_cost:
nullable: true
type: string
name:
type: string
slug:
$ref: '#/components/schemas/Slug'
title: Unified.Employment.BenefitTier
type: object
UuidSlug:
description: Identifier of the employment being terminated.
example: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
format: uuid
title: UuidSlug
type: string
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
Unified.Employments.BenefitOffersJSONSchemaResponse:
description: JSON schema response for benefit offers
example:
additionalProperties: false
properties:
health-group-slug:
allOf:
- if:
properties:
filter:
const: individual-slug
then:
properties:
value:
oneOf:
- const: health-individual-basic-slug
title: Health Basic - Individual
x-jsf-presentation:
description: Medical Insurance, Drug Prescriptions, Dental Insurance, Vision Insurance, Life insurance, and AD&D insurance are provided at a flat r
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/remote/refs/heads/main/openapi/remote-benefit-offers-api-openapi.yml