## Get one of an employer's benefit plan years `employers.retrieve_benefit_plan_year(benefit_plan_year_id, **kwargs) -> EmployerRetrieveBenefitPlanYearResponse` **get** `/v1/employers/{employer_id}/benefit-plan-years/{benefit_plan_year_id}` Returns one benefit plan year in full — its benefit details plus the per-benefit enrollment rate and SPD link — addressed by its `benefit_plan_year_id`. The caller must be authorized for the employer; an unknown or unauthorized plan year returns 404. ### Parameters - `employer_id: String` Unique employer identifier (empr_*) - `benefit_plan_year_id: String` Unique benefit-plan-year identifier (plyr_*). ### Returns - `class EmployerRetrieveBenefitPlanYearResponse` Response containing a single employer benefit plan year resource. - `data: { benefit_id, benefit_plan_year_id, carrier, 17 more}` One plan year, detail view. Standalone (no shared base) so the exact detail payload is readable in one place; the list serializer is a separate class even where fields overlap. Detail carries the SPD link and omits the list-only `is_current` flag. - `benefit_id: String` Prefixed benefit identifier (`bprd_*`). - `benefit_plan_year_id: String` Prefixed plan-year identifier (`plyr_*`). - `carrier: String` Carrier name, or null (e.g. ICHRA). - `contribution_strategy: { contribution_tiers, ichra_contribution_classes}` How the plan year prices contributions: exactly one collection is populated, determined by the plan year's `family` (ICHRA vs tier-priced). - `contribution_tiers: Array[{ benefit_plan_id, benefit_plan_name, benefit_plan_tier_name, 5 more}]` Coverage tiers and their costs; empty for ICHRA benefits. - `benefit_plan_id: String` Prefixed benefit-plan identifier (`bpln_*`). - `benefit_plan_name: String` Benefit plan name. - `benefit_plan_tier_name: String` Coverage-tier name. - `cost: Integer` Monthly employee deduction in cents. - `cost_per_dependent: Integer` Monthly employee deduction per dependent, in cents. - `coverage_tier: :Unspecified | :EE | :ES | 2 more` * `Unspecified` - Unspecified * `EE` - EE * `ES` - ES * `EC` - EC * `EF` - EF - `:Unspecified` - `:EE` - `:ES` - `:EC` - `:EF` - `dependents_required_in: bool` Whether dependents are required for this tier. - `spouse_required_in: bool` Whether a spouse is required for this tier. - `ichra_contribution_classes: Array[{ amount_in_cents, compensation, contribution_class_id, 6 more}]` ICHRA contribution classes; empty for tier-priced benefits. - `amount_in_cents: Integer` Monthly allowance in cents. - `compensation: :Unspecified | :Salary | :Hourly` * `Unspecified` - Unspecified * `Salary` - Salary * `Hourly` - Hourly - `:Unspecified` - `:Salary` - `:Hourly` - `contribution_class_id: String` Prefixed contribution-class identifier (`iccl_*`). - `employment: :Unspecified | :"Full Time" | :"Part Time" | 2 more` * `Unspecified` - Unspecified * `Full Time` - Full Time * `Part Time` - Part Time * `Temporary` - Temporary * `Seasonal` - Seasonal - `:Unspecified` - `:"Full Time"` - `:"Part Time"` - `:Temporary` - `:Seasonal` - `family_status: :Unspecified | :EE | :ES | 2 more` * `Unspecified` - Unspecified * `EE` - EE * `ES` - ES * `EC` - EC * `EF` - EF - `:Unspecified` - `:EE` - `:ES` - `:EC` - `:EF` - `location: :Unspecified | :State` * `Unspecified` - Unspecified * `State` - State - `:Unspecified` - `:State` - `location_value: String` Location matcher value (CSV of state codes), or null. - `max_age: Integer` Age-band upper bound, or null. - `min_age: Integer` Age-band lower bound, or null. - `coverage_end: Date` Coverage end. - `coverage_start: Date` Coverage start. - `eligibility_policy: { rules, termination_n_months, termination_rule, waiting_period}` The plan year's active eligibility policy. Mirrors the internal `PlanYearEligibilityPolicyDTO` but exposes only the public subset (no raw ids, `active_in`, or timestamps). - `rules: Array[{ compensation_type, eligible_geographical_location, employee_class}]` Eligibility rules; never empty for a valid policy. - `compensation_type: :Salary | :Hourly | :All` * `Salary` - Salary * `Hourly` - Hourly * `All` - All - `:Salary` - `:Hourly` - `:All` - `eligible_geographical_location: { state_codes, type}` Geographic matcher. - `state_codes: Array[String]` States the rule is restricted to; empty when `type` is `All`. - `type: :All | :StateCodes` * `All` - All * `StateCodes` - State Codes - `:All` - `:StateCodes` - `employee_class: :"Full Time" | :"Part Time" | :Temporary | 4 more` * `Full Time` - Full Time * `Part Time` - Part Time * `Temporary` - Temporary * `Intern` - Intern * `Seasonal` - Seasonal * `Individual Contractor` - Individual Contractor * `All` - All - `:"Full Time"` - `:"Part Time"` - `:Temporary` - `:Intern` - `:Seasonal` - `:"Individual Contractor"` - `:All` - `termination_n_months: Integer` Months of continued coverage; set only when `termination_rule` is `END_OF_N_MONTHS`. - `termination_rule: :END_OF_N_MONTHS | :END_OF_PLAN_YEAR` * `END_OF_N_MONTHS` - End Of N Months * `END_OF_PLAN_YEAR` - End Of Plan Year - `:END_OF_N_MONTHS` - `:END_OF_PLAN_YEAR` - `waiting_period: :FIRST_OF_FOLLOWING_MONTH | :THIRTY_DAYS | :SIXTY_DAYS` * `FIRST_OF_FOLLOWING_MONTH` - First Of Following Month * `THIRTY_DAYS` - Thirty Days * `SIXTY_DAYS` - Sixty Days - `:FIRST_OF_FOLLOWING_MONTH` - `:THIRTY_DAYS` - `:SIXTY_DAYS` - `employee_contribution: { max_cents, min_cents}` Employee contribution range. - `max_cents: Integer` Highest per-tier contribution in cents. - `min_cents: Integer` Lowest per-tier contribution in cents. - `employer_contribution: { max_cents, min_cents}` Employer contribution range. - `max_cents: Integer` Highest per-tier contribution in cents. - `min_cents: Integer` Lowest per-tier contribution in cents. - `enrollment_rate: { eligible, enrolled, percentage}` Enrolled/eligible rate for this plan year. - `eligible: Integer` Employees eligible for this plan year. - `enrolled: Integer` Employees enrolled in this plan year. - `percentage: Integer` `enrolled / eligible` whole-number percent (0 when none). - `family: :mec | :mvp | :ichra | 3 more` * `mec` - Mec * `mvp` - Mvp * `ichra` - Ichra * `vpc` - Vpc * `dental` - Dental * `vision` - Vision - `:mec` - `:mvp` - `:ichra` - `:vpc` - `:dental` - `:vision` - `network_names: Array[String]` Displayed networks: ["multi"] for ICHRA, otherwise the plan year's distinct network names. - `offered_states: Array[String]` Distinct offered state codes. - `open_enrollment_end: Date` Open-enrollment end. - `open_enrollment_start: Date` Open-enrollment start. - `premium_in_cents: Integer` Monthly premium in cents; only for an ICHRA benefit with effective coverage. - `product_name: String` Benefit/product display name. - `spd_file_url: String` Summary Plan Description (SPD) link, or null. - `status: :active | :upcoming | :open_enrollment | :inactive` * `active` - Active * `upcoming` - Upcoming * `open_enrollment` - Open Enrollment * `inactive` - Inactive - `:active` - `:upcoming` - `:open_enrollment` - `:inactive` - `year: Integer` Calendar coverage year. ### Example ```ruby require "vitable_connect" vitable_connect = VitableConnect::Client.new( api_key: "My API Key", environment: "environment_1" # defaults to "production" ) response = vitable_connect.employers.retrieve_benefit_plan_year( "plyr_abc123def456", employer_id: "empr_abc123def456" ) puts(response) ``` #### Response ```json { "data": { "benefit_id": "benefit_id", "benefit_plan_year_id": "benefit_plan_year_id", "carrier": "carrier", "contribution_strategy": { "contribution_tiers": [ { "benefit_plan_id": "benefit_plan_id", "benefit_plan_name": "benefit_plan_name", "benefit_plan_tier_name": "benefit_plan_tier_name", "cost": 0, "cost_per_dependent": 0, "coverage_tier": "Unspecified", "dependents_required_in": true, "spouse_required_in": true } ], "ichra_contribution_classes": [ { "amount_in_cents": 0, "compensation": "Unspecified", "contribution_class_id": "contribution_class_id", "employment": "Unspecified", "family_status": "Unspecified", "location": "Unspecified", "location_value": "location_value", "max_age": 0, "min_age": 0 } ] }, "coverage_end": "2019-12-27", "coverage_start": "2019-12-27", "eligibility_policy": { "rules": [ { "compensation_type": "Salary", "eligible_geographical_location": { "state_codes": [ "string" ], "type": "All" }, "employee_class": "Full Time" } ], "termination_n_months": 0, "termination_rule": "END_OF_N_MONTHS", "waiting_period": "FIRST_OF_FOLLOWING_MONTH" }, "employee_contribution": { "max_cents": 0, "min_cents": 0 }, "employer_contribution": { "max_cents": 0, "min_cents": 0 }, "enrollment_rate": { "eligible": 0, "enrolled": 0, "percentage": 0 }, "family": "mec", "network_names": [ "string" ], "offered_states": [ "string" ], "open_enrollment_end": "2019-12-27", "open_enrollment_start": "2019-12-27", "premium_in_cents": 0, "product_name": "product_name", "spd_file_url": "spd_file_url", "status": "active", "year": 0 } } ```