Kota policies API
The policies API from Kota — 2 operation(s) for policies.
The policies API from Kota — 2 operation(s) for policies.
openapi: 3.1.0
info:
title: API Reference Associated Persons policies API
version: 1.0.0
servers:
- url: https://test.api.kota.io
description: test
- url: https://api.kota.io
description: production
tags:
- name: policies
paths:
/policies:
get:
operationId: list-policies
summary: List all policies
description: Returns a list of `policies`. By default, only `active` and `scheduled` policies are returned. Use the `status` query parameter to filter by other statuses. The `policies` are returned sorted by creation date, with the most recent `policy` appearing first.
tags:
- policies
parameters:
- name: employee_id
in: query
description: Filters policies by employee.
required: false
schema:
type: string
- name: group_id
in: query
description: Filters policies by group.
required: false
schema:
type: string
- name: group_policy_id
in: query
description: Filters policies by group policy.
required: false
schema:
type: string
- name: status
in: query
description: 'Multiple values can be provided by separating them with a comma. Allowed values are: `scheduled`, `active`, `expired`, `cancelled`.'
required: false
schema:
type: string
- name: page
in: query
description: The page of results to return. Defaults to 1 if not provided.
required: false
schema:
type: integer
- name: page_size
in: query
description: The number of results to return per page. Defaults to 10 if not provided. Maximum value is 100.
required: false
schema:
type: integer
- name: Authorization
in: header
description: Authorization header using the Bearer scheme
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyResponsePagedList'
/policies/{policy_id}:
get:
operationId: retrieve-policy
summary: Retrieve a policy
description: Retrieves a `policy` object.
tags:
- policies
parameters:
- name: policy_id
in: path
required: true
schema:
type: string
- name: Authorization
in: header
description: Authorization header using the Bearer scheme
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
components:
schemas:
HealthInsurancePolicyGrossEstimationAmountResponse:
type: object
properties:
employee_contribution:
type: number
format: double
description: Estimated gross premium amount deducted from employee payroll
employer_contribution:
type: number
format: double
description: Estimated gross premium amount paid by the employer
total:
type: number
format: double
description: Total gross premium amount (sum of employee and employer contributions).
required:
- employee_contribution
- employer_contribution
- total
title: HealthInsurancePolicyGrossEstimationAmountResponse
PolicyType:
type: string
enum:
- health_insurance
- life_assurance
title: PolicyType
HealthInsurancePolicyRenewalResponse:
type: object
properties:
renewal_date:
type: string
format: date
description: Renewal date.
window_start_date:
type: string
format: date
description: Renewal window start (inclusive).
window_end_date:
type: string
format: date
description: Renewal window end (inclusive).
status:
$ref: '#/components/schemas/HealthInsurancePolicyRenewalStatus'
description: Current renewal status.
renewed_policy_id:
type:
- string
- 'null'
description: Identifier of the renewed policy. This means existing policy will be replaced by the renewed policy on the renewal date.
required:
- renewal_date
- window_start_date
- window_end_date
- status
title: HealthInsurancePolicyRenewalResponse
HealthInsuranceFamilyTypeCostSharingConfigurationResponse:
type: object
properties:
type:
$ref: '#/components/schemas/HealthInsuranceFamilyCostSharingType'
description: Employer coverage family type
required:
- type
title: HealthInsuranceFamilyTypeCostSharingConfigurationResponse
HealthInsurancePolicyEstimatedGrossPremiumResponse:
type: object
properties:
currency:
$ref: '#/components/schemas/CurrencyCode'
description: Three-letter currency code (e.g., "EUR", "USD", "GBP") for all monetary amounts in this object.
monthly:
$ref: '#/components/schemas/HealthInsurancePolicyGrossEstimationAmountResponse'
description: Estimated monthly gross premium amounts representing regular monthly charges.
term:
$ref: '#/components/schemas/HealthInsurancePolicyGrossEstimationAmountResponse'
description: 'Estimated total gross premium amounts for the complete policy term from start date to renewal date. Note: These amounts reflect the full policy term and do not adjust for early cancellation.'
required:
- currency
- monthly
- term
title: HealthInsurancePolicyEstimatedGrossPremiumResponse
HealthInsurancePolicyConfigurationResponse:
type: object
properties:
cost_sharing:
$ref: '#/components/schemas/HealthInsuranceCostSharingConfigurationResponse'
description: Defines how the policy total cost is shared between employer and employee.
required:
- cost_sharing
title: HealthInsurancePolicyConfigurationResponse
PolicyPlanResponse:
type: object
properties:
id:
type: string
description: Unique identifier for the plan. Prefixed with pl_.
name:
type: string
description: Plan display name.
description:
type: string
description: Short description of the plan.
currency:
$ref: '#/components/schemas/CurrencyCode'
description: ISO 4217 currency code for pricing under this plan.
documents:
type: array
items:
$ref: '#/components/schemas/PlanDocumentResponse'
description: List of plan documents (e.g., IPIDs, T&Cs).
required:
- id
- name
- description
- currency
- documents
title: PolicyPlanResponse
HealthInsuranceMemberSelectionCostSharingConfigurationResponse:
type: object
properties:
partner:
type: boolean
description: If a spouse/partner is covered.
children:
type: boolean
description: If children are covered.
required:
- partner
- children
title: HealthInsuranceMemberSelectionCostSharingConfigurationResponse
SexAtBirth:
type: string
enum:
- male
- female
title: SexAtBirth
HealthInsuranceCostSharingType:
type: string
enum:
- member_count
- member_selection
- percentage
- policyholder_only
- family_type
title: HealthInsuranceCostSharingType
MemberType:
type: string
enum:
- policyholder
- spouse
- partner
- adult_dependant
- child
title: MemberType
DisclosureType:
type: string
enum:
- intermediary_role
- intermediary_commission
- underwriter_disclaimer
- anti_selection_notice
- statement_of_needs
- product_information
- pre_existing_conditions
- statutory_warning
title: DisclosureType
CurrencyCode:
type: string
enum:
- eur
- aed
- afn
- xcd
- all
- amd
- aoa
- ars
- usd
- aud
- awg
- azn
- bam
- bbd
- bdt
- xof
- bgn
- bhd
- bif
- bmd
- bnd
- bob
- bov
- brl
- bsd
- inr
- btn
- nok
- bwp
- byn
- bzd
- cad
- xaf
- cdf
- chf
- che
- chw
- nzd
- clp
- clf
- cny
- cop
- cou
- crc
- cup
- cuc
- cve
- ang
- czk
- djf
- dkk
- dop
- dzd
- egp
- mad
- ern
- etb
- fjd
- fkp
- mdl
- gbp
- gel
- ghs
- gip
- gmd
- gnf
- gtq
- gyd
- hkd
- hnl
- hrk
- htg
- huf
- idr
- xdr
- ils
- iqd
- irr
- isk
- jmd
- jod
- jpy
- kes
- kgs
- khr
- kmf
- kpw
- krw
- kwd
- kyd
- kzt
- lak
- lbp
- lkr
- lrd
- lsl
- zar
- lyd
- mga
- mkd
- mmk
- mnt
- mop
- mru
- mur
- mvr
- mwk
- mxn
- mxv
- myr
- mzn
- nad
- xpf
- ngn
- nio
- npr
- omr
- pab
- pen
- pgk
- php
- pkr
- pln
- pyg
- qar
- ron
- rsd
- rub
- rwf
- sar
- sbd
- scr
- sdg
- sek
- sgd
- shp
- sll
- sos
- srd
- ssp
- stn
- svc
- xsu
- syp
- twd
- szl
- thb
- tjs
- tmt
- tnd
- top
- try
- ttd
- tzs
- uah
- ugx
- usn
- uyu
- uyi
- uyw
- uzs
- ves
- vnd
- vuv
- wst
- yer
- xua
- zmw
- zwl
title: CurrencyCode
HealthInsurancePercentageCostSharingConfigurationResponse:
type: object
properties:
percentage:
type: integer
description: "Employer coverage percentage:\n For 40% send 40.\n For 100% send 100."
required:
- percentage
title: HealthInsurancePercentageCostSharingConfigurationResponse
HealthInsuranceMemberCountCostSharingConfigurationResponse:
type: object
properties:
adults:
type: integer
description: Number of additional adults covered, including partner/spouse.
children:
type: integer
description: Number of additional children covered.
required:
- adults
- children
title: HealthInsuranceMemberCountCostSharingConfigurationResponse
HealthInsurancePolicyResponse:
type: object
properties:
policy_number:
type:
- string
- 'null'
description: Provider-issued policy number for health insurance
opt_out_deadline:
type: string
format: date
description: Deadline for opting out of the policy. Members cannot opt out after this date.
initial_dependents_update_deadline:
type:
- string
- 'null'
format: date
description: Represents the last date to add or remove dependents during the initial adjustment period. The deadline date is inclusive (changes are allowed on that date). This value should be evaluated using the local time zone where the policy is active. Returns null when the provider doesn't support dependent modifications during the initial adjustment period.
renewal:
$ref: '#/components/schemas/HealthInsurancePolicyRenewalResponse'
description: Renewal information for the policy
dependents_supported:
type: boolean
description: Whether this policy supports adding or removing dependents.
configuration:
$ref: '#/components/schemas/HealthInsurancePolicyConfigurationResponse'
description: How benefit costs are shared between employer and employee
members:
type: array
items:
$ref: '#/components/schemas/PolicyMemberResponse'
description: List of members on the health insurance policy
estimated_gross_premium:
$ref: '#/components/schemas/HealthInsurancePolicyEstimatedGrossPremiumResponse'
description: 'Estimated gross premium amounts for this health insurance policy based on current enrollment and policy configuration. Important: These estimates are for planning purposes only and may differ from actual billed amounts due to life events, policy changes, insurer billing practices, or timing adjustments. For accurate payroll amounts, use the Contribution Reporting API.'
required:
- opt_out_deadline
- initial_dependents_update_deadline
- renewal
- dependents_supported
- configuration
- members
- estimated_gross_premium
title: HealthInsurancePolicyResponse
PolicyResponse:
type: object
properties:
id:
type: string
description: Unique identifier for the policy. Prefixed with `p_`.
employee_id:
type: string
description: Identifier of the employee associated with this policy. Prefixed with `ee_`.
group_policy_id:
type: string
description: Identifier of the group policy id associated with this policy. Prefixed with `gp_`.
bundling_type:
$ref: '#/components/schemas/BundlingType'
description: Indicates how this policy is bundled within a group
status:
$ref: '#/components/schemas/PolicyStatus'
description: Current lifecycle state of the policy
group_id:
type: string
description: Identifier of the group associated with this policy. Prefixed with `gr_`.
provider:
$ref: '#/components/schemas/PolicyProviderResponse'
description: Provider information for this policy
plan:
$ref: '#/components/schemas/PolicyPlanResponse'
description: Plan information for this policy
start_date:
type: string
format: date
description: Policy start (effective) date in ISO 8601 (YYYY-MM-DD)
end_date:
type:
- string
- 'null'
format: date
description: Policy end date (inclusive) in ISO 8601, or null if open-ended
cancellation_date:
type:
- string
- 'null'
format: date
description: Date the policy was cancelled (if applicable)
type:
$ref: '#/components/schemas/PolicyType'
description: Policy type. Determines which sub-object is populated.
health_insurance:
$ref: '#/components/schemas/HealthInsurancePolicyResponse'
description: Health insurance–specific fields (present when `type=health_insurance`)
disclosures:
type: array
items:
$ref: '#/components/schemas/DisclosureResponse'
description: Disclosures associated with this policy.
object:
type: string
description: Object type
required:
- id
- employee_id
- group_policy_id
- bundling_type
- status
- group_id
- provider
- plan
- start_date
- type
- disclosures
title: PolicyResponse
PolicyResponsePagedList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PolicyResponse'
description: A paginated array containing the response elements
page:
type: integer
description: The current page of the results
page_size:
type: integer
description: The number of results on this page. This can be different from the requested page size if the total number of results is less than the requested page size
total_count:
type: integer
description: The total number of elements available in the response. This is the total number of elements available across all pages, not just the current page.
has_next_page:
type: boolean
description: Whether there are more pages available after this page
has_previous_page:
type: boolean
description: Whether there are more pages available before this page
required:
- items
- page
- page_size
- total_count
title: PolicyResponsePagedList
PolicyMemberResponse:
type: object
properties:
id:
type: string
description: Unique identifier for the policy member. Prefixed with `pm_`.
member_number:
type:
- string
- 'null'
description: Provider-issued member number, null if not issues yet
first_name:
type: string
description: First name of the member
last_name:
type: string
description: Last name of the member
date_of_birth:
type: string
format: date
description: Date of birth of the member
sex_at_birth:
$ref: '#/components/schemas/SexAtBirth'
description: Sex at birth of the member
member_type:
$ref: '#/components/schemas/MemberType'
description: Type of the policy member
associated_person_id:
type:
- string
- 'null'
description: Identifier of the associated person. Not present for policyholders. Prefixed with `ap_`.
required:
- id
- first_name
- last_name
- date_of_birth
- sex_at_birth
- member_type
title: PolicyMemberResponse
ProblemDetails:
type: object
properties:
type:
type:
- string
- 'null'
title:
type:
- string
- 'null'
status:
type:
- integer
- 'null'
detail:
type:
- string
- 'null'
instance:
type:
- string
- 'null'
title: ProblemDetails
HealthInsuranceCostSharingConfigurationResponse:
type: object
properties:
type:
$ref: '#/components/schemas/HealthInsuranceCostSharingType'
description: Cost sharing type. Determines which sub-object is populated.
member_count:
$ref: '#/components/schemas/HealthInsuranceMemberCountCostSharingConfigurationResponse'
description: Numbers of additional members covered by the employer.
member_selection:
$ref: '#/components/schemas/HealthInsuranceMemberSelectionCostSharingConfigurationResponse'
description: Whether specific member types are covered by the employer.
percentage:
$ref: '#/components/schemas/HealthInsurancePercentageCostSharingConfigurationResponse'
description: Percentage of the premium the employer covers.
family_type:
$ref: '#/components/schemas/HealthInsuranceFamilyTypeCostSharingConfigurationResponse'
description: Type of the family covered by the employer.
required:
- type
title: HealthInsuranceCostSharingConfigurationResponse
DisclosureResponse:
type: object
properties:
category:
$ref: '#/components/schemas/DisclosureCategory'
description: The category of the disclosure.
type:
$ref: '#/components/schemas/DisclosureType'
description: The specific type of disclosure within its category.
text:
type: string
description: The disclosure statement text.
required:
- category
- type
- text
title: DisclosureResponse
PolicyStatus:
type: string
enum:
- scheduled
- active
- expired
- cancelled
title: PolicyStatus
BundlingType:
type: string
enum:
- not_bundled
- bundled_primary
- bundled_secondary
title: BundlingType
HealthInsurancePolicyRenewalStatus:
type: string
enum:
- upcoming
- open
- renewed
- cancelled
title: HealthInsurancePolicyRenewalStatus
PlanDocumentResponse:
type: object
properties:
type:
$ref: '#/components/schemas/PlanDocumentType'
description: Machine-readable document kind used for display and i18n. Possible values are listed below; as this enum can expand with new benefits, unknown values MUST be handled gracefully by clients (fallback to a generic `document` label).
title:
type: string
description: Title of the document.
link:
type: string
description: Public URL to the document. This could be any format (PDF, HTML, etc.).
required:
- title
- link
title: PlanDocumentResponse
DisclosureCategory:
type: string
enum:
- regulatory
- provider
- intermediary
title: DisclosureCategory
PlanDocumentType:
type: string
enum:
- ipid
- table_of_cover
- waiting_periods
- hospital_list
- plan_summary
- terms_and_conditions
- other
title: PlanDocumentType
PolicyProviderResponse:
type: object
properties:
id:
type: string
description: Unique identifier for the provider. Prefixed with pr_.
name:
type: string
description: Provider display name.
description:
type: string
description: Short description of the provider.
logo_url:
type: string
employer_portal_url:
type:
- string
- 'null'
description: URL for the employer portal.
employee_portal_url:
type:
- string
- 'null'
description: URL for the employee portal (may include claims management).
support_phone_number:
type:
- string
- 'null'
description: Provider support phone number in E.164 format.
required:
- id
- name
- description
- logo_url
title: PolicyProviderResponse
HealthInsuranceFamilyCostSharingType:
type: string
enum:
- single
- couple
- single_with_children
- family
title: HealthInsuranceFamilyCostSharingType
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Authorization header using the Bearer scheme