diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 294da0c..e493e5f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,12 +1,14 @@ name: CI on: push: - branches-ignore: - - 'generated' - - 'codegen/**' - - 'integrated/**' - - 'stl-preview-head/**' - - 'stl-preview-base/**' + branches: + - '**' + - '!integrated/**' + - '!stl-preview-head/**' + - '!stl-preview-base/**' + - '!generated' + - '!codegen/**' + - 'codegen/stl/**' pull_request: branches-ignore: - 'stl-preview-head/**' diff --git a/.release-please-manifest.json b/.release-please-manifest.json index cda9cbd..10f3091 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.2" + ".": "0.2.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index da31f6a..5f6a219 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 29 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/vitable%2Fvitable-connect-da7778e69a30f55bdfb58bc3df94cefe7b13a37eee9640eac1aaf43f57a8d149.yml -openapi_spec_hash: 031c9c1d1a6be156666b3230e0b9fb44 +configured_endpoints: 10 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/vitable%2Fvitable-connect-0320b76d8102774d1e66595d7afa37964a6b6d8df15bf01fc90998f83576be1d.yml +openapi_spec_hash: 8d72aaaef87e5e28fcff79bfc13929e2 config_hash: 686598ed50ce0ac460d9a06417655317 diff --git a/CHANGELOG.md b/CHANGELOG.md index a964e25..26d4ae1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## 0.2.0 (2026-03-18) + +Full Changelog: [v0.1.2...v0.2.0](https://github.com/Vitable-Inc/vitable-connect-python/compare/v0.1.2...v0.2.0) + +### Features + +* **api:** api update ([2d17eba](https://github.com/Vitable-Inc/vitable-connect-python/commit/2d17ebab7f730aa1a9a9cba0044d7bd1f05ef3d7)) + + +### Bug Fixes + +* **deps:** bump minimum typing-extensions version ([4f315a4](https://github.com/Vitable-Inc/vitable-connect-python/commit/4f315a4488437d128364f288ae1a2e526aceb639)) +* **pydantic:** do not pass `by_alias` unless set ([7d698a1](https://github.com/Vitable-Inc/vitable-connect-python/commit/7d698a13ec079a12c7681ce236abf4aa9ea765fa)) + + +### Chores + +* **internal:** tweak CI branches ([96b210d](https://github.com/Vitable-Inc/vitable-connect-python/commit/96b210d9f4ace8c61d48775f1cf840e8fcb18d44)) + ## 0.1.2 (2026-03-15) Full Changelog: [v0.1.1...v0.1.2](https://github.com/Vitable-Inc/vitable-connect-python/compare/v0.1.1...v0.1.2) diff --git a/api.md b/api.md index 8c3424d..cb3a689 100644 --- a/api.md +++ b/api.md @@ -27,57 +27,20 @@ Methods: Types: ```python -from vitable_connect.types import Category, Pagination, ProductCode, BenefitProductListResponse +from vitable_connect.types import Category, Pagination, ProductCode ``` -Methods: - -- client.benefit_products.list(\*\*params) -> BenefitProductListResponse - -## PlanYears - -Types: - -```python -from vitable_connect.types.benefit_products import ( - PlanYear, - PlanYearResponse, - PlanYearStatus, - PlanYearListResponse, -) -``` - -Methods: - -- client.benefit_products.plan_years.create(benefit_product_id, \*\*params) -> PlanYearResponse -- client.benefit_products.plan_years.list(benefit_product_id, \*\*params) -> PlanYearListResponse - -# Dependents - -Types: - -```python -from vitable_connect.types import Dependent, DependentResponse, Relationship -``` - -Methods: - -- client.dependents.retrieve(dependent_id) -> DependentResponse -- client.dependents.update(dependent_id, \*\*params) -> DependentResponse - # Employees Types: ```python -from vitable_connect.types import Employee, EmployeeClass, EmployeeResponse, Sex +from vitable_connect.types import Employee, EmployeeClass, EmployeeResponse ``` Methods: - client.employees.retrieve(employee_id) -> EmployeeResponse -- client.employees.update(employee_id, \*\*params) -> EmployeeResponse -- client.employees.terminate(employee_id) -> None ## Enrollments @@ -90,7 +53,6 @@ from vitable_connect.types.employees import EnrollmentList Methods: - client.employees.enrollments.list(employee_id, \*\*params) -> EnrollmentList -- client.employees.enrollments.submit_elections(employee_id, \*\*params) -> EnrollmentList # Employers @@ -104,7 +66,6 @@ Methods: - client.employers.create(\*\*params) -> EmployerResponse - client.employers.retrieve(employer_id) -> EmployerResponse -- client.employers.update(employer_id, \*\*params) -> EmployerResponse - client.employers.list(\*\*params) -> EmployerListResponse - client.employers.create_eligibility_policy(employer_id, \*\*params) -> BenefitEligibilityPolicy @@ -118,7 +79,6 @@ from vitable_connect.types.employers import EmployeeListResponse Methods: -- client.employers.employees.create(employer_id, \*\*params) -> EmployeeResponse - client.employers.employees.list(employer_id, \*\*params) -> EmployeeListResponse # Enrollments @@ -126,60 +86,9 @@ Methods: Types: ```python -from vitable_connect.types import ( - CoverageTier, - Enrollment, - EnrollmentResponse, - EnrollmentStatus, - PlanTier, - EnrollmentListPlansResponse, -) +from vitable_connect.types import Enrollment, EnrollmentResponse, EnrollmentStatus ``` Methods: - client.enrollments.retrieve(enrollment_id) -> EnrollmentResponse -- client.enrollments.list_plans(enrollment_id) -> EnrollmentListPlansResponse -- client.enrollments.reissue(enrollment_id, \*\*params) -> EnrollmentResponse - -# Members - -## Dependents - -Types: - -```python -from vitable_connect.types.members import DependentListResponse -``` - -Methods: - -- client.members.dependents.create(member_id, \*\*params) -> DependentResponse -- client.members.dependents.list(member_id, \*\*params) -> DependentListResponse - -## QualifyingLifeEvents - -Types: - -```python -from vitable_connect.types.members import ( - EventType, - QualifyingLifeEvent, - QualifyingLifeEventResponse, - QualifyingLifeEventStatus, - QualifyingLifeEventListResponse, -) -``` - -Methods: - -- client.members.qualifying_life_events.retrieve(qle_id, \*, member_id) -> QualifyingLifeEventResponse -- client.members.qualifying_life_events.list(member_id, \*\*params) -> QualifyingLifeEventListResponse -- client.members.qualifying_life_events.record(member_id, \*\*params) -> QualifyingLifeEventResponse - -# PlanYears - -Methods: - -- client.plan_years.retrieve(plan_year_id) -> PlanYearResponse -- client.plan_years.update(plan_year_id, \*\*params) -> PlanYearResponse diff --git a/pyproject.toml b/pyproject.toml index 05b20b6..da819ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "vitable_connect" -version = "0.1.2" +version = "0.2.0" description = "The official Python library for the vitable-connect API" dynamic = ["readme"] license = "Apache-2.0" @@ -11,7 +11,7 @@ authors = [ dependencies = [ "httpx>=0.23.0, <1", "pydantic>=1.9.0, <3", - "typing-extensions>=4.10, <5", + "typing-extensions>=4.14, <5", "anyio>=3.5.0, <5", "distro>=1.7.0, <2", "sniffio", diff --git a/src/vitable_connect/_client.py b/src/vitable_connect/_client.py index 1cad96f..e3403b9 100644 --- a/src/vitable_connect/_client.py +++ b/src/vitable_connect/_client.py @@ -32,29 +32,15 @@ ) if TYPE_CHECKING: - from .resources import ( - auth, - members, - employees, - employers, - dependents, - plan_years, - enrollments, - benefit_products, - benefit_eligibility_policies, - ) + from .resources import auth, employees, employers, enrollments, benefit_eligibility_policies from .resources.auth import AuthResource, AsyncAuthResource - from .resources.dependents import DependentsResource, AsyncDependentsResource - from .resources.plan_years import PlanYearsResource, AsyncPlanYearsResource from .resources.enrollments import EnrollmentsResource, AsyncEnrollmentsResource - from .resources.members.members import MembersResource, AsyncMembersResource from .resources.employees.employees import EmployeesResource, AsyncEmployeesResource from .resources.employers.employers import EmployersResource, AsyncEmployersResource from .resources.benefit_eligibility_policies import ( BenefitEligibilityPoliciesResource, AsyncBenefitEligibilityPoliciesResource, ) - from .resources.benefit_products.benefit_products import BenefitProductsResource, AsyncBenefitProductsResource __all__ = [ "ENVIRONMENTS", @@ -167,20 +153,6 @@ def benefit_eligibility_policies(self) -> BenefitEligibilityPoliciesResource: return BenefitEligibilityPoliciesResource(self) - @cached_property - def benefit_products(self) -> BenefitProductsResource: - """Browse available benefit products that can be offered to employers""" - from .resources.benefit_products import BenefitProductsResource - - return BenefitProductsResource(self) - - @cached_property - def dependents(self) -> DependentsResource: - """Manage dependent records (spouses, children) for employees""" - from .resources.dependents import DependentsResource - - return DependentsResource(self) - @cached_property def employees(self) -> EmployeesResource: """Manage employee records for employers""" @@ -201,19 +173,6 @@ def enrollments(self) -> EnrollmentsResource: return EnrollmentsResource(self) - @cached_property - def members(self) -> MembersResource: - from .resources.members import MembersResource - - return MembersResource(self) - - @cached_property - def plan_years(self) -> PlanYearsResource: - """Configure annual benefit periods with coverage dates and contribution settings""" - from .resources.plan_years import PlanYearsResource - - return PlanYearsResource(self) - @cached_property def with_raw_response(self) -> VitableConnectWithRawResponse: return VitableConnectWithRawResponse(self) @@ -427,20 +386,6 @@ def benefit_eligibility_policies(self) -> AsyncBenefitEligibilityPoliciesResourc return AsyncBenefitEligibilityPoliciesResource(self) - @cached_property - def benefit_products(self) -> AsyncBenefitProductsResource: - """Browse available benefit products that can be offered to employers""" - from .resources.benefit_products import AsyncBenefitProductsResource - - return AsyncBenefitProductsResource(self) - - @cached_property - def dependents(self) -> AsyncDependentsResource: - """Manage dependent records (spouses, children) for employees""" - from .resources.dependents import AsyncDependentsResource - - return AsyncDependentsResource(self) - @cached_property def employees(self) -> AsyncEmployeesResource: """Manage employee records for employers""" @@ -461,19 +406,6 @@ def enrollments(self) -> AsyncEnrollmentsResource: return AsyncEnrollmentsResource(self) - @cached_property - def members(self) -> AsyncMembersResource: - from .resources.members import AsyncMembersResource - - return AsyncMembersResource(self) - - @cached_property - def plan_years(self) -> AsyncPlanYearsResource: - """Configure annual benefit periods with coverage dates and contribution settings""" - from .resources.plan_years import AsyncPlanYearsResource - - return AsyncPlanYearsResource(self) - @cached_property def with_raw_response(self) -> AsyncVitableConnectWithRawResponse: return AsyncVitableConnectWithRawResponse(self) @@ -616,20 +548,6 @@ def benefit_eligibility_policies( return BenefitEligibilityPoliciesResourceWithRawResponse(self._client.benefit_eligibility_policies) - @cached_property - def benefit_products(self) -> benefit_products.BenefitProductsResourceWithRawResponse: - """Browse available benefit products that can be offered to employers""" - from .resources.benefit_products import BenefitProductsResourceWithRawResponse - - return BenefitProductsResourceWithRawResponse(self._client.benefit_products) - - @cached_property - def dependents(self) -> dependents.DependentsResourceWithRawResponse: - """Manage dependent records (spouses, children) for employees""" - from .resources.dependents import DependentsResourceWithRawResponse - - return DependentsResourceWithRawResponse(self._client.dependents) - @cached_property def employees(self) -> employees.EmployeesResourceWithRawResponse: """Manage employee records for employers""" @@ -650,19 +568,6 @@ def enrollments(self) -> enrollments.EnrollmentsResourceWithRawResponse: return EnrollmentsResourceWithRawResponse(self._client.enrollments) - @cached_property - def members(self) -> members.MembersResourceWithRawResponse: - from .resources.members import MembersResourceWithRawResponse - - return MembersResourceWithRawResponse(self._client.members) - - @cached_property - def plan_years(self) -> plan_years.PlanYearsResourceWithRawResponse: - """Configure annual benefit periods with coverage dates and contribution settings""" - from .resources.plan_years import PlanYearsResourceWithRawResponse - - return PlanYearsResourceWithRawResponse(self._client.plan_years) - class AsyncVitableConnectWithRawResponse: _client: AsyncVitableConnect @@ -686,20 +591,6 @@ def benefit_eligibility_policies( return AsyncBenefitEligibilityPoliciesResourceWithRawResponse(self._client.benefit_eligibility_policies) - @cached_property - def benefit_products(self) -> benefit_products.AsyncBenefitProductsResourceWithRawResponse: - """Browse available benefit products that can be offered to employers""" - from .resources.benefit_products import AsyncBenefitProductsResourceWithRawResponse - - return AsyncBenefitProductsResourceWithRawResponse(self._client.benefit_products) - - @cached_property - def dependents(self) -> dependents.AsyncDependentsResourceWithRawResponse: - """Manage dependent records (spouses, children) for employees""" - from .resources.dependents import AsyncDependentsResourceWithRawResponse - - return AsyncDependentsResourceWithRawResponse(self._client.dependents) - @cached_property def employees(self) -> employees.AsyncEmployeesResourceWithRawResponse: """Manage employee records for employers""" @@ -720,19 +611,6 @@ def enrollments(self) -> enrollments.AsyncEnrollmentsResourceWithRawResponse: return AsyncEnrollmentsResourceWithRawResponse(self._client.enrollments) - @cached_property - def members(self) -> members.AsyncMembersResourceWithRawResponse: - from .resources.members import AsyncMembersResourceWithRawResponse - - return AsyncMembersResourceWithRawResponse(self._client.members) - - @cached_property - def plan_years(self) -> plan_years.AsyncPlanYearsResourceWithRawResponse: - """Configure annual benefit periods with coverage dates and contribution settings""" - from .resources.plan_years import AsyncPlanYearsResourceWithRawResponse - - return AsyncPlanYearsResourceWithRawResponse(self._client.plan_years) - class VitableConnectWithStreamedResponse: _client: VitableConnect @@ -756,20 +634,6 @@ def benefit_eligibility_policies( return BenefitEligibilityPoliciesResourceWithStreamingResponse(self._client.benefit_eligibility_policies) - @cached_property - def benefit_products(self) -> benefit_products.BenefitProductsResourceWithStreamingResponse: - """Browse available benefit products that can be offered to employers""" - from .resources.benefit_products import BenefitProductsResourceWithStreamingResponse - - return BenefitProductsResourceWithStreamingResponse(self._client.benefit_products) - - @cached_property - def dependents(self) -> dependents.DependentsResourceWithStreamingResponse: - """Manage dependent records (spouses, children) for employees""" - from .resources.dependents import DependentsResourceWithStreamingResponse - - return DependentsResourceWithStreamingResponse(self._client.dependents) - @cached_property def employees(self) -> employees.EmployeesResourceWithStreamingResponse: """Manage employee records for employers""" @@ -790,19 +654,6 @@ def enrollments(self) -> enrollments.EnrollmentsResourceWithStreamingResponse: return EnrollmentsResourceWithStreamingResponse(self._client.enrollments) - @cached_property - def members(self) -> members.MembersResourceWithStreamingResponse: - from .resources.members import MembersResourceWithStreamingResponse - - return MembersResourceWithStreamingResponse(self._client.members) - - @cached_property - def plan_years(self) -> plan_years.PlanYearsResourceWithStreamingResponse: - """Configure annual benefit periods with coverage dates and contribution settings""" - from .resources.plan_years import PlanYearsResourceWithStreamingResponse - - return PlanYearsResourceWithStreamingResponse(self._client.plan_years) - class AsyncVitableConnectWithStreamedResponse: _client: AsyncVitableConnect @@ -826,20 +677,6 @@ def benefit_eligibility_policies( return AsyncBenefitEligibilityPoliciesResourceWithStreamingResponse(self._client.benefit_eligibility_policies) - @cached_property - def benefit_products(self) -> benefit_products.AsyncBenefitProductsResourceWithStreamingResponse: - """Browse available benefit products that can be offered to employers""" - from .resources.benefit_products import AsyncBenefitProductsResourceWithStreamingResponse - - return AsyncBenefitProductsResourceWithStreamingResponse(self._client.benefit_products) - - @cached_property - def dependents(self) -> dependents.AsyncDependentsResourceWithStreamingResponse: - """Manage dependent records (spouses, children) for employees""" - from .resources.dependents import AsyncDependentsResourceWithStreamingResponse - - return AsyncDependentsResourceWithStreamingResponse(self._client.dependents) - @cached_property def employees(self) -> employees.AsyncEmployeesResourceWithStreamingResponse: """Manage employee records for employers""" @@ -860,19 +697,6 @@ def enrollments(self) -> enrollments.AsyncEnrollmentsResourceWithStreamingRespon return AsyncEnrollmentsResourceWithStreamingResponse(self._client.enrollments) - @cached_property - def members(self) -> members.AsyncMembersResourceWithStreamingResponse: - from .resources.members import AsyncMembersResourceWithStreamingResponse - - return AsyncMembersResourceWithStreamingResponse(self._client.members) - - @cached_property - def plan_years(self) -> plan_years.AsyncPlanYearsResourceWithStreamingResponse: - """Configure annual benefit periods with coverage dates and contribution settings""" - from .resources.plan_years import AsyncPlanYearsResourceWithStreamingResponse - - return AsyncPlanYearsResourceWithStreamingResponse(self._client.plan_years) - Client = VitableConnect diff --git a/src/vitable_connect/_compat.py b/src/vitable_connect/_compat.py index 786ff42..e6690a4 100644 --- a/src/vitable_connect/_compat.py +++ b/src/vitable_connect/_compat.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, Union, Generic, TypeVar, Callable, cast, overload from datetime import date, datetime -from typing_extensions import Self, Literal +from typing_extensions import Self, Literal, TypedDict import pydantic from pydantic.fields import FieldInfo @@ -131,6 +131,10 @@ def model_json(model: pydantic.BaseModel, *, indent: int | None = None) -> str: return model.model_dump_json(indent=indent) +class _ModelDumpKwargs(TypedDict, total=False): + by_alias: bool + + def model_dump( model: pydantic.BaseModel, *, @@ -142,6 +146,9 @@ def model_dump( by_alias: bool | None = None, ) -> dict[str, Any]: if (not PYDANTIC_V1) or hasattr(model, "model_dump"): + kwargs: _ModelDumpKwargs = {} + if by_alias is not None: + kwargs["by_alias"] = by_alias return model.model_dump( mode=mode, exclude=exclude, @@ -149,7 +156,7 @@ def model_dump( exclude_defaults=exclude_defaults, # warnings are not supported in Pydantic v1 warnings=True if PYDANTIC_V1 else warnings, - by_alias=by_alias, + **kwargs, ) return cast( "dict[str, Any]", diff --git a/src/vitable_connect/_version.py b/src/vitable_connect/_version.py index 4c6c097..fd5a7c1 100644 --- a/src/vitable_connect/_version.py +++ b/src/vitable_connect/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "vitable_connect" -__version__ = "0.1.2" # x-release-please-version +__version__ = "0.2.0" # x-release-please-version diff --git a/src/vitable_connect/resources/__init__.py b/src/vitable_connect/resources/__init__.py index 6a27989..2c98f33 100644 --- a/src/vitable_connect/resources/__init__.py +++ b/src/vitable_connect/resources/__init__.py @@ -8,14 +8,6 @@ AuthResourceWithStreamingResponse, AsyncAuthResourceWithStreamingResponse, ) -from .members import ( - MembersResource, - AsyncMembersResource, - MembersResourceWithRawResponse, - AsyncMembersResourceWithRawResponse, - MembersResourceWithStreamingResponse, - AsyncMembersResourceWithStreamingResponse, -) from .employees import ( EmployeesResource, AsyncEmployeesResource, @@ -32,22 +24,6 @@ EmployersResourceWithStreamingResponse, AsyncEmployersResourceWithStreamingResponse, ) -from .dependents import ( - DependentsResource, - AsyncDependentsResource, - DependentsResourceWithRawResponse, - AsyncDependentsResourceWithRawResponse, - DependentsResourceWithStreamingResponse, - AsyncDependentsResourceWithStreamingResponse, -) -from .plan_years import ( - PlanYearsResource, - AsyncPlanYearsResource, - PlanYearsResourceWithRawResponse, - AsyncPlanYearsResourceWithRawResponse, - PlanYearsResourceWithStreamingResponse, - AsyncPlanYearsResourceWithStreamingResponse, -) from .enrollments import ( EnrollmentsResource, AsyncEnrollmentsResource, @@ -56,14 +32,6 @@ EnrollmentsResourceWithStreamingResponse, AsyncEnrollmentsResourceWithStreamingResponse, ) -from .benefit_products import ( - BenefitProductsResource, - AsyncBenefitProductsResource, - BenefitProductsResourceWithRawResponse, - AsyncBenefitProductsResourceWithRawResponse, - BenefitProductsResourceWithStreamingResponse, - AsyncBenefitProductsResourceWithStreamingResponse, -) from .benefit_eligibility_policies import ( BenefitEligibilityPoliciesResource, AsyncBenefitEligibilityPoliciesResource, @@ -86,18 +54,6 @@ "AsyncBenefitEligibilityPoliciesResourceWithRawResponse", "BenefitEligibilityPoliciesResourceWithStreamingResponse", "AsyncBenefitEligibilityPoliciesResourceWithStreamingResponse", - "BenefitProductsResource", - "AsyncBenefitProductsResource", - "BenefitProductsResourceWithRawResponse", - "AsyncBenefitProductsResourceWithRawResponse", - "BenefitProductsResourceWithStreamingResponse", - "AsyncBenefitProductsResourceWithStreamingResponse", - "DependentsResource", - "AsyncDependentsResource", - "DependentsResourceWithRawResponse", - "AsyncDependentsResourceWithRawResponse", - "DependentsResourceWithStreamingResponse", - "AsyncDependentsResourceWithStreamingResponse", "EmployeesResource", "AsyncEmployeesResource", "EmployeesResourceWithRawResponse", @@ -116,16 +72,4 @@ "AsyncEnrollmentsResourceWithRawResponse", "EnrollmentsResourceWithStreamingResponse", "AsyncEnrollmentsResourceWithStreamingResponse", - "MembersResource", - "AsyncMembersResource", - "MembersResourceWithRawResponse", - "AsyncMembersResourceWithRawResponse", - "MembersResourceWithStreamingResponse", - "AsyncMembersResourceWithStreamingResponse", - "PlanYearsResource", - "AsyncPlanYearsResource", - "PlanYearsResourceWithRawResponse", - "AsyncPlanYearsResourceWithRawResponse", - "PlanYearsResourceWithStreamingResponse", - "AsyncPlanYearsResourceWithStreamingResponse", ] diff --git a/src/vitable_connect/resources/benefit_eligibility_policies.py b/src/vitable_connect/resources/benefit_eligibility_policies.py index b5360cb..a707f3e 100644 --- a/src/vitable_connect/resources/benefit_eligibility_policies.py +++ b/src/vitable_connect/resources/benefit_eligibility_policies.py @@ -53,10 +53,7 @@ def retrieve( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> BenefitEligibilityPolicy: """ - Retrieves detailed information for a specific benefit eligibility policy by ID. - Returns the complete policy configuration including all eligibility rules, - effective dates, associated employer information, and any waiting period - requirements. + Retrieves a benefit eligibility policy by ID. Args: policy_id: Unique benefit eligibility policy identifier (epol\\__\\**) @@ -114,10 +111,7 @@ async def retrieve( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> BenefitEligibilityPolicy: """ - Retrieves detailed information for a specific benefit eligibility policy by ID. - Returns the complete policy configuration including all eligibility rules, - effective dates, associated employer information, and any waiting period - requirements. + Retrieves a benefit eligibility policy by ID. Args: policy_id: Unique benefit eligibility policy identifier (epol\\__\\**) diff --git a/src/vitable_connect/resources/benefit_products/__init__.py b/src/vitable_connect/resources/benefit_products/__init__.py deleted file mode 100644 index 7bc7f31..0000000 --- a/src/vitable_connect/resources/benefit_products/__init__.py +++ /dev/null @@ -1,33 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from .plan_years import ( - PlanYearsResource, - AsyncPlanYearsResource, - PlanYearsResourceWithRawResponse, - AsyncPlanYearsResourceWithRawResponse, - PlanYearsResourceWithStreamingResponse, - AsyncPlanYearsResourceWithStreamingResponse, -) -from .benefit_products import ( - BenefitProductsResource, - AsyncBenefitProductsResource, - BenefitProductsResourceWithRawResponse, - AsyncBenefitProductsResourceWithRawResponse, - BenefitProductsResourceWithStreamingResponse, - AsyncBenefitProductsResourceWithStreamingResponse, -) - -__all__ = [ - "PlanYearsResource", - "AsyncPlanYearsResource", - "PlanYearsResourceWithRawResponse", - "AsyncPlanYearsResourceWithRawResponse", - "PlanYearsResourceWithStreamingResponse", - "AsyncPlanYearsResourceWithStreamingResponse", - "BenefitProductsResource", - "AsyncBenefitProductsResource", - "BenefitProductsResourceWithRawResponse", - "AsyncBenefitProductsResourceWithRawResponse", - "BenefitProductsResourceWithStreamingResponse", - "AsyncBenefitProductsResourceWithStreamingResponse", -] diff --git a/src/vitable_connect/resources/benefit_products/benefit_products.py b/src/vitable_connect/resources/benefit_products/benefit_products.py deleted file mode 100644 index 3118b16..0000000 --- a/src/vitable_connect/resources/benefit_products/benefit_products.py +++ /dev/null @@ -1,263 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import httpx - -from ...types import Category, ProductCode, benefit_product_list_params -from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform -from ..._compat import cached_property -from .plan_years import ( - PlanYearsResource, - AsyncPlanYearsResource, - PlanYearsResourceWithRawResponse, - AsyncPlanYearsResourceWithRawResponse, - PlanYearsResourceWithStreamingResponse, - AsyncPlanYearsResourceWithStreamingResponse, -) -from ..._resource import SyncAPIResource, AsyncAPIResource -from ..._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from ..._base_client import make_request_options -from ...types.category import Category -from ...types.product_code import ProductCode -from ...types.benefit_product_list_response import BenefitProductListResponse - -__all__ = ["BenefitProductsResource", "AsyncBenefitProductsResource"] - - -class BenefitProductsResource(SyncAPIResource): - """Browse available benefit products that can be offered to employers""" - - @cached_property - def plan_years(self) -> PlanYearsResource: - """Configure annual benefit periods with coverage dates and contribution settings""" - return PlanYearsResource(self._client) - - @cached_property - def with_raw_response(self) -> BenefitProductsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return BenefitProductsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> BenefitProductsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return BenefitProductsResourceWithStreamingResponse(self) - - def list( - self, - *, - active_in: bool | Omit = omit, - category: Category | Omit = omit, - limit: int | Omit = omit, - page: int | Omit = omit, - product_code: ProductCode | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> BenefitProductListResponse: - """ - Retrieves a paginated list of all benefit products that the authenticated - organization has access to and can offer to their employers. Use query - parameters to filter by category, product code, or active status. - - Args: - active_in: Filter by active status - - category: Filter by product category - - limit: Items per page (default: 20, max: 100) - - page: Page number (default: 1) - - product_code: Filter by product code - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return self._get( - "/v1/benefit-products", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "active_in": active_in, - "category": category, - "limit": limit, - "page": page, - "product_code": product_code, - }, - benefit_product_list_params.BenefitProductListParams, - ), - ), - cast_to=BenefitProductListResponse, - ) - - -class AsyncBenefitProductsResource(AsyncAPIResource): - """Browse available benefit products that can be offered to employers""" - - @cached_property - def plan_years(self) -> AsyncPlanYearsResource: - """Configure annual benefit periods with coverage dates and contribution settings""" - return AsyncPlanYearsResource(self._client) - - @cached_property - def with_raw_response(self) -> AsyncBenefitProductsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return AsyncBenefitProductsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncBenefitProductsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return AsyncBenefitProductsResourceWithStreamingResponse(self) - - async def list( - self, - *, - active_in: bool | Omit = omit, - category: Category | Omit = omit, - limit: int | Omit = omit, - page: int | Omit = omit, - product_code: ProductCode | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> BenefitProductListResponse: - """ - Retrieves a paginated list of all benefit products that the authenticated - organization has access to and can offer to their employers. Use query - parameters to filter by category, product code, or active status. - - Args: - active_in: Filter by active status - - category: Filter by product category - - limit: Items per page (default: 20, max: 100) - - page: Page number (default: 1) - - product_code: Filter by product code - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return await self._get( - "/v1/benefit-products", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - { - "active_in": active_in, - "category": category, - "limit": limit, - "page": page, - "product_code": product_code, - }, - benefit_product_list_params.BenefitProductListParams, - ), - ), - cast_to=BenefitProductListResponse, - ) - - -class BenefitProductsResourceWithRawResponse: - def __init__(self, benefit_products: BenefitProductsResource) -> None: - self._benefit_products = benefit_products - - self.list = to_raw_response_wrapper( - benefit_products.list, - ) - - @cached_property - def plan_years(self) -> PlanYearsResourceWithRawResponse: - """Configure annual benefit periods with coverage dates and contribution settings""" - return PlanYearsResourceWithRawResponse(self._benefit_products.plan_years) - - -class AsyncBenefitProductsResourceWithRawResponse: - def __init__(self, benefit_products: AsyncBenefitProductsResource) -> None: - self._benefit_products = benefit_products - - self.list = async_to_raw_response_wrapper( - benefit_products.list, - ) - - @cached_property - def plan_years(self) -> AsyncPlanYearsResourceWithRawResponse: - """Configure annual benefit periods with coverage dates and contribution settings""" - return AsyncPlanYearsResourceWithRawResponse(self._benefit_products.plan_years) - - -class BenefitProductsResourceWithStreamingResponse: - def __init__(self, benefit_products: BenefitProductsResource) -> None: - self._benefit_products = benefit_products - - self.list = to_streamed_response_wrapper( - benefit_products.list, - ) - - @cached_property - def plan_years(self) -> PlanYearsResourceWithStreamingResponse: - """Configure annual benefit periods with coverage dates and contribution settings""" - return PlanYearsResourceWithStreamingResponse(self._benefit_products.plan_years) - - -class AsyncBenefitProductsResourceWithStreamingResponse: - def __init__(self, benefit_products: AsyncBenefitProductsResource) -> None: - self._benefit_products = benefit_products - - self.list = async_to_streamed_response_wrapper( - benefit_products.list, - ) - - @cached_property - def plan_years(self) -> AsyncPlanYearsResourceWithStreamingResponse: - """Configure annual benefit periods with coverage dates and contribution settings""" - return AsyncPlanYearsResourceWithStreamingResponse(self._benefit_products.plan_years) diff --git a/src/vitable_connect/resources/benefit_products/plan_years.py b/src/vitable_connect/resources/benefit_products/plan_years.py deleted file mode 100644 index f15a615..0000000 --- a/src/vitable_connect/resources/benefit_products/plan_years.py +++ /dev/null @@ -1,376 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Iterable -from datetime import date - -import httpx - -from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform -from ..._compat import cached_property -from ..._resource import SyncAPIResource, AsyncAPIResource -from ..._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from ..._base_client import make_request_options -from ...types.benefit_products import PlanYearStatus, plan_year_list_params, plan_year_create_params -from ...types.benefit_products.plan_year_status import PlanYearStatus -from ...types.benefit_products.plan_year_response import PlanYearResponse -from ...types.benefit_products.plan_year_list_response import PlanYearListResponse - -__all__ = ["PlanYearsResource", "AsyncPlanYearsResource"] - - -class PlanYearsResource(SyncAPIResource): - """Configure annual benefit periods with coverage dates and contribution settings""" - - @cached_property - def with_raw_response(self) -> PlanYearsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return PlanYearsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> PlanYearsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return PlanYearsResourceWithStreamingResponse(self) - - def create( - self, - benefit_product_id: str, - *, - contribution_classes: Iterable[plan_year_create_params.ContributionClass], - coverage_end: Union[str, date], - coverage_start: Union[str, date], - employer_id: str, - open_enrollment_end: Union[str, date], - open_enrollment_start: Union[str, date], - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> PlanYearResponse: - """ - Creates a new plan year configuration for a benefit product and employer. - Configures coverage period dates, open enrollment window, and contribution - structure. All monetary values must be in cents. - - Args: - benefit_product_id: Unique benefit product identifier (bprd\\__\\**) - - contribution_classes: List of contribution classes (at least one required) - - coverage_end: Coverage end date - - coverage_start: Coverage start date - - employer_id: Employer ID this plan year is for (empr\\__\\**) - - open_enrollment_end: Open enrollment end date - - open_enrollment_start: Open enrollment start date - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not benefit_product_id: - raise ValueError(f"Expected a non-empty value for `benefit_product_id` but received {benefit_product_id!r}") - return self._post( - f"/v1/benefit-products/{benefit_product_id}/plan-years", - body=maybe_transform( - { - "contribution_classes": contribution_classes, - "coverage_end": coverage_end, - "coverage_start": coverage_start, - "employer_id": employer_id, - "open_enrollment_end": open_enrollment_end, - "open_enrollment_start": open_enrollment_start, - }, - plan_year_create_params.PlanYearCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=PlanYearResponse, - ) - - def list( - self, - benefit_product_id: str, - *, - employer_id: str | Omit = omit, - limit: int | Omit = omit, - page: int | Omit = omit, - status: PlanYearStatus | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> PlanYearListResponse: - """Retrieves a paginated list of plan years for a specific benefit product. - - Plan - years define the coverage periods, open enrollment windows, and cost structure. - Results are sorted by most recent plan year first. - - Args: - benefit_product_id: Unique benefit product identifier (bprd\\__\\**) - - employer_id: Filter by employer ID - - limit: Items per page (default: 20, max: 100) - - page: Page number (default: 1) - - status: Filter by plan year status - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not benefit_product_id: - raise ValueError(f"Expected a non-empty value for `benefit_product_id` but received {benefit_product_id!r}") - return self._get( - f"/v1/benefit-products/{benefit_product_id}/plan-years", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "employer_id": employer_id, - "limit": limit, - "page": page, - "status": status, - }, - plan_year_list_params.PlanYearListParams, - ), - ), - cast_to=PlanYearListResponse, - ) - - -class AsyncPlanYearsResource(AsyncAPIResource): - """Configure annual benefit periods with coverage dates and contribution settings""" - - @cached_property - def with_raw_response(self) -> AsyncPlanYearsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return AsyncPlanYearsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncPlanYearsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return AsyncPlanYearsResourceWithStreamingResponse(self) - - async def create( - self, - benefit_product_id: str, - *, - contribution_classes: Iterable[plan_year_create_params.ContributionClass], - coverage_end: Union[str, date], - coverage_start: Union[str, date], - employer_id: str, - open_enrollment_end: Union[str, date], - open_enrollment_start: Union[str, date], - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> PlanYearResponse: - """ - Creates a new plan year configuration for a benefit product and employer. - Configures coverage period dates, open enrollment window, and contribution - structure. All monetary values must be in cents. - - Args: - benefit_product_id: Unique benefit product identifier (bprd\\__\\**) - - contribution_classes: List of contribution classes (at least one required) - - coverage_end: Coverage end date - - coverage_start: Coverage start date - - employer_id: Employer ID this plan year is for (empr\\__\\**) - - open_enrollment_end: Open enrollment end date - - open_enrollment_start: Open enrollment start date - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not benefit_product_id: - raise ValueError(f"Expected a non-empty value for `benefit_product_id` but received {benefit_product_id!r}") - return await self._post( - f"/v1/benefit-products/{benefit_product_id}/plan-years", - body=await async_maybe_transform( - { - "contribution_classes": contribution_classes, - "coverage_end": coverage_end, - "coverage_start": coverage_start, - "employer_id": employer_id, - "open_enrollment_end": open_enrollment_end, - "open_enrollment_start": open_enrollment_start, - }, - plan_year_create_params.PlanYearCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=PlanYearResponse, - ) - - async def list( - self, - benefit_product_id: str, - *, - employer_id: str | Omit = omit, - limit: int | Omit = omit, - page: int | Omit = omit, - status: PlanYearStatus | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> PlanYearListResponse: - """Retrieves a paginated list of plan years for a specific benefit product. - - Plan - years define the coverage periods, open enrollment windows, and cost structure. - Results are sorted by most recent plan year first. - - Args: - benefit_product_id: Unique benefit product identifier (bprd\\__\\**) - - employer_id: Filter by employer ID - - limit: Items per page (default: 20, max: 100) - - page: Page number (default: 1) - - status: Filter by plan year status - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not benefit_product_id: - raise ValueError(f"Expected a non-empty value for `benefit_product_id` but received {benefit_product_id!r}") - return await self._get( - f"/v1/benefit-products/{benefit_product_id}/plan-years", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - { - "employer_id": employer_id, - "limit": limit, - "page": page, - "status": status, - }, - plan_year_list_params.PlanYearListParams, - ), - ), - cast_to=PlanYearListResponse, - ) - - -class PlanYearsResourceWithRawResponse: - def __init__(self, plan_years: PlanYearsResource) -> None: - self._plan_years = plan_years - - self.create = to_raw_response_wrapper( - plan_years.create, - ) - self.list = to_raw_response_wrapper( - plan_years.list, - ) - - -class AsyncPlanYearsResourceWithRawResponse: - def __init__(self, plan_years: AsyncPlanYearsResource) -> None: - self._plan_years = plan_years - - self.create = async_to_raw_response_wrapper( - plan_years.create, - ) - self.list = async_to_raw_response_wrapper( - plan_years.list, - ) - - -class PlanYearsResourceWithStreamingResponse: - def __init__(self, plan_years: PlanYearsResource) -> None: - self._plan_years = plan_years - - self.create = to_streamed_response_wrapper( - plan_years.create, - ) - self.list = to_streamed_response_wrapper( - plan_years.list, - ) - - -class AsyncPlanYearsResourceWithStreamingResponse: - def __init__(self, plan_years: AsyncPlanYearsResource) -> None: - self._plan_years = plan_years - - self.create = async_to_streamed_response_wrapper( - plan_years.create, - ) - self.list = async_to_streamed_response_wrapper( - plan_years.list, - ) diff --git a/src/vitable_connect/resources/dependents.py b/src/vitable_connect/resources/dependents.py deleted file mode 100644 index e79eace..0000000 --- a/src/vitable_connect/resources/dependents.py +++ /dev/null @@ -1,304 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Optional - -import httpx - -from ..types import Relationship, dependent_update_params -from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform -from .._compat import cached_property -from .._resource import SyncAPIResource, AsyncAPIResource -from .._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from .._base_client import make_request_options -from ..types.relationship import Relationship -from ..types.dependent_response import DependentResponse - -__all__ = ["DependentsResource", "AsyncDependentsResource"] - - -class DependentsResource(SyncAPIResource): - """Manage dependent records (spouses, children) for employees""" - - @cached_property - def with_raw_response(self) -> DependentsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return DependentsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> DependentsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return DependentsResourceWithStreamingResponse(self) - - def retrieve( - self, - dependent_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> DependentResponse: - """Retrieves detailed information for a specific dependent by ID. - - Returns dependent - profile including name, date of birth, and relationship type. - - Args: - dependent_id: Unique dependent identifier (dpnd\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not dependent_id: - raise ValueError(f"Expected a non-empty value for `dependent_id` but received {dependent_id!r}") - return self._get( - f"/v1/dependents/{dependent_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=DependentResponse, - ) - - def update( - self, - dependent_id: str, - *, - active: Optional[bool] | Omit = omit, - gender: Optional[str] | Omit = omit, - relationship: Optional[Relationship] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> DependentResponse: - """Updates an existing dependent's mutable information. - - Allows modification of - relationship type and active status. Name, DOB, and sex cannot be modified after - creation. - - Args: - dependent_id: Unique dependent identifier (dpnd\\__\\**) - - active: Whether the dependent is active - - gender: Gender identity - - relationship: - `Spouse` - Spouse - - `Child` - Child - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not dependent_id: - raise ValueError(f"Expected a non-empty value for `dependent_id` but received {dependent_id!r}") - return self._put( - f"/v1/dependents/{dependent_id}", - body=maybe_transform( - { - "active": active, - "gender": gender, - "relationship": relationship, - }, - dependent_update_params.DependentUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=DependentResponse, - ) - - -class AsyncDependentsResource(AsyncAPIResource): - """Manage dependent records (spouses, children) for employees""" - - @cached_property - def with_raw_response(self) -> AsyncDependentsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return AsyncDependentsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncDependentsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return AsyncDependentsResourceWithStreamingResponse(self) - - async def retrieve( - self, - dependent_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> DependentResponse: - """Retrieves detailed information for a specific dependent by ID. - - Returns dependent - profile including name, date of birth, and relationship type. - - Args: - dependent_id: Unique dependent identifier (dpnd\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not dependent_id: - raise ValueError(f"Expected a non-empty value for `dependent_id` but received {dependent_id!r}") - return await self._get( - f"/v1/dependents/{dependent_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=DependentResponse, - ) - - async def update( - self, - dependent_id: str, - *, - active: Optional[bool] | Omit = omit, - gender: Optional[str] | Omit = omit, - relationship: Optional[Relationship] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> DependentResponse: - """Updates an existing dependent's mutable information. - - Allows modification of - relationship type and active status. Name, DOB, and sex cannot be modified after - creation. - - Args: - dependent_id: Unique dependent identifier (dpnd\\__\\**) - - active: Whether the dependent is active - - gender: Gender identity - - relationship: - `Spouse` - Spouse - - `Child` - Child - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not dependent_id: - raise ValueError(f"Expected a non-empty value for `dependent_id` but received {dependent_id!r}") - return await self._put( - f"/v1/dependents/{dependent_id}", - body=await async_maybe_transform( - { - "active": active, - "gender": gender, - "relationship": relationship, - }, - dependent_update_params.DependentUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=DependentResponse, - ) - - -class DependentsResourceWithRawResponse: - def __init__(self, dependents: DependentsResource) -> None: - self._dependents = dependents - - self.retrieve = to_raw_response_wrapper( - dependents.retrieve, - ) - self.update = to_raw_response_wrapper( - dependents.update, - ) - - -class AsyncDependentsResourceWithRawResponse: - def __init__(self, dependents: AsyncDependentsResource) -> None: - self._dependents = dependents - - self.retrieve = async_to_raw_response_wrapper( - dependents.retrieve, - ) - self.update = async_to_raw_response_wrapper( - dependents.update, - ) - - -class DependentsResourceWithStreamingResponse: - def __init__(self, dependents: DependentsResource) -> None: - self._dependents = dependents - - self.retrieve = to_streamed_response_wrapper( - dependents.retrieve, - ) - self.update = to_streamed_response_wrapper( - dependents.update, - ) - - -class AsyncDependentsResourceWithStreamingResponse: - def __init__(self, dependents: AsyncDependentsResource) -> None: - self._dependents = dependents - - self.retrieve = async_to_streamed_response_wrapper( - dependents.retrieve, - ) - self.update = async_to_streamed_response_wrapper( - dependents.update, - ) diff --git a/src/vitable_connect/resources/employees/employees.py b/src/vitable_connect/resources/employees/employees.py index 950cbcd..0be7a15 100644 --- a/src/vitable_connect/resources/employees/employees.py +++ b/src/vitable_connect/resources/employees/employees.py @@ -2,14 +2,9 @@ from __future__ import annotations -from typing import Union, Optional -from datetime import date - import httpx -from ...types import EmployeeClass, employee_update_params -from ..._types import Body, Omit, Query, Headers, NoneType, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform +from ..._types import Body, Query, Headers, NotGiven, not_given from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -27,7 +22,6 @@ AsyncEnrollmentsResourceWithStreamingResponse, ) from ..._base_client import make_request_options -from ...types.employee_class import EmployeeClass from ...types.employee_response import EmployeeResponse __all__ = ["EmployeesResource", "AsyncEmployeesResource"] @@ -97,117 +91,6 @@ def retrieve( cast_to=EmployeeResponse, ) - def update( - self, - employee_id: str, - *, - address: Optional[employee_update_params.Address] | Omit = omit, - email: Optional[str] | Omit = omit, - employee_class: Optional[EmployeeClass] | Omit = omit, - gender: Optional[str] | Omit = omit, - phone: Optional[str] | Omit = omit, - termination_date: Union[str, date, None] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EmployeeResponse: - """Updates an existing employee's information. - - All fields are optional - only - provided fields will be updated. Note: SSN, name, date of birth, and sex cannot - be changed after creation. - - Args: - employee_id: Unique employee identifier (empl\\__\\**) - - address: Employee's residential address - - email: Email address - - employee_class: - `Full Time` - Full Time - - `Part Time` - Part Time - - `Temporary` - Temporary - - `Intern` - Intern - - `Seasonal` - Seasonal - - `Individual Contractor` - Individual Contractor - - gender: Gender identity - - phone: Phone number - - termination_date: Termination date if terminating - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employee_id: - raise ValueError(f"Expected a non-empty value for `employee_id` but received {employee_id!r}") - return self._put( - f"/v1/employees/{employee_id}", - body=maybe_transform( - { - "address": address, - "email": email, - "employee_class": employee_class, - "gender": gender, - "phone": phone, - "termination_date": termination_date, - }, - employee_update_params.EmployeeUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EmployeeResponse, - ) - - def terminate( - self, - employee_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> None: - """Terminates a specific employee. - - This sets the employee's active status to false - and records a termination date. The employee record is not permanently deleted - for compliance reasons. - - Args: - employee_id: Unique employee identifier (empl\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employee_id: - raise ValueError(f"Expected a non-empty value for `employee_id` but received {employee_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} - return self._delete( - f"/v1/employees/{employee_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=NoneType, - ) - class AsyncEmployeesResource(AsyncAPIResource): """Manage employee records for employers""" @@ -273,117 +156,6 @@ async def retrieve( cast_to=EmployeeResponse, ) - async def update( - self, - employee_id: str, - *, - address: Optional[employee_update_params.Address] | Omit = omit, - email: Optional[str] | Omit = omit, - employee_class: Optional[EmployeeClass] | Omit = omit, - gender: Optional[str] | Omit = omit, - phone: Optional[str] | Omit = omit, - termination_date: Union[str, date, None] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EmployeeResponse: - """Updates an existing employee's information. - - All fields are optional - only - provided fields will be updated. Note: SSN, name, date of birth, and sex cannot - be changed after creation. - - Args: - employee_id: Unique employee identifier (empl\\__\\**) - - address: Employee's residential address - - email: Email address - - employee_class: - `Full Time` - Full Time - - `Part Time` - Part Time - - `Temporary` - Temporary - - `Intern` - Intern - - `Seasonal` - Seasonal - - `Individual Contractor` - Individual Contractor - - gender: Gender identity - - phone: Phone number - - termination_date: Termination date if terminating - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employee_id: - raise ValueError(f"Expected a non-empty value for `employee_id` but received {employee_id!r}") - return await self._put( - f"/v1/employees/{employee_id}", - body=await async_maybe_transform( - { - "address": address, - "email": email, - "employee_class": employee_class, - "gender": gender, - "phone": phone, - "termination_date": termination_date, - }, - employee_update_params.EmployeeUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EmployeeResponse, - ) - - async def terminate( - self, - employee_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> None: - """Terminates a specific employee. - - This sets the employee's active status to false - and records a termination date. The employee record is not permanently deleted - for compliance reasons. - - Args: - employee_id: Unique employee identifier (empl\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employee_id: - raise ValueError(f"Expected a non-empty value for `employee_id` but received {employee_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} - return await self._delete( - f"/v1/employees/{employee_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=NoneType, - ) - class EmployeesResourceWithRawResponse: def __init__(self, employees: EmployeesResource) -> None: @@ -392,12 +164,6 @@ def __init__(self, employees: EmployeesResource) -> None: self.retrieve = to_raw_response_wrapper( employees.retrieve, ) - self.update = to_raw_response_wrapper( - employees.update, - ) - self.terminate = to_raw_response_wrapper( - employees.terminate, - ) @cached_property def enrollments(self) -> EnrollmentsResourceWithRawResponse: @@ -412,12 +178,6 @@ def __init__(self, employees: AsyncEmployeesResource) -> None: self.retrieve = async_to_raw_response_wrapper( employees.retrieve, ) - self.update = async_to_raw_response_wrapper( - employees.update, - ) - self.terminate = async_to_raw_response_wrapper( - employees.terminate, - ) @cached_property def enrollments(self) -> AsyncEnrollmentsResourceWithRawResponse: @@ -432,12 +192,6 @@ def __init__(self, employees: EmployeesResource) -> None: self.retrieve = to_streamed_response_wrapper( employees.retrieve, ) - self.update = to_streamed_response_wrapper( - employees.update, - ) - self.terminate = to_streamed_response_wrapper( - employees.terminate, - ) @cached_property def enrollments(self) -> EnrollmentsResourceWithStreamingResponse: @@ -452,12 +206,6 @@ def __init__(self, employees: AsyncEmployeesResource) -> None: self.retrieve = async_to_streamed_response_wrapper( employees.retrieve, ) - self.update = async_to_streamed_response_wrapper( - employees.update, - ) - self.terminate = async_to_streamed_response_wrapper( - employees.terminate, - ) @cached_property def enrollments(self) -> AsyncEnrollmentsResourceWithStreamingResponse: diff --git a/src/vitable_connect/resources/employees/enrollments.py b/src/vitable_connect/resources/employees/enrollments.py index a2de441..1391b83 100644 --- a/src/vitable_connect/resources/employees/enrollments.py +++ b/src/vitable_connect/resources/employees/enrollments.py @@ -2,11 +2,8 @@ from __future__ import annotations -from typing import Iterable - import httpx -from ...types import EnrollmentStatus from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given from ..._utils import maybe_transform, async_maybe_transform from ..._compat import cached_property @@ -18,8 +15,7 @@ async_to_streamed_response_wrapper, ) from ..._base_client import make_request_options -from ...types.employees import enrollment_list_params, enrollment_submit_elections_params -from ...types.enrollment_status import EnrollmentStatus +from ...types.employees import enrollment_list_params from ...types.employees.enrollment_list import EnrollmentList __all__ = ["EnrollmentsResource", "AsyncEnrollmentsResource"] @@ -51,11 +47,8 @@ def list( self, employee_id: str, *, - coverage_effective_start_year: int | Omit = omit, limit: int | Omit = omit, page: int | Omit = omit, - plan_year: int | Omit = omit, - status: EnrollmentStatus | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -63,26 +56,16 @@ def list( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> EnrollmentList: - """Retrieves a paginated list of benefit enrollments for an employee. - - Enrollments - have statuses: 'pending' (in enrollment period), 'enrolled' (active coverage), - or 'inactive' (terminated, expired, or unanswered). Filter by status, plan year, - or coverage year. + """ + Retrieves a paginated list of benefit enrollments for an employee. Args: employee_id: Unique employee identifier (empl\\__\\**) - coverage_effective_start_year: Filter by coverage year - limit: Items per page (default: 20, max: 100) page: Page number (default: 1) - plan_year: Filter by plan year start (YYYY) - - status: Filter by enrollment status - extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -102,11 +85,8 @@ def list( timeout=timeout, query=maybe_transform( { - "coverage_effective_start_year": coverage_effective_start_year, "limit": limit, "page": page, - "plan_year": plan_year, - "status": status, }, enrollment_list_params.EnrollmentListParams, ), @@ -114,50 +94,6 @@ def list( cast_to=EnrollmentList, ) - def submit_elections( - self, - employee_id: str, - *, - elections: Iterable[enrollment_submit_elections_params.Election], - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EnrollmentList: - """ - Completes the benefits election process for all pending enrollments for an - employee. Processes enrollment decisions: which benefits to enroll/waive, plan - selections, and dependent coverage. Pending enrollments transition to enrolled - or waived status based on elections. - - Args: - employee_id: Unique employee identifier (empl\\__\\**) - - elections: List of enrollment elections - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employee_id: - raise ValueError(f"Expected a non-empty value for `employee_id` but received {employee_id!r}") - return self._post( - f"/v1/employees/{employee_id}/enrollments/elect", - body=maybe_transform( - {"elections": elections}, enrollment_submit_elections_params.EnrollmentSubmitElectionsParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EnrollmentList, - ) - class AsyncEnrollmentsResource(AsyncAPIResource): """Manage benefit enrollments and elections for employees""" @@ -185,11 +121,8 @@ async def list( self, employee_id: str, *, - coverage_effective_start_year: int | Omit = omit, limit: int | Omit = omit, page: int | Omit = omit, - plan_year: int | Omit = omit, - status: EnrollmentStatus | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -197,26 +130,16 @@ async def list( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> EnrollmentList: - """Retrieves a paginated list of benefit enrollments for an employee. - - Enrollments - have statuses: 'pending' (in enrollment period), 'enrolled' (active coverage), - or 'inactive' (terminated, expired, or unanswered). Filter by status, plan year, - or coverage year. + """ + Retrieves a paginated list of benefit enrollments for an employee. Args: employee_id: Unique employee identifier (empl\\__\\**) - coverage_effective_start_year: Filter by coverage year - limit: Items per page (default: 20, max: 100) page: Page number (default: 1) - plan_year: Filter by plan year start (YYYY) - - status: Filter by enrollment status - extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -236,11 +159,8 @@ async def list( timeout=timeout, query=await async_maybe_transform( { - "coverage_effective_start_year": coverage_effective_start_year, "limit": limit, "page": page, - "plan_year": plan_year, - "status": status, }, enrollment_list_params.EnrollmentListParams, ), @@ -248,50 +168,6 @@ async def list( cast_to=EnrollmentList, ) - async def submit_elections( - self, - employee_id: str, - *, - elections: Iterable[enrollment_submit_elections_params.Election], - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EnrollmentList: - """ - Completes the benefits election process for all pending enrollments for an - employee. Processes enrollment decisions: which benefits to enroll/waive, plan - selections, and dependent coverage. Pending enrollments transition to enrolled - or waived status based on elections. - - Args: - employee_id: Unique employee identifier (empl\\__\\**) - - elections: List of enrollment elections - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employee_id: - raise ValueError(f"Expected a non-empty value for `employee_id` but received {employee_id!r}") - return await self._post( - f"/v1/employees/{employee_id}/enrollments/elect", - body=await async_maybe_transform( - {"elections": elections}, enrollment_submit_elections_params.EnrollmentSubmitElectionsParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EnrollmentList, - ) - class EnrollmentsResourceWithRawResponse: def __init__(self, enrollments: EnrollmentsResource) -> None: @@ -300,9 +176,6 @@ def __init__(self, enrollments: EnrollmentsResource) -> None: self.list = to_raw_response_wrapper( enrollments.list, ) - self.submit_elections = to_raw_response_wrapper( - enrollments.submit_elections, - ) class AsyncEnrollmentsResourceWithRawResponse: @@ -312,9 +185,6 @@ def __init__(self, enrollments: AsyncEnrollmentsResource) -> None: self.list = async_to_raw_response_wrapper( enrollments.list, ) - self.submit_elections = async_to_raw_response_wrapper( - enrollments.submit_elections, - ) class EnrollmentsResourceWithStreamingResponse: @@ -324,9 +194,6 @@ def __init__(self, enrollments: EnrollmentsResource) -> None: self.list = to_streamed_response_wrapper( enrollments.list, ) - self.submit_elections = to_streamed_response_wrapper( - enrollments.submit_elections, - ) class AsyncEnrollmentsResourceWithStreamingResponse: @@ -336,6 +203,3 @@ def __init__(self, enrollments: AsyncEnrollmentsResource) -> None: self.list = async_to_streamed_response_wrapper( enrollments.list, ) - self.submit_elections = async_to_streamed_response_wrapper( - enrollments.submit_elections, - ) diff --git a/src/vitable_connect/resources/employers/employees.py b/src/vitable_connect/resources/employers/employees.py index aaec018..b412719 100644 --- a/src/vitable_connect/resources/employers/employees.py +++ b/src/vitable_connect/resources/employers/employees.py @@ -2,12 +2,8 @@ from __future__ import annotations -from typing import Union, Optional -from datetime import date - import httpx -from ...types import Sex, EmployeeClass from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given from ..._utils import maybe_transform, async_maybe_transform from ..._compat import cached_property @@ -18,11 +14,8 @@ async_to_raw_response_wrapper, async_to_streamed_response_wrapper, ) -from ...types.sex import Sex from ..._base_client import make_request_options -from ...types.employers import employee_list_params, employee_create_params -from ...types.employee_class import EmployeeClass -from ...types.employee_response import EmployeeResponse +from ...types.employers import employee_list_params from ...types.employers.employee_list_response import EmployeeListResponse __all__ = ["EmployeesResource", "AsyncEmployeesResource"] @@ -50,112 +43,10 @@ def with_streaming_response(self) -> EmployeesResourceWithStreamingResponse: """ return EmployeesResourceWithStreamingResponse(self) - def create( - self, - employer_id: str, - *, - date_of_birth: Union[str, date], - email: str, - first_name: str, - last_name: str, - sex: Sex, - ssn: str, - start_date: Union[str, date], - address: Optional[employee_create_params.Address] | Omit = omit, - employee_class: Optional[EmployeeClass] | Omit = omit, - gender: Optional[str] | Omit = omit, - phone: Optional[str] | Omit = omit, - suffix: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EmployeeResponse: - """Creates a new employee for a specific employer. - - Requires personal information - (name, DOB, SSN) and employment details (start date). Note: SSN can only be - specified at creation time and cannot be updated later. Returns the created - employee with assigned ID. - - Args: - employer_id: Filter by employer ID - - date_of_birth: Date of birth (YYYY-MM-DD) - - email: Email address - - first_name: Employee's legal first name - - last_name: Employee's legal last name - - sex: - `Male` - Male - - `Female` - Female - - `Other` - Other - - `Unknown` - Unknown - - ssn: Social Security Number (XXX-XX-XXXX or XXXXXXXXX). Only accepted on create. - - start_date: Employment start/hire date - - address: Employee's residential address - - employee_class: - `Full Time` - Full Time - - `Part Time` - Part Time - - `Temporary` - Temporary - - `Intern` - Intern - - `Seasonal` - Seasonal - - `Individual Contractor` - Individual Contractor - - gender: Gender identity - - phone: Phone number - - suffix: Name suffix (Jr., Sr., III) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employer_id: - raise ValueError(f"Expected a non-empty value for `employer_id` but received {employer_id!r}") - return self._post( - f"/v1/employers/{employer_id}/employees", - body=maybe_transform( - { - "date_of_birth": date_of_birth, - "email": email, - "first_name": first_name, - "last_name": last_name, - "sex": sex, - "ssn": ssn, - "start_date": start_date, - "address": address, - "employee_class": employee_class, - "gender": gender, - "phone": phone, - "suffix": suffix, - }, - employee_create_params.EmployeeCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EmployeeResponse, - ) - def list( self, employer_id: str, *, - active_in: bool | Omit = omit, - employee_class: EmployeeClass | Omit = omit, limit: int | Omit = omit, page: int | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -167,16 +58,11 @@ def list( ) -> EmployeeListResponse: """Retrieves a paginated list of all employees for a specific employer. - Use query - parameters to filter by active status or employment classification. Results are + Results are paginated using page and limit parameters. Args: - employer_id: Filter by employer ID - - active_in: Filter by active status - - employee_class: Filter by employment classification + employer_id: Unique employer identifier (empr\\__\\**) limit: Items per page (default: 20, max: 100) @@ -201,8 +87,6 @@ def list( timeout=timeout, query=maybe_transform( { - "active_in": active_in, - "employee_class": employee_class, "limit": limit, "page": page, }, @@ -235,112 +119,10 @@ def with_streaming_response(self) -> AsyncEmployeesResourceWithStreamingResponse """ return AsyncEmployeesResourceWithStreamingResponse(self) - async def create( - self, - employer_id: str, - *, - date_of_birth: Union[str, date], - email: str, - first_name: str, - last_name: str, - sex: Sex, - ssn: str, - start_date: Union[str, date], - address: Optional[employee_create_params.Address] | Omit = omit, - employee_class: Optional[EmployeeClass] | Omit = omit, - gender: Optional[str] | Omit = omit, - phone: Optional[str] | Omit = omit, - suffix: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EmployeeResponse: - """Creates a new employee for a specific employer. - - Requires personal information - (name, DOB, SSN) and employment details (start date). Note: SSN can only be - specified at creation time and cannot be updated later. Returns the created - employee with assigned ID. - - Args: - employer_id: Filter by employer ID - - date_of_birth: Date of birth (YYYY-MM-DD) - - email: Email address - - first_name: Employee's legal first name - - last_name: Employee's legal last name - - sex: - `Male` - Male - - `Female` - Female - - `Other` - Other - - `Unknown` - Unknown - - ssn: Social Security Number (XXX-XX-XXXX or XXXXXXXXX). Only accepted on create. - - start_date: Employment start/hire date - - address: Employee's residential address - - employee_class: - `Full Time` - Full Time - - `Part Time` - Part Time - - `Temporary` - Temporary - - `Intern` - Intern - - `Seasonal` - Seasonal - - `Individual Contractor` - Individual Contractor - - gender: Gender identity - - phone: Phone number - - suffix: Name suffix (Jr., Sr., III) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employer_id: - raise ValueError(f"Expected a non-empty value for `employer_id` but received {employer_id!r}") - return await self._post( - f"/v1/employers/{employer_id}/employees", - body=await async_maybe_transform( - { - "date_of_birth": date_of_birth, - "email": email, - "first_name": first_name, - "last_name": last_name, - "sex": sex, - "ssn": ssn, - "start_date": start_date, - "address": address, - "employee_class": employee_class, - "gender": gender, - "phone": phone, - "suffix": suffix, - }, - employee_create_params.EmployeeCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EmployeeResponse, - ) - async def list( self, employer_id: str, *, - active_in: bool | Omit = omit, - employee_class: EmployeeClass | Omit = omit, limit: int | Omit = omit, page: int | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -352,16 +134,11 @@ async def list( ) -> EmployeeListResponse: """Retrieves a paginated list of all employees for a specific employer. - Use query - parameters to filter by active status or employment classification. Results are + Results are paginated using page and limit parameters. Args: - employer_id: Filter by employer ID - - active_in: Filter by active status - - employee_class: Filter by employment classification + employer_id: Unique employer identifier (empr\\__\\**) limit: Items per page (default: 20, max: 100) @@ -386,8 +163,6 @@ async def list( timeout=timeout, query=await async_maybe_transform( { - "active_in": active_in, - "employee_class": employee_class, "limit": limit, "page": page, }, @@ -402,9 +177,6 @@ class EmployeesResourceWithRawResponse: def __init__(self, employees: EmployeesResource) -> None: self._employees = employees - self.create = to_raw_response_wrapper( - employees.create, - ) self.list = to_raw_response_wrapper( employees.list, ) @@ -414,9 +186,6 @@ class AsyncEmployeesResourceWithRawResponse: def __init__(self, employees: AsyncEmployeesResource) -> None: self._employees = employees - self.create = async_to_raw_response_wrapper( - employees.create, - ) self.list = async_to_raw_response_wrapper( employees.list, ) @@ -426,9 +195,6 @@ class EmployeesResourceWithStreamingResponse: def __init__(self, employees: EmployeesResource) -> None: self._employees = employees - self.create = to_streamed_response_wrapper( - employees.create, - ) self.list = to_streamed_response_wrapper( employees.list, ) @@ -438,9 +204,6 @@ class AsyncEmployeesResourceWithStreamingResponse: def __init__(self, employees: AsyncEmployeesResource) -> None: self._employees = employees - self.create = async_to_streamed_response_wrapper( - employees.create, - ) self.list = async_to_streamed_response_wrapper( employees.list, ) diff --git a/src/vitable_connect/resources/employers/employers.py b/src/vitable_connect/resources/employers/employers.py index 8a66490..e387445 100644 --- a/src/vitable_connect/resources/employers/employers.py +++ b/src/vitable_connect/resources/employers/employers.py @@ -2,17 +2,9 @@ from __future__ import annotations -from typing import Union, Iterable, Optional -from datetime import date - import httpx -from ...types import ( - employer_list_params, - employer_create_params, - employer_update_params, - employer_create_eligibility_policy_params, -) +from ...types import employer_list_params, employer_create_params, employer_create_eligibility_policy_params from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given from ..._utils import maybe_transform, async_maybe_transform from ..._compat import cached_property @@ -139,7 +131,7 @@ def retrieve( belong to the authenticated organization. Args: - employer_id: Filter by employer ID + employer_id: Unique employer identifier (empr\\__\\**) extra_headers: Send extra headers @@ -159,70 +151,10 @@ def retrieve( cast_to=EmployerResponse, ) - def update( - self, - employer_id: str, - *, - active: Optional[bool] | Omit = omit, - address: Optional[employer_update_params.Address] | Omit = omit, - legal_name: Optional[str] | Omit = omit, - name: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EmployerResponse: - """Updates an existing employer's information. - - All fields are optional - only - provided fields will be updated. Note: EIN cannot be changed after creation. - - Args: - employer_id: Filter by employer ID - - active: Whether the employer is active - - address: Employer address - - legal_name: Legal business name - - name: Employer display name - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employer_id: - raise ValueError(f"Expected a non-empty value for `employer_id` but received {employer_id!r}") - return self._put( - f"/v1/employers/{employer_id}", - body=maybe_transform( - { - "active": active, - "address": address, - "legal_name": legal_name, - "name": name, - }, - employer_update_params.EmployerUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EmployerResponse, - ) - def list( self, *, - active_in: bool | Omit = omit, limit: int | Omit = omit, - name: str | Omit = omit, page: int | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -232,17 +164,13 @@ def list( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> EmployerListResponse: """ - Retrieves a paginated list of all employers that the authenticated organization - has access to. Use query parameters to filter by name or active status. Results - are paginated using page and limit parameters. + Retrieves a paginated list of all employers belonging to the authenticated + organization. Results are sorted by creation date (newest first) and paginated + using page and limit parameters. Args: - active_in: Filter by active status - limit: Items per page (default: 20, max: 100) - name: Filter by employer name (partial match) - page: Page number (default: 1) extra_headers: Send extra headers @@ -262,9 +190,7 @@ def list( timeout=timeout, query=maybe_transform( { - "active_in": active_in, "limit": limit, - "name": name, "page": page, }, employer_list_params.EmployerListParams, @@ -277,11 +203,8 @@ def create_eligibility_policy( self, employer_id: str, *, - effective_date: Union[str, date], - name: str, - rules: Iterable[employer_create_eligibility_policy_params.Rule], - policy_to_replace_id: str | Omit = omit, - description: Optional[str] | Omit = omit, + classification: str, + waiting_period: str, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -289,27 +212,16 @@ def create_eligibility_policy( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> BenefitEligibilityPolicy: - """Creates a new benefit eligibility policy for a specific employer. - - Eligibility - policies define rules that determine which employees qualify for benefits based - on criteria such as employment status (full-time, part-time), hours worked per - week, waiting periods after hire date, or other custom requirements. Optionally - provide 'policy_to_replace_id' as a query parameter to replace an existing - policy. + """ + Creates a benefit eligibility policy for the specified employer. Args: - employer_id: Filter by employer ID + employer_id: Unique employer identifier (empr\\__\\**) - effective_date: Date when policy becomes effective + classification: Which employee classifications are eligible. One of: full_time, part_time, all - name: Display name for the policy - - rules: List of eligibility rules (at least one required) - - policy_to_replace_id: ID of existing policy to replace (epol\\__\\**) - - description: Detailed description + waiting_period: Waiting period before eligibility. One of: first_of_following_month, 30_days, + 60_days, none extra_headers: Send extra headers @@ -325,22 +237,13 @@ def create_eligibility_policy( f"/v1/employers/{employer_id}/benefit-eligibility-policies", body=maybe_transform( { - "effective_date": effective_date, - "name": name, - "rules": rules, - "description": description, + "classification": classification, + "waiting_period": waiting_period, }, employer_create_eligibility_policy_params.EmployerCreateEligibilityPolicyParams, ), options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - {"policy_to_replace_id": policy_to_replace_id}, - employer_create_eligibility_policy_params.EmployerCreateEligibilityPolicyParams, - ), + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), cast_to=BenefitEligibilityPolicy, ) @@ -446,7 +349,7 @@ async def retrieve( belong to the authenticated organization. Args: - employer_id: Filter by employer ID + employer_id: Unique employer identifier (empr\\__\\**) extra_headers: Send extra headers @@ -466,70 +369,10 @@ async def retrieve( cast_to=EmployerResponse, ) - async def update( - self, - employer_id: str, - *, - active: Optional[bool] | Omit = omit, - address: Optional[employer_update_params.Address] | Omit = omit, - legal_name: Optional[str] | Omit = omit, - name: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EmployerResponse: - """Updates an existing employer's information. - - All fields are optional - only - provided fields will be updated. Note: EIN cannot be changed after creation. - - Args: - employer_id: Filter by employer ID - - active: Whether the employer is active - - address: Employer address - - legal_name: Legal business name - - name: Employer display name - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not employer_id: - raise ValueError(f"Expected a non-empty value for `employer_id` but received {employer_id!r}") - return await self._put( - f"/v1/employers/{employer_id}", - body=await async_maybe_transform( - { - "active": active, - "address": address, - "legal_name": legal_name, - "name": name, - }, - employer_update_params.EmployerUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EmployerResponse, - ) - async def list( self, *, - active_in: bool | Omit = omit, limit: int | Omit = omit, - name: str | Omit = omit, page: int | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -539,17 +382,13 @@ async def list( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> EmployerListResponse: """ - Retrieves a paginated list of all employers that the authenticated organization - has access to. Use query parameters to filter by name or active status. Results - are paginated using page and limit parameters. + Retrieves a paginated list of all employers belonging to the authenticated + organization. Results are sorted by creation date (newest first) and paginated + using page and limit parameters. Args: - active_in: Filter by active status - limit: Items per page (default: 20, max: 100) - name: Filter by employer name (partial match) - page: Page number (default: 1) extra_headers: Send extra headers @@ -569,9 +408,7 @@ async def list( timeout=timeout, query=await async_maybe_transform( { - "active_in": active_in, "limit": limit, - "name": name, "page": page, }, employer_list_params.EmployerListParams, @@ -584,11 +421,8 @@ async def create_eligibility_policy( self, employer_id: str, *, - effective_date: Union[str, date], - name: str, - rules: Iterable[employer_create_eligibility_policy_params.Rule], - policy_to_replace_id: str | Omit = omit, - description: Optional[str] | Omit = omit, + classification: str, + waiting_period: str, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -596,27 +430,16 @@ async def create_eligibility_policy( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> BenefitEligibilityPolicy: - """Creates a new benefit eligibility policy for a specific employer. - - Eligibility - policies define rules that determine which employees qualify for benefits based - on criteria such as employment status (full-time, part-time), hours worked per - week, waiting periods after hire date, or other custom requirements. Optionally - provide 'policy_to_replace_id' as a query parameter to replace an existing - policy. + """ + Creates a benefit eligibility policy for the specified employer. Args: - employer_id: Filter by employer ID - - effective_date: Date when policy becomes effective - - name: Display name for the policy - - rules: List of eligibility rules (at least one required) + employer_id: Unique employer identifier (empr\\__\\**) - policy_to_replace_id: ID of existing policy to replace (epol\\__\\**) + classification: Which employee classifications are eligible. One of: full_time, part_time, all - description: Detailed description + waiting_period: Waiting period before eligibility. One of: first_of_following_month, 30_days, + 60_days, none extra_headers: Send extra headers @@ -632,22 +455,13 @@ async def create_eligibility_policy( f"/v1/employers/{employer_id}/benefit-eligibility-policies", body=await async_maybe_transform( { - "effective_date": effective_date, - "name": name, - "rules": rules, - "description": description, + "classification": classification, + "waiting_period": waiting_period, }, employer_create_eligibility_policy_params.EmployerCreateEligibilityPolicyParams, ), options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - {"policy_to_replace_id": policy_to_replace_id}, - employer_create_eligibility_policy_params.EmployerCreateEligibilityPolicyParams, - ), + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), cast_to=BenefitEligibilityPolicy, ) @@ -663,9 +477,6 @@ def __init__(self, employers: EmployersResource) -> None: self.retrieve = to_raw_response_wrapper( employers.retrieve, ) - self.update = to_raw_response_wrapper( - employers.update, - ) self.list = to_raw_response_wrapper( employers.list, ) @@ -689,9 +500,6 @@ def __init__(self, employers: AsyncEmployersResource) -> None: self.retrieve = async_to_raw_response_wrapper( employers.retrieve, ) - self.update = async_to_raw_response_wrapper( - employers.update, - ) self.list = async_to_raw_response_wrapper( employers.list, ) @@ -715,9 +523,6 @@ def __init__(self, employers: EmployersResource) -> None: self.retrieve = to_streamed_response_wrapper( employers.retrieve, ) - self.update = to_streamed_response_wrapper( - employers.update, - ) self.list = to_streamed_response_wrapper( employers.list, ) @@ -741,9 +546,6 @@ def __init__(self, employers: AsyncEmployersResource) -> None: self.retrieve = async_to_streamed_response_wrapper( employers.retrieve, ) - self.update = async_to_streamed_response_wrapper( - employers.update, - ) self.list = async_to_streamed_response_wrapper( employers.list, ) diff --git a/src/vitable_connect/resources/enrollments.py b/src/vitable_connect/resources/enrollments.py index eda7c89..e3f4d04 100644 --- a/src/vitable_connect/resources/enrollments.py +++ b/src/vitable_connect/resources/enrollments.py @@ -2,13 +2,9 @@ from __future__ import annotations -from typing import Optional - import httpx -from ..types import enrollment_reissue_params -from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._types import Body, Query, Headers, NotGiven, not_given from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -19,7 +15,6 @@ ) from .._base_client import make_request_options from ..types.enrollment_response import EnrollmentResponse -from ..types.enrollment_list_plans_response import EnrollmentListPlansResponse __all__ = ["EnrollmentsResource", "AsyncEnrollmentsResource"] @@ -57,49 +52,8 @@ def retrieve( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> EnrollmentResponse: - """Retrieves detailed information for a specific enrollment by ID. - - Returns selected - plan, coverage dates, enrolled dependents, premium amounts, and status. This - endpoint is critical for viewing comprehensive enrollment information. - - Args: - enrollment_id: Unique enrollment identifier (enrl\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not enrollment_id: - raise ValueError(f"Expected a non-empty value for `enrollment_id` but received {enrollment_id!r}") - return self._get( - f"/v1/enrollments/{enrollment_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EnrollmentResponse, - ) - - def list_plans( - self, - enrollment_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EnrollmentListPlansResponse: """ - Retrieves all benefit plans eligible for selection for a specific enrollment. - Returns available plan options with coverage tiers, premium costs, deductibles, - and carrier info. Use during enrollment process to show employees their plan - choices. + Retrieves detailed information for a specific enrollment by ID. Args: enrollment_id: Unique enrollment identifier (enrl\\__\\**) @@ -115,58 +69,7 @@ def list_plans( if not enrollment_id: raise ValueError(f"Expected a non-empty value for `enrollment_id` but received {enrollment_id!r}") return self._get( - f"/v1/enrollments/{enrollment_id}/plans", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EnrollmentListPlansResponse, - ) - - def reissue( - self, - enrollment_id: str, - *, - qle_id: str, - reason: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EnrollmentResponse: - """ - Reissues an enrollment due to a qualifying life event, allowing mid-year benefit - changes. Enables employees to modify benefit selections outside open enrollment - after a significant life event. Common scenarios: adding newborn child, covering - new spouse, adjusting coverage after losing other coverage. - - Args: - enrollment_id: Unique enrollment identifier (enrl\\__\\**) - - qle_id: ID of the qualifying life event (qle\\__\\**) - - reason: Optional reason for reissue - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not enrollment_id: - raise ValueError(f"Expected a non-empty value for `enrollment_id` but received {enrollment_id!r}") - return self._post( - f"/v1/enrollments/{enrollment_id}/reissue", - body=maybe_transform( - { - "qle_id": qle_id, - "reason": reason, - }, - enrollment_reissue_params.EnrollmentReissueParams, - ), + f"/v1/enrollments/{enrollment_id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -207,49 +110,8 @@ async def retrieve( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> EnrollmentResponse: - """Retrieves detailed information for a specific enrollment by ID. - - Returns selected - plan, coverage dates, enrolled dependents, premium amounts, and status. This - endpoint is critical for viewing comprehensive enrollment information. - - Args: - enrollment_id: Unique enrollment identifier (enrl\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds """ - if not enrollment_id: - raise ValueError(f"Expected a non-empty value for `enrollment_id` but received {enrollment_id!r}") - return await self._get( - f"/v1/enrollments/{enrollment_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EnrollmentResponse, - ) - - async def list_plans( - self, - enrollment_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EnrollmentListPlansResponse: - """ - Retrieves all benefit plans eligible for selection for a specific enrollment. - Returns available plan options with coverage tiers, premium costs, deductibles, - and carrier info. Use during enrollment process to show employees their plan - choices. + Retrieves detailed information for a specific enrollment by ID. Args: enrollment_id: Unique enrollment identifier (enrl\\__\\**) @@ -265,58 +127,7 @@ async def list_plans( if not enrollment_id: raise ValueError(f"Expected a non-empty value for `enrollment_id` but received {enrollment_id!r}") return await self._get( - f"/v1/enrollments/{enrollment_id}/plans", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=EnrollmentListPlansResponse, - ) - - async def reissue( - self, - enrollment_id: str, - *, - qle_id: str, - reason: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> EnrollmentResponse: - """ - Reissues an enrollment due to a qualifying life event, allowing mid-year benefit - changes. Enables employees to modify benefit selections outside open enrollment - after a significant life event. Common scenarios: adding newborn child, covering - new spouse, adjusting coverage after losing other coverage. - - Args: - enrollment_id: Unique enrollment identifier (enrl\\__\\**) - - qle_id: ID of the qualifying life event (qle\\__\\**) - - reason: Optional reason for reissue - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not enrollment_id: - raise ValueError(f"Expected a non-empty value for `enrollment_id` but received {enrollment_id!r}") - return await self._post( - f"/v1/enrollments/{enrollment_id}/reissue", - body=await async_maybe_transform( - { - "qle_id": qle_id, - "reason": reason, - }, - enrollment_reissue_params.EnrollmentReissueParams, - ), + f"/v1/enrollments/{enrollment_id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -331,12 +142,6 @@ def __init__(self, enrollments: EnrollmentsResource) -> None: self.retrieve = to_raw_response_wrapper( enrollments.retrieve, ) - self.list_plans = to_raw_response_wrapper( - enrollments.list_plans, - ) - self.reissue = to_raw_response_wrapper( - enrollments.reissue, - ) class AsyncEnrollmentsResourceWithRawResponse: @@ -346,12 +151,6 @@ def __init__(self, enrollments: AsyncEnrollmentsResource) -> None: self.retrieve = async_to_raw_response_wrapper( enrollments.retrieve, ) - self.list_plans = async_to_raw_response_wrapper( - enrollments.list_plans, - ) - self.reissue = async_to_raw_response_wrapper( - enrollments.reissue, - ) class EnrollmentsResourceWithStreamingResponse: @@ -361,12 +160,6 @@ def __init__(self, enrollments: EnrollmentsResource) -> None: self.retrieve = to_streamed_response_wrapper( enrollments.retrieve, ) - self.list_plans = to_streamed_response_wrapper( - enrollments.list_plans, - ) - self.reissue = to_streamed_response_wrapper( - enrollments.reissue, - ) class AsyncEnrollmentsResourceWithStreamingResponse: @@ -376,9 +169,3 @@ def __init__(self, enrollments: AsyncEnrollmentsResource) -> None: self.retrieve = async_to_streamed_response_wrapper( enrollments.retrieve, ) - self.list_plans = async_to_streamed_response_wrapper( - enrollments.list_plans, - ) - self.reissue = async_to_streamed_response_wrapper( - enrollments.reissue, - ) diff --git a/src/vitable_connect/resources/members/__init__.py b/src/vitable_connect/resources/members/__init__.py deleted file mode 100644 index b1bd994..0000000 --- a/src/vitable_connect/resources/members/__init__.py +++ /dev/null @@ -1,47 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from .members import ( - MembersResource, - AsyncMembersResource, - MembersResourceWithRawResponse, - AsyncMembersResourceWithRawResponse, - MembersResourceWithStreamingResponse, - AsyncMembersResourceWithStreamingResponse, -) -from .dependents import ( - DependentsResource, - AsyncDependentsResource, - DependentsResourceWithRawResponse, - AsyncDependentsResourceWithRawResponse, - DependentsResourceWithStreamingResponse, - AsyncDependentsResourceWithStreamingResponse, -) -from .qualifying_life_events import ( - QualifyingLifeEventsResource, - AsyncQualifyingLifeEventsResource, - QualifyingLifeEventsResourceWithRawResponse, - AsyncQualifyingLifeEventsResourceWithRawResponse, - QualifyingLifeEventsResourceWithStreamingResponse, - AsyncQualifyingLifeEventsResourceWithStreamingResponse, -) - -__all__ = [ - "DependentsResource", - "AsyncDependentsResource", - "DependentsResourceWithRawResponse", - "AsyncDependentsResourceWithRawResponse", - "DependentsResourceWithStreamingResponse", - "AsyncDependentsResourceWithStreamingResponse", - "QualifyingLifeEventsResource", - "AsyncQualifyingLifeEventsResource", - "QualifyingLifeEventsResourceWithRawResponse", - "AsyncQualifyingLifeEventsResourceWithRawResponse", - "QualifyingLifeEventsResourceWithStreamingResponse", - "AsyncQualifyingLifeEventsResourceWithStreamingResponse", - "MembersResource", - "AsyncMembersResource", - "MembersResourceWithRawResponse", - "AsyncMembersResourceWithRawResponse", - "MembersResourceWithStreamingResponse", - "AsyncMembersResourceWithStreamingResponse", -] diff --git a/src/vitable_connect/resources/members/dependents.py b/src/vitable_connect/resources/members/dependents.py deleted file mode 100644 index 7272750..0000000 --- a/src/vitable_connect/resources/members/dependents.py +++ /dev/null @@ -1,404 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Optional -from datetime import date - -import httpx - -from ...types import Sex, Relationship -from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform -from ..._compat import cached_property -from ..._resource import SyncAPIResource, AsyncAPIResource -from ..._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from ...types.sex import Sex -from ..._base_client import make_request_options -from ...types.members import dependent_list_params, dependent_create_params -from ...types.relationship import Relationship -from ...types.dependent_response import DependentResponse -from ...types.members.dependent_list_response import DependentListResponse - -__all__ = ["DependentsResource", "AsyncDependentsResource"] - - -class DependentsResource(SyncAPIResource): - """Manage dependent records (spouses, children) for employees""" - - @cached_property - def with_raw_response(self) -> DependentsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return DependentsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> DependentsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return DependentsResourceWithStreamingResponse(self) - - def create( - self, - member_id: str, - *, - date_of_birth: Union[str, date], - first_name: str, - last_name: str, - relationship: Relationship, - sex: Sex, - gender: Optional[str] | Omit = omit, - ssn: Optional[str] | Omit = omit, - suffix: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> DependentResponse: - """Creates a new dependent record for a member. - - Required: first name, last name, - date of birth, sex, and relationship type. SSN is optional but recommended for - coverage verification. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - date_of_birth: Date of birth (YYYY-MM-DD) - - first_name: Dependent's legal first name - - last_name: Dependent's legal last name - - relationship: - `Spouse` - Spouse - - `Child` - Child - - sex: - `Male` - Male - - `Female` - Female - - `Other` - Other - - `Unknown` - Unknown - - gender: Gender identity - - ssn: Social Security Number (optional, XXX-XX-XXXX or XXXXXXXXX) - - suffix: Name suffix (Jr., Sr., III) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - return self._post( - f"/v1/members/{member_id}/dependents", - body=maybe_transform( - { - "date_of_birth": date_of_birth, - "first_name": first_name, - "last_name": last_name, - "relationship": relationship, - "sex": sex, - "gender": gender, - "ssn": ssn, - "suffix": suffix, - }, - dependent_create_params.DependentCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=DependentResponse, - ) - - def list( - self, - member_id: str, - *, - active_in: bool | Omit = omit, - limit: int | Omit = omit, - page: int | Omit = omit, - relationship: Relationship | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> DependentListResponse: - """Retrieves a paginated list of dependents for a specific member. - - Dependents - include spouses, children, and domestic partners who may be eligible for benefit - coverage. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - active_in: Filter by active status - - limit: Items per page (default: 20, max: 100) - - page: Page number (default: 1) - - relationship: Filter by relationship type - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - return self._get( - f"/v1/members/{member_id}/dependents", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "active_in": active_in, - "limit": limit, - "page": page, - "relationship": relationship, - }, - dependent_list_params.DependentListParams, - ), - ), - cast_to=DependentListResponse, - ) - - -class AsyncDependentsResource(AsyncAPIResource): - """Manage dependent records (spouses, children) for employees""" - - @cached_property - def with_raw_response(self) -> AsyncDependentsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return AsyncDependentsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncDependentsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return AsyncDependentsResourceWithStreamingResponse(self) - - async def create( - self, - member_id: str, - *, - date_of_birth: Union[str, date], - first_name: str, - last_name: str, - relationship: Relationship, - sex: Sex, - gender: Optional[str] | Omit = omit, - ssn: Optional[str] | Omit = omit, - suffix: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> DependentResponse: - """Creates a new dependent record for a member. - - Required: first name, last name, - date of birth, sex, and relationship type. SSN is optional but recommended for - coverage verification. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - date_of_birth: Date of birth (YYYY-MM-DD) - - first_name: Dependent's legal first name - - last_name: Dependent's legal last name - - relationship: - `Spouse` - Spouse - - `Child` - Child - - sex: - `Male` - Male - - `Female` - Female - - `Other` - Other - - `Unknown` - Unknown - - gender: Gender identity - - ssn: Social Security Number (optional, XXX-XX-XXXX or XXXXXXXXX) - - suffix: Name suffix (Jr., Sr., III) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - return await self._post( - f"/v1/members/{member_id}/dependents", - body=await async_maybe_transform( - { - "date_of_birth": date_of_birth, - "first_name": first_name, - "last_name": last_name, - "relationship": relationship, - "sex": sex, - "gender": gender, - "ssn": ssn, - "suffix": suffix, - }, - dependent_create_params.DependentCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=DependentResponse, - ) - - async def list( - self, - member_id: str, - *, - active_in: bool | Omit = omit, - limit: int | Omit = omit, - page: int | Omit = omit, - relationship: Relationship | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> DependentListResponse: - """Retrieves a paginated list of dependents for a specific member. - - Dependents - include spouses, children, and domestic partners who may be eligible for benefit - coverage. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - active_in: Filter by active status - - limit: Items per page (default: 20, max: 100) - - page: Page number (default: 1) - - relationship: Filter by relationship type - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - return await self._get( - f"/v1/members/{member_id}/dependents", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - { - "active_in": active_in, - "limit": limit, - "page": page, - "relationship": relationship, - }, - dependent_list_params.DependentListParams, - ), - ), - cast_to=DependentListResponse, - ) - - -class DependentsResourceWithRawResponse: - def __init__(self, dependents: DependentsResource) -> None: - self._dependents = dependents - - self.create = to_raw_response_wrapper( - dependents.create, - ) - self.list = to_raw_response_wrapper( - dependents.list, - ) - - -class AsyncDependentsResourceWithRawResponse: - def __init__(self, dependents: AsyncDependentsResource) -> None: - self._dependents = dependents - - self.create = async_to_raw_response_wrapper( - dependents.create, - ) - self.list = async_to_raw_response_wrapper( - dependents.list, - ) - - -class DependentsResourceWithStreamingResponse: - def __init__(self, dependents: DependentsResource) -> None: - self._dependents = dependents - - self.create = to_streamed_response_wrapper( - dependents.create, - ) - self.list = to_streamed_response_wrapper( - dependents.list, - ) - - -class AsyncDependentsResourceWithStreamingResponse: - def __init__(self, dependents: AsyncDependentsResource) -> None: - self._dependents = dependents - - self.create = async_to_streamed_response_wrapper( - dependents.create, - ) - self.list = async_to_streamed_response_wrapper( - dependents.list, - ) diff --git a/src/vitable_connect/resources/members/members.py b/src/vitable_connect/resources/members/members.py deleted file mode 100644 index f6ff220..0000000 --- a/src/vitable_connect/resources/members/members.py +++ /dev/null @@ -1,146 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from ..._compat import cached_property -from .dependents import ( - DependentsResource, - AsyncDependentsResource, - DependentsResourceWithRawResponse, - AsyncDependentsResourceWithRawResponse, - DependentsResourceWithStreamingResponse, - AsyncDependentsResourceWithStreamingResponse, -) -from ..._resource import SyncAPIResource, AsyncAPIResource -from .qualifying_life_events import ( - QualifyingLifeEventsResource, - AsyncQualifyingLifeEventsResource, - QualifyingLifeEventsResourceWithRawResponse, - AsyncQualifyingLifeEventsResourceWithRawResponse, - QualifyingLifeEventsResourceWithStreamingResponse, - AsyncQualifyingLifeEventsResourceWithStreamingResponse, -) - -__all__ = ["MembersResource", "AsyncMembersResource"] - - -class MembersResource(SyncAPIResource): - @cached_property - def dependents(self) -> DependentsResource: - """Manage dependent records (spouses, children) for employees""" - return DependentsResource(self._client) - - @cached_property - def qualifying_life_events(self) -> QualifyingLifeEventsResource: - """Record life events that trigger special enrollment periods""" - return QualifyingLifeEventsResource(self._client) - - @cached_property - def with_raw_response(self) -> MembersResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return MembersResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> MembersResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return MembersResourceWithStreamingResponse(self) - - -class AsyncMembersResource(AsyncAPIResource): - @cached_property - def dependents(self) -> AsyncDependentsResource: - """Manage dependent records (spouses, children) for employees""" - return AsyncDependentsResource(self._client) - - @cached_property - def qualifying_life_events(self) -> AsyncQualifyingLifeEventsResource: - """Record life events that trigger special enrollment periods""" - return AsyncQualifyingLifeEventsResource(self._client) - - @cached_property - def with_raw_response(self) -> AsyncMembersResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return AsyncMembersResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncMembersResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return AsyncMembersResourceWithStreamingResponse(self) - - -class MembersResourceWithRawResponse: - def __init__(self, members: MembersResource) -> None: - self._members = members - - @cached_property - def dependents(self) -> DependentsResourceWithRawResponse: - """Manage dependent records (spouses, children) for employees""" - return DependentsResourceWithRawResponse(self._members.dependents) - - @cached_property - def qualifying_life_events(self) -> QualifyingLifeEventsResourceWithRawResponse: - """Record life events that trigger special enrollment periods""" - return QualifyingLifeEventsResourceWithRawResponse(self._members.qualifying_life_events) - - -class AsyncMembersResourceWithRawResponse: - def __init__(self, members: AsyncMembersResource) -> None: - self._members = members - - @cached_property - def dependents(self) -> AsyncDependentsResourceWithRawResponse: - """Manage dependent records (spouses, children) for employees""" - return AsyncDependentsResourceWithRawResponse(self._members.dependents) - - @cached_property - def qualifying_life_events(self) -> AsyncQualifyingLifeEventsResourceWithRawResponse: - """Record life events that trigger special enrollment periods""" - return AsyncQualifyingLifeEventsResourceWithRawResponse(self._members.qualifying_life_events) - - -class MembersResourceWithStreamingResponse: - def __init__(self, members: MembersResource) -> None: - self._members = members - - @cached_property - def dependents(self) -> DependentsResourceWithStreamingResponse: - """Manage dependent records (spouses, children) for employees""" - return DependentsResourceWithStreamingResponse(self._members.dependents) - - @cached_property - def qualifying_life_events(self) -> QualifyingLifeEventsResourceWithStreamingResponse: - """Record life events that trigger special enrollment periods""" - return QualifyingLifeEventsResourceWithStreamingResponse(self._members.qualifying_life_events) - - -class AsyncMembersResourceWithStreamingResponse: - def __init__(self, members: AsyncMembersResource) -> None: - self._members = members - - @cached_property - def dependents(self) -> AsyncDependentsResourceWithStreamingResponse: - """Manage dependent records (spouses, children) for employees""" - return AsyncDependentsResourceWithStreamingResponse(self._members.dependents) - - @cached_property - def qualifying_life_events(self) -> AsyncQualifyingLifeEventsResourceWithStreamingResponse: - """Record life events that trigger special enrollment periods""" - return AsyncQualifyingLifeEventsResourceWithStreamingResponse(self._members.qualifying_life_events) diff --git a/src/vitable_connect/resources/members/qualifying_life_events.py b/src/vitable_connect/resources/members/qualifying_life_events.py deleted file mode 100644 index 30cd4bc..0000000 --- a/src/vitable_connect/resources/members/qualifying_life_events.py +++ /dev/null @@ -1,476 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Optional -from datetime import date - -import httpx - -from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform -from ..._compat import cached_property -from ..._resource import SyncAPIResource, AsyncAPIResource -from ..._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from ..._base_client import make_request_options -from ...types.members import ( - EventType, - QualifyingLifeEventStatus, - qualifying_life_event_list_params, - qualifying_life_event_record_params, -) -from ...types.members.event_type import EventType -from ...types.members.qualifying_life_event_status import QualifyingLifeEventStatus -from ...types.members.qualifying_life_event_response import QualifyingLifeEventResponse -from ...types.members.qualifying_life_event_list_response import QualifyingLifeEventListResponse - -__all__ = ["QualifyingLifeEventsResource", "AsyncQualifyingLifeEventsResource"] - - -class QualifyingLifeEventsResource(SyncAPIResource): - """Record life events that trigger special enrollment periods""" - - @cached_property - def with_raw_response(self) -> QualifyingLifeEventsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return QualifyingLifeEventsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> QualifyingLifeEventsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return QualifyingLifeEventsResourceWithStreamingResponse(self) - - def retrieve( - self, - qle_id: str, - *, - member_id: str, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> QualifyingLifeEventResponse: - """Retrieves detailed information for a specific QLE by ID. - - Returns event type, - date, status, and enrollment window information. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - qle_id: Unique qualifying life event identifier (qle\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - if not qle_id: - raise ValueError(f"Expected a non-empty value for `qle_id` but received {qle_id!r}") - return self._get( - f"/v1/members/{member_id}/qualifying-life-events/{qle_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=QualifyingLifeEventResponse, - ) - - def list( - self, - member_id: str, - *, - event_type: EventType | Omit = omit, - limit: int | Omit = omit, - page: int | Omit = omit, - status: QualifyingLifeEventStatus | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> QualifyingLifeEventListResponse: - """Retrieves a paginated list of qualifying life events for a member. - - QLEs are - significant life changes (marriage, birth, adoption, loss of coverage) that - allow benefit enrollment changes outside open enrollment. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - event_type: Filter by QLE type - - limit: Items per page (default: 20, max: 100) - - page: Page number (default: 1) - - status: Filter by QLE status - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - return self._get( - f"/v1/members/{member_id}/qualifying-life-events", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "event_type": event_type, - "limit": limit, - "page": page, - "status": status, - }, - qualifying_life_event_list_params.QualifyingLifeEventListParams, - ), - ), - cast_to=QualifyingLifeEventListResponse, - ) - - def record( - self, - member_id: str, - *, - event_date: Union[str, date], - event_type: EventType, - notes: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> QualifyingLifeEventResponse: - """Records a qualifying life event occurrence for a member. - - Opens a special - enrollment period allowing benefit changes outside open enrollment. Employees - typically have 30-60 days from the event date to complete enrollment changes. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - event_date: Date when the event occurred - - event_type: - `Marriage` - Marriage - - `Birth` - Birth - - `Adoption` - Adoption - - `Divorce` - Divorce - - `Death` - Death - - `Job Loss` - Job Loss - - `Reduction In Hours` - Reduction In Hours - - `Employer Bankruptcy` - Employer Bankruptcy - - `Medicare Entitlement` - Medicare Entitlement - - `Termination` - Termination - - `Other` - Other - - notes: Optional notes about the event - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - return self._post( - f"/v1/members/{member_id}/qualifying-life-events", - body=maybe_transform( - { - "event_date": event_date, - "event_type": event_type, - "notes": notes, - }, - qualifying_life_event_record_params.QualifyingLifeEventRecordParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=QualifyingLifeEventResponse, - ) - - -class AsyncQualifyingLifeEventsResource(AsyncAPIResource): - """Record life events that trigger special enrollment periods""" - - @cached_property - def with_raw_response(self) -> AsyncQualifyingLifeEventsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return AsyncQualifyingLifeEventsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncQualifyingLifeEventsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return AsyncQualifyingLifeEventsResourceWithStreamingResponse(self) - - async def retrieve( - self, - qle_id: str, - *, - member_id: str, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> QualifyingLifeEventResponse: - """Retrieves detailed information for a specific QLE by ID. - - Returns event type, - date, status, and enrollment window information. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - qle_id: Unique qualifying life event identifier (qle\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - if not qle_id: - raise ValueError(f"Expected a non-empty value for `qle_id` but received {qle_id!r}") - return await self._get( - f"/v1/members/{member_id}/qualifying-life-events/{qle_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=QualifyingLifeEventResponse, - ) - - async def list( - self, - member_id: str, - *, - event_type: EventType | Omit = omit, - limit: int | Omit = omit, - page: int | Omit = omit, - status: QualifyingLifeEventStatus | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> QualifyingLifeEventListResponse: - """Retrieves a paginated list of qualifying life events for a member. - - QLEs are - significant life changes (marriage, birth, adoption, loss of coverage) that - allow benefit enrollment changes outside open enrollment. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - event_type: Filter by QLE type - - limit: Items per page (default: 20, max: 100) - - page: Page number (default: 1) - - status: Filter by QLE status - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - return await self._get( - f"/v1/members/{member_id}/qualifying-life-events", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - { - "event_type": event_type, - "limit": limit, - "page": page, - "status": status, - }, - qualifying_life_event_list_params.QualifyingLifeEventListParams, - ), - ), - cast_to=QualifyingLifeEventListResponse, - ) - - async def record( - self, - member_id: str, - *, - event_date: Union[str, date], - event_type: EventType, - notes: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> QualifyingLifeEventResponse: - """Records a qualifying life event occurrence for a member. - - Opens a special - enrollment period allowing benefit changes outside open enrollment. Employees - typically have 30-60 days from the event date to complete enrollment changes. - - Args: - member_id: Unique member identifier (mbr\\__\\**) - - event_date: Date when the event occurred - - event_type: - `Marriage` - Marriage - - `Birth` - Birth - - `Adoption` - Adoption - - `Divorce` - Divorce - - `Death` - Death - - `Job Loss` - Job Loss - - `Reduction In Hours` - Reduction In Hours - - `Employer Bankruptcy` - Employer Bankruptcy - - `Medicare Entitlement` - Medicare Entitlement - - `Termination` - Termination - - `Other` - Other - - notes: Optional notes about the event - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not member_id: - raise ValueError(f"Expected a non-empty value for `member_id` but received {member_id!r}") - return await self._post( - f"/v1/members/{member_id}/qualifying-life-events", - body=await async_maybe_transform( - { - "event_date": event_date, - "event_type": event_type, - "notes": notes, - }, - qualifying_life_event_record_params.QualifyingLifeEventRecordParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=QualifyingLifeEventResponse, - ) - - -class QualifyingLifeEventsResourceWithRawResponse: - def __init__(self, qualifying_life_events: QualifyingLifeEventsResource) -> None: - self._qualifying_life_events = qualifying_life_events - - self.retrieve = to_raw_response_wrapper( - qualifying_life_events.retrieve, - ) - self.list = to_raw_response_wrapper( - qualifying_life_events.list, - ) - self.record = to_raw_response_wrapper( - qualifying_life_events.record, - ) - - -class AsyncQualifyingLifeEventsResourceWithRawResponse: - def __init__(self, qualifying_life_events: AsyncQualifyingLifeEventsResource) -> None: - self._qualifying_life_events = qualifying_life_events - - self.retrieve = async_to_raw_response_wrapper( - qualifying_life_events.retrieve, - ) - self.list = async_to_raw_response_wrapper( - qualifying_life_events.list, - ) - self.record = async_to_raw_response_wrapper( - qualifying_life_events.record, - ) - - -class QualifyingLifeEventsResourceWithStreamingResponse: - def __init__(self, qualifying_life_events: QualifyingLifeEventsResource) -> None: - self._qualifying_life_events = qualifying_life_events - - self.retrieve = to_streamed_response_wrapper( - qualifying_life_events.retrieve, - ) - self.list = to_streamed_response_wrapper( - qualifying_life_events.list, - ) - self.record = to_streamed_response_wrapper( - qualifying_life_events.record, - ) - - -class AsyncQualifyingLifeEventsResourceWithStreamingResponse: - def __init__(self, qualifying_life_events: AsyncQualifyingLifeEventsResource) -> None: - self._qualifying_life_events = qualifying_life_events - - self.retrieve = async_to_streamed_response_wrapper( - qualifying_life_events.retrieve, - ) - self.list = async_to_streamed_response_wrapper( - qualifying_life_events.list, - ) - self.record = async_to_streamed_response_wrapper( - qualifying_life_events.record, - ) diff --git a/src/vitable_connect/resources/plan_years.py b/src/vitable_connect/resources/plan_years.py deleted file mode 100644 index e6e7b2a..0000000 --- a/src/vitable_connect/resources/plan_years.py +++ /dev/null @@ -1,312 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Iterable, Optional -from datetime import date - -import httpx - -from ..types import plan_year_update_params -from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform -from .._compat import cached_property -from .._resource import SyncAPIResource, AsyncAPIResource -from .._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from .._base_client import make_request_options -from ..types.benefit_products.plan_year_response import PlanYearResponse - -__all__ = ["PlanYearsResource", "AsyncPlanYearsResource"] - - -class PlanYearsResource(SyncAPIResource): - """Configure annual benefit periods with coverage dates and contribution settings""" - - @cached_property - def with_raw_response(self) -> PlanYearsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return PlanYearsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> PlanYearsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return PlanYearsResourceWithStreamingResponse(self) - - def retrieve( - self, - plan_year_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> PlanYearResponse: - """Retrieves detailed configuration for a specific plan year by ID. - - Returns - coverage dates, open enrollment period, available plans, and contribution - structure. - - Args: - plan_year_id: Unique plan year identifier (plyr\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not plan_year_id: - raise ValueError(f"Expected a non-empty value for `plan_year_id` but received {plan_year_id!r}") - return self._get( - f"/v1/plan-years/{plan_year_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=PlanYearResponse, - ) - - def update( - self, - plan_year_id: str, - *, - contribution_classes: Optional[Iterable[plan_year_update_params.ContributionClass]] | Omit = omit, - open_enrollment_end: Union[str, date, None] | Omit = omit, - open_enrollment_start: Union[str, date, None] | Omit = omit, - status: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> PlanYearResponse: - """Updates an existing plan year's configuration. - - Important: Plan years can only be - edited until open enrollment starts. All fields are optional. Monetary values - must be in cents. - - Args: - plan_year_id: Unique plan year identifier (plyr\\__\\**) - - contribution_classes: Updated contribution classes - - open_enrollment_end: Open enrollment end date - - open_enrollment_start: Open enrollment start date - - status: Plan year status - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not plan_year_id: - raise ValueError(f"Expected a non-empty value for `plan_year_id` but received {plan_year_id!r}") - return self._put( - f"/v1/plan-years/{plan_year_id}", - body=maybe_transform( - { - "contribution_classes": contribution_classes, - "open_enrollment_end": open_enrollment_end, - "open_enrollment_start": open_enrollment_start, - "status": status, - }, - plan_year_update_params.PlanYearUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=PlanYearResponse, - ) - - -class AsyncPlanYearsResource(AsyncAPIResource): - """Configure annual benefit periods with coverage dates and contribution settings""" - - @cached_property - def with_raw_response(self) -> AsyncPlanYearsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#accessing-raw-response-data-eg-headers - """ - return AsyncPlanYearsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncPlanYearsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/Vitable-Inc/vitable-connect-python#with_streaming_response - """ - return AsyncPlanYearsResourceWithStreamingResponse(self) - - async def retrieve( - self, - plan_year_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> PlanYearResponse: - """Retrieves detailed configuration for a specific plan year by ID. - - Returns - coverage dates, open enrollment period, available plans, and contribution - structure. - - Args: - plan_year_id: Unique plan year identifier (plyr\\__\\**) - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not plan_year_id: - raise ValueError(f"Expected a non-empty value for `plan_year_id` but received {plan_year_id!r}") - return await self._get( - f"/v1/plan-years/{plan_year_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=PlanYearResponse, - ) - - async def update( - self, - plan_year_id: str, - *, - contribution_classes: Optional[Iterable[plan_year_update_params.ContributionClass]] | Omit = omit, - open_enrollment_end: Union[str, date, None] | Omit = omit, - open_enrollment_start: Union[str, date, None] | Omit = omit, - status: Optional[str] | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> PlanYearResponse: - """Updates an existing plan year's configuration. - - Important: Plan years can only be - edited until open enrollment starts. All fields are optional. Monetary values - must be in cents. - - Args: - plan_year_id: Unique plan year identifier (plyr\\__\\**) - - contribution_classes: Updated contribution classes - - open_enrollment_end: Open enrollment end date - - open_enrollment_start: Open enrollment start date - - status: Plan year status - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not plan_year_id: - raise ValueError(f"Expected a non-empty value for `plan_year_id` but received {plan_year_id!r}") - return await self._put( - f"/v1/plan-years/{plan_year_id}", - body=await async_maybe_transform( - { - "contribution_classes": contribution_classes, - "open_enrollment_end": open_enrollment_end, - "open_enrollment_start": open_enrollment_start, - "status": status, - }, - plan_year_update_params.PlanYearUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=PlanYearResponse, - ) - - -class PlanYearsResourceWithRawResponse: - def __init__(self, plan_years: PlanYearsResource) -> None: - self._plan_years = plan_years - - self.retrieve = to_raw_response_wrapper( - plan_years.retrieve, - ) - self.update = to_raw_response_wrapper( - plan_years.update, - ) - - -class AsyncPlanYearsResourceWithRawResponse: - def __init__(self, plan_years: AsyncPlanYearsResource) -> None: - self._plan_years = plan_years - - self.retrieve = async_to_raw_response_wrapper( - plan_years.retrieve, - ) - self.update = async_to_raw_response_wrapper( - plan_years.update, - ) - - -class PlanYearsResourceWithStreamingResponse: - def __init__(self, plan_years: PlanYearsResource) -> None: - self._plan_years = plan_years - - self.retrieve = to_streamed_response_wrapper( - plan_years.retrieve, - ) - self.update = to_streamed_response_wrapper( - plan_years.update, - ) - - -class AsyncPlanYearsResourceWithStreamingResponse: - def __init__(self, plan_years: AsyncPlanYearsResource) -> None: - self._plan_years = plan_years - - self.retrieve = async_to_streamed_response_wrapper( - plan_years.retrieve, - ) - self.update = async_to_streamed_response_wrapper( - plan_years.update, - ) diff --git a/src/vitable_connect/types/__init__.py b/src/vitable_connect/types/__init__.py index 1af0589..8bf0c68 100644 --- a/src/vitable_connect/types/__init__.py +++ b/src/vitable_connect/types/__init__.py @@ -2,37 +2,23 @@ from __future__ import annotations -from .sex import Sex as Sex from .type import Type as Type from .category import Category as Category from .employee import Employee as Employee from .employer import Employer as Employer -from .dependent import Dependent as Dependent -from .plan_tier import PlanTier as PlanTier from .enrollment import Enrollment as Enrollment from .pagination import Pagination as Pagination from .product_code import ProductCode as ProductCode -from .relationship import Relationship as Relationship -from .coverage_tier import CoverageTier as CoverageTier from .employee_class import EmployeeClass as EmployeeClass from .employee_response import EmployeeResponse as EmployeeResponse from .employer_response import EmployerResponse as EmployerResponse from .enrollment_status import EnrollmentStatus as EnrollmentStatus -from .dependent_response import DependentResponse as DependentResponse from .enrollment_response import EnrollmentResponse as EnrollmentResponse from .employer_list_params import EmployerListParams as EmployerListParams -from .employee_update_params import EmployeeUpdateParams as EmployeeUpdateParams from .employer_create_params import EmployerCreateParams as EmployerCreateParams from .employer_list_response import EmployerListResponse as EmployerListResponse -from .employer_update_params import EmployerUpdateParams as EmployerUpdateParams -from .dependent_update_params import DependentUpdateParams as DependentUpdateParams -from .plan_year_update_params import PlanYearUpdateParams as PlanYearUpdateParams -from .enrollment_reissue_params import EnrollmentReissueParams as EnrollmentReissueParams from .benefit_eligibility_policy import BenefitEligibilityPolicy as BenefitEligibilityPolicy -from .benefit_product_list_params import BenefitProductListParams as BenefitProductListParams -from .benefit_product_list_response import BenefitProductListResponse as BenefitProductListResponse from .auth_issue_access_token_params import AuthIssueAccessTokenParams as AuthIssueAccessTokenParams -from .enrollment_list_plans_response import EnrollmentListPlansResponse as EnrollmentListPlansResponse from .auth_issue_access_token_response import AuthIssueAccessTokenResponse as AuthIssueAccessTokenResponse from .employer_create_eligibility_policy_params import ( EmployerCreateEligibilityPolicyParams as EmployerCreateEligibilityPolicyParams, diff --git a/src/vitable_connect/types/benefit_eligibility_policy.py b/src/vitable_connect/types/benefit_eligibility_policy.py index 262ba00..d113c91 100644 --- a/src/vitable_connect/types/benefit_eligibility_policy.py +++ b/src/vitable_connect/types/benefit_eligibility_policy.py @@ -1,72 +1,29 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import List, Optional -from datetime import date, datetime +from datetime import datetime from .._models import BaseModel -__all__ = ["BenefitEligibilityPolicy", "Data", "DataRule"] - - -class DataRule(BaseModel): - """Individual eligibility rule within a policy.""" - - operator: str - """Comparison operator (e.g., 'equals', 'greater_than', 'in')""" - - rule_type: str - """ - Type of eligibility rule (e.g., 'employment_status', 'hours_per_week', - 'waiting_period') - """ - - value: object - """Value to compare against (type depends on rule_type)""" +__all__ = ["BenefitEligibilityPolicy", "Data"] class Data(BaseModel): - """Serializer for Benefit Eligibility Policy entity. - - Eligibility policies define rules that determine which employees qualify for benefits. - """ - id: str - """Unique eligibility policy identifier with 'epol\\__' prefix""" - active_in: bool - """Whether this policy is currently active""" + active: bool - created_at: datetime - """Timestamp when the policy was created""" + classification: str - effective_date: date - """Date when this policy becomes effective""" + created_at: datetime employer_id: str - """ID of the employer this policy belongs to (empr\\__\\**)""" - - name: str - """Display name for the eligibility policy""" - - rules: List[DataRule] - """List of eligibility rules that must be satisfied""" updated_at: datetime - """Timestamp when the policy was last updated""" - - description: Optional[str] = None - """Detailed description of the policy""" - replaced_policy_id: Optional[str] = None - """ID of the policy this one replaces, if any (epol\\__\\**)""" + waiting_period: str class BenefitEligibilityPolicy(BaseModel): """Response containing a single benefit eligibility policy resource.""" data: Data - """Serializer for Benefit Eligibility Policy entity. - - Eligibility policies define rules that determine which employees qualify for - benefits. - """ diff --git a/src/vitable_connect/types/benefit_product_list_params.py b/src/vitable_connect/types/benefit_product_list_params.py deleted file mode 100644 index 21f229b..0000000 --- a/src/vitable_connect/types/benefit_product_list_params.py +++ /dev/null @@ -1,27 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import TypedDict - -from .category import Category -from .product_code import ProductCode - -__all__ = ["BenefitProductListParams"] - - -class BenefitProductListParams(TypedDict, total=False): - active_in: bool - """Filter by active status""" - - category: Category - """Filter by product category""" - - limit: int - """Items per page (default: 20, max: 100)""" - - page: int - """Page number (default: 1)""" - - product_code: ProductCode - """Filter by product code""" diff --git a/src/vitable_connect/types/benefit_product_list_response.py b/src/vitable_connect/types/benefit_product_list_response.py deleted file mode 100644 index fe86979..0000000 --- a/src/vitable_connect/types/benefit_product_list_response.py +++ /dev/null @@ -1,76 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List, Optional -from datetime import datetime - -from .._models import BaseModel -from .category import Category -from .pagination import Pagination -from .product_code import ProductCode - -__all__ = ["BenefitProductListResponse", "Data"] - - -class Data(BaseModel): - """Serializer for Benefit Product entity in public API responses. - - Benefit Products represent types of benefits (dental, vision, medical, etc.) - that an Organization can offer to their Employers. - """ - - id: str - """Unique benefit product identifier with 'bprd\\__' prefix""" - - active_in: bool - """Whether this product is currently available for offering""" - - category: Category - """ - - `Medical` - Medical - - `Dental` - Dental - - `Vision` - Vision - - `Hospital` - Hospital - """ - - created_at: datetime - """Timestamp when the product was created""" - - name: str - """Display name of the benefit product""" - - product_code: ProductCode - """ - - `EBA` - Eba Mec - - `VPC` - Vpc Enhanced - - `VPC_CORE` - Vpc Core - - `MEC` - Vpc Mec - - `MEC2` - Mec2 - - `MEC_PLUS` - Mec Plus - - `MVP` - Mvp - - `MVP2` - Mvp2 - - `MVPSL` - Mvpsl - - `MVPSL2` - Mvpsl2 - - `VD` - Dental - - `VV` - Vision - - `ICHRA` - Ichra - - `ICHRA_PREMIUM_PLUS` - Ichra Premium Plus - - `ICHRA_REIMBURSEMENT_ONLY` - Ichra Reimbursement Only - """ - - updated_at: datetime - """Timestamp when the product was last updated""" - - carrier_name: Optional[str] = None - """Name of the carrier providing this product""" - - description: Optional[str] = None - """Detailed description of the benefit product""" - - -class BenefitProductListResponse(BaseModel): - """Paginated list response containing benefit product resources.""" - - data: List[Data] - - pagination: Pagination - """Pagination metadata for list responses.""" diff --git a/src/vitable_connect/types/benefit_products/__init__.py b/src/vitable_connect/types/benefit_products/__init__.py index a13344e..f8ee8b1 100644 --- a/src/vitable_connect/types/benefit_products/__init__.py +++ b/src/vitable_connect/types/benefit_products/__init__.py @@ -1,10 +1,3 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. from __future__ import annotations - -from .plan_year import PlanYear as PlanYear -from .plan_year_status import PlanYearStatus as PlanYearStatus -from .plan_year_response import PlanYearResponse as PlanYearResponse -from .plan_year_list_params import PlanYearListParams as PlanYearListParams -from .plan_year_create_params import PlanYearCreateParams as PlanYearCreateParams -from .plan_year_list_response import PlanYearListResponse as PlanYearListResponse diff --git a/src/vitable_connect/types/benefit_products/plan_year.py b/src/vitable_connect/types/benefit_products/plan_year.py deleted file mode 100644 index e0de738..0000000 --- a/src/vitable_connect/types/benefit_products/plan_year.py +++ /dev/null @@ -1,119 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List, Optional -from datetime import date, datetime - -from ..._models import BaseModel -from ..plan_tier import PlanTier -from ..coverage_tier import CoverageTier -from .plan_year_status import PlanYearStatus - -__all__ = ["PlanYear", "ContributionClass", "Plan"] - - -class ContributionClass(BaseModel): - """Defines eligibility tiers for contributions within a plan year. - - Contribution classes specify cost structures based on employment type - and family coverage status. - """ - - id: str - """Unique contribution class identifier""" - - coverage_tier: CoverageTier - """ - - `Unspecified` - Unspecified - - `EE` - Ee - - `ES` - Es - - `EC` - Ec - - `EF` - Ef - """ - - employee_contribution_cents: int - """Employee's monthly contribution amount in cents""" - - employer_contribution_cents: int - """Employer's monthly contribution amount in cents""" - - employment: str - """Employment type for this contribution class (e.g., 'full_time', 'part_time')""" - - -class Plan(BaseModel): - """Nested plan within PlanYearSerializer.""" - - id: str - """Unique plan identifier with 'plan\\__' prefix""" - - carrier_plan_id: str - """Reference to the carrier's plan definition (cplan\\__\\**)""" - - monthly_premium_cents: int - """Base monthly premium in cents""" - - name: str - """Display name of the benefit plan""" - - deductible_cents: Optional[int] = None - """Annual deductible amount in cents""" - - out_of_pocket_max_cents: Optional[int] = None - """Annual out-of-pocket maximum in cents""" - - tier: Optional[PlanTier] = None - """ - - `Bronze` - Bronze - - `Silver` - Silver - - `Gold` - Gold - - `Platinum` - Platinum - """ - - -class PlanYear(BaseModel): - """Serializer for Plan Year entity in public API responses. - - A Plan Year represents a benefit period configuration including coverage dates, - open enrollment windows, available plans, and contribution structures. - """ - - id: str - """Unique plan year identifier with 'plyr\\__' prefix""" - - benefit_product_id: str - """ID of the benefit product (bprd\\__\\**)""" - - contribution_classes: List[ContributionClass] - """List of contribution classes defining eligibility tiers and cost structures""" - - coverage_end: date - """Date when benefit coverage ends""" - - coverage_start: date - """Date when benefit coverage begins""" - - created_at: datetime - """Timestamp when the plan year was created""" - - employer_id: str - """ID of the employer this plan year is for (empr\\__\\**)""" - - open_enrollment_end_date: date - """Date when open enrollment period ends""" - - open_enrollment_start_date: date - """Date when open enrollment period begins""" - - plans: List[Plan] - """List of benefit plans available in this plan year""" - - status: PlanYearStatus - """ - - `draft` - Draft - - `open_enrollment` - Open Enrollment - - `active` - Active - - `expired` - Expired - """ - - updated_at: datetime - """Timestamp when the plan year was last updated""" diff --git a/src/vitable_connect/types/benefit_products/plan_year_create_params.py b/src/vitable_connect/types/benefit_products/plan_year_create_params.py deleted file mode 100644 index 186005a..0000000 --- a/src/vitable_connect/types/benefit_products/plan_year_create_params.py +++ /dev/null @@ -1,54 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Iterable -from datetime import date -from typing_extensions import Required, Annotated, TypedDict - -from ..._utils import PropertyInfo -from ..coverage_tier import CoverageTier - -__all__ = ["PlanYearCreateParams", "ContributionClass"] - - -class PlanYearCreateParams(TypedDict, total=False): - contribution_classes: Required[Iterable[ContributionClass]] - """List of contribution classes (at least one required)""" - - coverage_end: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] - """Coverage end date""" - - coverage_start: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] - """Coverage start date""" - - employer_id: Required[str] - """Employer ID this plan year is for (empr\\__\\**)""" - - open_enrollment_end: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] - """Open enrollment end date""" - - open_enrollment_start: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] - """Open enrollment start date""" - - -class ContributionClass(TypedDict, total=False): - """Contribution class input for plan year creation.""" - - coverage_tier: Required[CoverageTier] - """ - - `Unspecified` - Unspecified - - `EE` - Ee - - `ES` - Es - - `EC` - Ec - - `EF` - Ef - """ - - employee_contribution_cents: Required[int] - """Employee's monthly contribution in cents""" - - employer_contribution_cents: Required[int] - """Employer's monthly contribution in cents""" - - employment: Required[str] - """Employment type (e.g., 'full_time', 'part_time')""" diff --git a/src/vitable_connect/types/benefit_products/plan_year_list_params.py b/src/vitable_connect/types/benefit_products/plan_year_list_params.py deleted file mode 100644 index eef925e..0000000 --- a/src/vitable_connect/types/benefit_products/plan_year_list_params.py +++ /dev/null @@ -1,23 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import TypedDict - -from .plan_year_status import PlanYearStatus - -__all__ = ["PlanYearListParams"] - - -class PlanYearListParams(TypedDict, total=False): - employer_id: str - """Filter by employer ID""" - - limit: int - """Items per page (default: 20, max: 100)""" - - page: int - """Page number (default: 1)""" - - status: PlanYearStatus - """Filter by plan year status""" diff --git a/src/vitable_connect/types/benefit_products/plan_year_list_response.py b/src/vitable_connect/types/benefit_products/plan_year_list_response.py deleted file mode 100644 index 06c816b..0000000 --- a/src/vitable_connect/types/benefit_products/plan_year_list_response.py +++ /dev/null @@ -1,18 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List - -from ..._models import BaseModel -from .plan_year import PlanYear -from ..pagination import Pagination - -__all__ = ["PlanYearListResponse"] - - -class PlanYearListResponse(BaseModel): - """Paginated list response containing plan year resources.""" - - data: List[PlanYear] - - pagination: Pagination - """Pagination metadata for list responses.""" diff --git a/src/vitable_connect/types/benefit_products/plan_year_response.py b/src/vitable_connect/types/benefit_products/plan_year_response.py deleted file mode 100644 index 8b696fb..0000000 --- a/src/vitable_connect/types/benefit_products/plan_year_response.py +++ /dev/null @@ -1,17 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from ..._models import BaseModel -from .plan_year import PlanYear - -__all__ = ["PlanYearResponse"] - - -class PlanYearResponse(BaseModel): - """Response containing a single plan year resource.""" - - data: PlanYear - """Serializer for Plan Year entity in public API responses. - - A Plan Year represents a benefit period configuration including coverage dates, - open enrollment windows, available plans, and contribution structures. - """ diff --git a/src/vitable_connect/types/benefit_products/plan_year_status.py b/src/vitable_connect/types/benefit_products/plan_year_status.py deleted file mode 100644 index b4cbcf3..0000000 --- a/src/vitable_connect/types/benefit_products/plan_year_status.py +++ /dev/null @@ -1,7 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import Literal, TypeAlias - -__all__ = ["PlanYearStatus"] - -PlanYearStatus: TypeAlias = Literal["draft", "open_enrollment", "active", "expired"] diff --git a/src/vitable_connect/types/coverage_tier.py b/src/vitable_connect/types/coverage_tier.py deleted file mode 100644 index 81016cf..0000000 --- a/src/vitable_connect/types/coverage_tier.py +++ /dev/null @@ -1,7 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import Literal, TypeAlias - -__all__ = ["CoverageTier"] - -CoverageTier: TypeAlias = Literal["Unspecified", "EE", "ES", "EC", "EF"] diff --git a/src/vitable_connect/types/dependent.py b/src/vitable_connect/types/dependent.py deleted file mode 100644 index b06c41d..0000000 --- a/src/vitable_connect/types/dependent.py +++ /dev/null @@ -1,65 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Optional -from datetime import date, datetime - -from .sex import Sex -from .._models import BaseModel -from .relationship import Relationship - -__all__ = ["Dependent"] - - -class Dependent(BaseModel): - """Serializer for Dependent entity in public API responses. - - Dependents are family members (spouse, children) who may be eligible - for benefit coverage through an employee. - """ - - id: str - """Unique dependent identifier with 'dpnd\\__' prefix""" - - active_in: bool - """Whether the dependent is currently active""" - - created_at: datetime - """Timestamp when the dependent was created""" - - date_of_birth: date - """Dependent's date of birth (YYYY-MM-DD)""" - - first_name: str - """Dependent's legal first name""" - - last_name: str - """Dependent's legal last name""" - - member_id: str - """ID of the primary member/employee (mbr\\__\\**)""" - - relationship: Relationship - """ - - `Spouse` - Spouse - - `Child` - Child - """ - - sex: Sex - """ - - `Male` - Male - - `Female` - Female - - `Other` - Other - - `Unknown` - Unknown - """ - - updated_at: datetime - """Timestamp when the dependent was last updated""" - - gender: Optional[str] = None - """Gender identity, if provided""" - - ssn_last_four: Optional[str] = None - """Last 4 digits of SSN (masked)""" - - suffix: Optional[str] = None - """Name suffix (e.g., Jr., Sr., III)""" diff --git a/src/vitable_connect/types/dependent_response.py b/src/vitable_connect/types/dependent_response.py deleted file mode 100644 index adf9ab6..0000000 --- a/src/vitable_connect/types/dependent_response.py +++ /dev/null @@ -1,17 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from .._models import BaseModel -from .dependent import Dependent - -__all__ = ["DependentResponse"] - - -class DependentResponse(BaseModel): - """Response containing a single dependent resource.""" - - data: Dependent - """Serializer for Dependent entity in public API responses. - - Dependents are family members (spouse, children) who may be eligible for benefit - coverage through an employee. - """ diff --git a/src/vitable_connect/types/dependent_update_params.py b/src/vitable_connect/types/dependent_update_params.py deleted file mode 100644 index f85d4d2..0000000 --- a/src/vitable_connect/types/dependent_update_params.py +++ /dev/null @@ -1,24 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Optional -from typing_extensions import TypedDict - -from .relationship import Relationship - -__all__ = ["DependentUpdateParams"] - - -class DependentUpdateParams(TypedDict, total=False): - active: Optional[bool] - """Whether the dependent is active""" - - gender: Optional[str] - """Gender identity""" - - relationship: Optional[Relationship] - """ - - `Spouse` - Spouse - - `Child` - Child - """ diff --git a/src/vitable_connect/types/employee.py b/src/vitable_connect/types/employee.py index deb4f3b..684ce96 100644 --- a/src/vitable_connect/types/employee.py +++ b/src/vitable_connect/types/employee.py @@ -1,109 +1,83 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional from datetime import date, datetime -from .sex import Sex from .._models import BaseModel from .employee_class import EmployeeClass +from .enrollment_status import EnrollmentStatus -__all__ = ["Employee", "Member", "Address"] +__all__ = ["Employee", "Enrollment", "Address"] -class Member(BaseModel): - """Nested member entity containing personal identity information. - - Matches MemberEntity from account module domain. - """ - +class Enrollment(BaseModel): id: str - """Unique member identifier with 'mbr\\__' prefix""" - - date_of_birth: date - """Member's date of birth (YYYY-MM-DD)""" + """Unique enrollment identifier with 'enrl\\__' prefix""" - first_name: str - """Member's legal first name""" - - last_name: str - """Member's legal last name""" - - sex: Sex + status: EnrollmentStatus """ - - `Male` - Male - - `Female` - Female - - `Other` - Other - - `Unknown` - Unknown + - `pending` - Pending + - `enrolled` - Enrolled + - `waived` - Waived + - `inactive` - Inactive """ - email: Optional[str] = None - """Email address for communications""" - - gender: Optional[str] = None - """Gender identity, if provided""" - - phone: Optional[str] = None - """Phone number""" - - suffix: Optional[str] = None - """Name suffix (e.g., Jr., Sr., III)""" + answered_at: Optional[datetime] = None + """Timestamp when the enrollment decision was made""" class Address(BaseModel): - """Nested address for employee.""" + """Employee's residential address""" + + address_line_1: str + """Primary street address""" city: str """City name""" state: str - """Two-letter state code""" - - street_1: str - """Primary street address""" - - zip_code: str - """ZIP code""" + """Two-letter state code (e.g., CA, NY)""" - country: Optional[str] = None - """Country code""" + zipcode: str + """ZIP code (5 or 9 digit)""" - street_2: Optional[str] = None - """Secondary street address""" + address_line_2: Optional[str] = None + """Secondary street address (apt, suite, etc.)""" class Employee(BaseModel): - """Serializer for Employee entity in public API responses. - - Note: Employee is in the company module but exposed via account public API. - Contains nested MemberEntity with personal identity information. - """ - id: str """Unique employee identifier with 'empl\\__' prefix""" - active_in: bool - """Whether the employee is currently active""" - created_at: datetime """Timestamp when the employee was created""" - employer_id: str - """ID of the employer this employee works for (empr\\__\\**)""" + date_of_birth: date + """Date of birth (YYYY-MM-DD)""" - member: Member - """Nested member entity containing personal identity information. + email: str + """Email address""" - Matches MemberEntity from account module domain. - """ + enrollments: List[Enrollment] + """Benefit enrollments for this employee""" + + first_name: str + """Employee's legal first name""" + + last_name: str + """Employee's legal last name""" + + member_id: str + """Unique member identifier with 'mbr\\__' prefix""" - start_date: date - """Employee's start/hire date with the employer""" + status: str + """Employee status (active or terminated)""" updated_at: datetime """Timestamp when the employee was last updated""" address: Optional[Address] = None - """Nested address for employee.""" + """Employee's residential address""" employee_class: Optional[EmployeeClass] = None """ @@ -115,5 +89,20 @@ class Employee(BaseModel): - `Individual Contractor` - Individual Contractor """ + gender: Optional[str] = None + """Gender identity, if provided""" + + hire_date: Optional[date] = None + """Employee's hire date with the employer""" + + phone: Optional[str] = None + """Phone number (10-digit US domestic string)""" + + reference_id: Optional[str] = None + """Partner-assigned reference ID for the employee""" + + suffix: Optional[str] = None + """Name suffix (e.g., Jr., Sr., III)""" + termination_date: Optional[date] = None """Employee's termination date, if terminated""" diff --git a/src/vitable_connect/types/employee_response.py b/src/vitable_connect/types/employee_response.py index 86fce93..fb41ca9 100644 --- a/src/vitable_connect/types/employee_response.py +++ b/src/vitable_connect/types/employee_response.py @@ -10,8 +10,3 @@ class EmployeeResponse(BaseModel): """Response containing a single employee resource.""" data: Employee - """Serializer for Employee entity in public API responses. - - Note: Employee is in the company module but exposed via account public API. - Contains nested MemberEntity with personal identity information. - """ diff --git a/src/vitable_connect/types/employee_update_params.py b/src/vitable_connect/types/employee_update_params.py deleted file mode 100644 index 405276c..0000000 --- a/src/vitable_connect/types/employee_update_params.py +++ /dev/null @@ -1,61 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Optional -from datetime import date -from typing_extensions import Required, Annotated, TypedDict - -from .._utils import PropertyInfo -from .employee_class import EmployeeClass - -__all__ = ["EmployeeUpdateParams", "Address"] - - -class EmployeeUpdateParams(TypedDict, total=False): - address: Optional[Address] - """Employee's residential address""" - - email: Optional[str] - """Email address""" - - employee_class: Optional[EmployeeClass] - """ - - `Full Time` - Full Time - - `Part Time` - Part Time - - `Temporary` - Temporary - - `Intern` - Intern - - `Seasonal` - Seasonal - - `Individual Contractor` - Individual Contractor - """ - - gender: Optional[str] - """Gender identity""" - - phone: Optional[str] - """Phone number""" - - termination_date: Annotated[Union[str, date, None], PropertyInfo(format="iso8601")] - """Termination date if terminating""" - - -class Address(TypedDict, total=False): - """Employee's residential address""" - - city: Required[str] - """City name""" - - state: Required[str] - """Two-letter state code""" - - street_1: Required[str] - """Primary street address""" - - zip_code: Required[str] - """ZIP code""" - - country: str - """Country code""" - - street_2: Optional[str] - """Secondary street address""" diff --git a/src/vitable_connect/types/employees/__init__.py b/src/vitable_connect/types/employees/__init__.py index 00a3af9..758110a 100644 --- a/src/vitable_connect/types/employees/__init__.py +++ b/src/vitable_connect/types/employees/__init__.py @@ -4,4 +4,3 @@ from .enrollment_list import EnrollmentList as EnrollmentList from .enrollment_list_params import EnrollmentListParams as EnrollmentListParams -from .enrollment_submit_elections_params import EnrollmentSubmitElectionsParams as EnrollmentSubmitElectionsParams diff --git a/src/vitable_connect/types/employees/enrollment_list_params.py b/src/vitable_connect/types/employees/enrollment_list_params.py index 18a612b..75fd128 100644 --- a/src/vitable_connect/types/employees/enrollment_list_params.py +++ b/src/vitable_connect/types/employees/enrollment_list_params.py @@ -4,23 +4,12 @@ from typing_extensions import TypedDict -from ..enrollment_status import EnrollmentStatus - __all__ = ["EnrollmentListParams"] class EnrollmentListParams(TypedDict, total=False): - coverage_effective_start_year: int - """Filter by coverage year""" - limit: int """Items per page (default: 20, max: 100)""" page: int """Page number (default: 1)""" - - plan_year: int - """Filter by plan year start (YYYY)""" - - status: EnrollmentStatus - """Filter by enrollment status""" diff --git a/src/vitable_connect/types/employees/enrollment_submit_elections_params.py b/src/vitable_connect/types/employees/enrollment_submit_elections_params.py deleted file mode 100644 index 163d5ba..0000000 --- a/src/vitable_connect/types/employees/enrollment_submit_elections_params.py +++ /dev/null @@ -1,44 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Iterable, Optional -from typing_extensions import Literal, Required, TypedDict - -from ..._types import SequenceNotStr -from ..coverage_tier import CoverageTier - -__all__ = ["EnrollmentSubmitElectionsParams", "Election"] - - -class EnrollmentSubmitElectionsParams(TypedDict, total=False): - elections: Required[Iterable[Election]] - """List of enrollment elections""" - - -class Election(TypedDict, total=False): - """Individual enrollment election within the batch request.""" - - coverage_tier: Required[CoverageTier] - """ - - `Unspecified` - Unspecified - - `EE` - Ee - - `ES` - Es - - `EC` - Ec - - `EF` - Ef - """ - - decision: Required[Literal["Enrolled", "Waived"]] - """ - - `Enrolled` - Enrolled - - `Waived` - Waived - """ - - enrollment_id: Required[str] - """ID of the enrollment (enrl\\__\\**)""" - - dependent_ids: Optional[SequenceNotStr[str]] - """List of dependent IDs to include in coverage (dpnd\\__\\**)""" - - selected_plan_id: Optional[str] - """ID of the selected plan (plan\\__\\**). Required if decision is 'Enrolled'""" diff --git a/src/vitable_connect/types/employer.py b/src/vitable_connect/types/employer.py index 08ff4c5..ca3439b 100644 --- a/src/vitable_connect/types/employer.py +++ b/src/vitable_connect/types/employer.py @@ -54,7 +54,7 @@ class Employer(BaseModel): name: str """Display name of the employer""" - organization_id: str + organization_id: Optional[str] = None """ID of the parent organization (org\\__\\**)""" updated_at: datetime @@ -62,3 +62,9 @@ class Employer(BaseModel): email: Optional[str] = None """Email address for billing and communications""" + + phone_number: Optional[str] = None + """Employer phone number (E.164 format recommended)""" + + reference_id: Optional[str] = None + """Partner-assigned reference ID for the employer""" diff --git a/src/vitable_connect/types/employer_create_eligibility_policy_params.py b/src/vitable_connect/types/employer_create_eligibility_policy_params.py index 41d0d59..d5cfa35 100644 --- a/src/vitable_connect/types/employer_create_eligibility_policy_params.py +++ b/src/vitable_connect/types/employer_create_eligibility_policy_params.py @@ -2,38 +2,17 @@ from __future__ import annotations -from typing import Union, Iterable, Optional -from datetime import date -from typing_extensions import Required, Annotated, TypedDict +from typing_extensions import Required, TypedDict -from .._utils import PropertyInfo - -__all__ = ["EmployerCreateEligibilityPolicyParams", "Rule"] +__all__ = ["EmployerCreateEligibilityPolicyParams"] class EmployerCreateEligibilityPolicyParams(TypedDict, total=False): - effective_date: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] - """Date when policy becomes effective""" - - name: Required[str] - """Display name for the policy""" - - rules: Required[Iterable[Rule]] - """List of eligibility rules (at least one required)""" - - policy_to_replace_id: str - """ID of existing policy to replace (epol\\__\\**)""" - - description: Optional[str] - """Detailed description""" - - -class Rule(TypedDict, total=False): - operator: Required[str] - """Comparison operator""" + classification: Required[str] + """Which employee classifications are eligible. One of: full_time, part_time, all""" - rule_type: Required[str] - """Type of eligibility rule""" + waiting_period: Required[str] + """Waiting period before eligibility. - value: Required[str] - """Value to compare against (can be string, number, boolean, or list)""" + One of: first_of_following_month, 30_days, 60_days, none + """ diff --git a/src/vitable_connect/types/employer_list_params.py b/src/vitable_connect/types/employer_list_params.py index 80f21df..888b154 100644 --- a/src/vitable_connect/types/employer_list_params.py +++ b/src/vitable_connect/types/employer_list_params.py @@ -8,14 +8,8 @@ class EmployerListParams(TypedDict, total=False): - active_in: bool - """Filter by active status""" - limit: int """Items per page (default: 20, max: 100)""" - name: str - """Filter by employer name (partial match)""" - page: int """Page number (default: 1)""" diff --git a/src/vitable_connect/types/employer_update_params.py b/src/vitable_connect/types/employer_update_params.py deleted file mode 100644 index ffd189f..0000000 --- a/src/vitable_connect/types/employer_update_params.py +++ /dev/null @@ -1,41 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Optional -from typing_extensions import Required, TypedDict - -__all__ = ["EmployerUpdateParams", "Address"] - - -class EmployerUpdateParams(TypedDict, total=False): - active: Optional[bool] - """Whether the employer is active""" - - address: Optional[Address] - """Employer address""" - - legal_name: Optional[str] - """Legal business name""" - - name: Optional[str] - """Employer display name""" - - -class Address(TypedDict, total=False): - """Employer address""" - - address_line_1: Required[str] - """Primary street address""" - - city: Required[str] - """City name""" - - state: Required[str] - """Two-letter state code""" - - zipcode: Required[str] - """ZIP code""" - - address_line_2: Optional[str] - """Secondary street address""" diff --git a/src/vitable_connect/types/employers/__init__.py b/src/vitable_connect/types/employers/__init__.py index 167310f..3a2b0c0 100644 --- a/src/vitable_connect/types/employers/__init__.py +++ b/src/vitable_connect/types/employers/__init__.py @@ -3,5 +3,4 @@ from __future__ import annotations from .employee_list_params import EmployeeListParams as EmployeeListParams -from .employee_create_params import EmployeeCreateParams as EmployeeCreateParams from .employee_list_response import EmployeeListResponse as EmployeeListResponse diff --git a/src/vitable_connect/types/employers/employee_create_params.py b/src/vitable_connect/types/employers/employee_create_params.py deleted file mode 100644 index 7ba5f58..0000000 --- a/src/vitable_connect/types/employers/employee_create_params.py +++ /dev/null @@ -1,85 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Optional -from datetime import date -from typing_extensions import Required, Annotated, TypedDict - -from ..sex import Sex -from ..._utils import PropertyInfo -from ..employee_class import EmployeeClass - -__all__ = ["EmployeeCreateParams", "Address"] - - -class EmployeeCreateParams(TypedDict, total=False): - date_of_birth: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] - """Date of birth (YYYY-MM-DD)""" - - email: Required[str] - """Email address""" - - first_name: Required[str] - """Employee's legal first name""" - - last_name: Required[str] - """Employee's legal last name""" - - sex: Required[Sex] - """ - - `Male` - Male - - `Female` - Female - - `Other` - Other - - `Unknown` - Unknown - """ - - ssn: Required[str] - """Social Security Number (XXX-XX-XXXX or XXXXXXXXX). Only accepted on create.""" - - start_date: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] - """Employment start/hire date""" - - address: Optional[Address] - """Employee's residential address""" - - employee_class: Optional[EmployeeClass] - """ - - `Full Time` - Full Time - - `Part Time` - Part Time - - `Temporary` - Temporary - - `Intern` - Intern - - `Seasonal` - Seasonal - - `Individual Contractor` - Individual Contractor - """ - - gender: Optional[str] - """Gender identity""" - - phone: Optional[str] - """Phone number""" - - suffix: Optional[str] - """Name suffix (Jr., Sr., III)""" - - -class Address(TypedDict, total=False): - """Employee's residential address""" - - city: Required[str] - """City name""" - - state: Required[str] - """Two-letter state code""" - - street_1: Required[str] - """Primary street address""" - - zip_code: Required[str] - """ZIP code""" - - country: str - """Country code""" - - street_2: Optional[str] - """Secondary street address""" diff --git a/src/vitable_connect/types/employers/employee_list_params.py b/src/vitable_connect/types/employers/employee_list_params.py index bbc0f77..058b1d0 100644 --- a/src/vitable_connect/types/employers/employee_list_params.py +++ b/src/vitable_connect/types/employers/employee_list_params.py @@ -4,18 +4,10 @@ from typing_extensions import TypedDict -from ..employee_class import EmployeeClass - __all__ = ["EmployeeListParams"] class EmployeeListParams(TypedDict, total=False): - active_in: bool - """Filter by active status""" - - employee_class: EmployeeClass - """Filter by employment classification""" - limit: int """Items per page (default: 20, max: 100)""" diff --git a/src/vitable_connect/types/enrollment.py b/src/vitable_connect/types/enrollment.py index 5cba4c1..19f8a49 100644 --- a/src/vitable_connect/types/enrollment.py +++ b/src/vitable_connect/types/enrollment.py @@ -1,64 +1,83 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import List, Optional +from typing import Optional from datetime import date, datetime from .._models import BaseModel -from .relationship import Relationship -from .coverage_tier import CoverageTier +from .category import Category +from .product_code import ProductCode from .enrollment_status import EnrollmentStatus -__all__ = ["Enrollment", "EnrolledDependent"] +__all__ = ["Enrollment", "Benefit"] -class EnrolledDependent(BaseModel): - """Dependent included in an enrollment.""" +class Benefit(BaseModel): + """Nested benefit product summary""" - dependent_id: str - """ID of the dependent (dpnd\\__\\**)""" + id: str + """Benefit product ID (bprd\\__\\**)""" - first_name: str - """Dependent's first name""" + category: Category + """ + - `Medical` - Medical + - `Dental` - Dental + - `Vision` - Vision + - `Hospital` - Hospital + """ - last_name: str - """Dependent's last name""" + name: str + """Display name of the benefit product""" - relationship: Relationship + product_code: ProductCode """ - - `Spouse` - Spouse - - `Child` - Child + - `EBA` - Eba Mec + - `VPC` - Vpc Enhanced + - `VPC_CORE` - Vpc Core + - `MEC` - Vpc Mec + - `MEC2` - Mec2 + - `MEC_PLUS` - Mec Plus + - `MVP` - Mvp + - `MVP2` - Mvp2 + - `MVPSL` - Mvpsl + - `MVPSL2` - Mvpsl2 + - `VD` - Dental + - `VV` - Vision + - `ICHRA` - Ichra + - `ICHRA_PREMIUM_PLUS` - Ichra Premium Plus + - `ICHRA_REIMBURSEMENT_ONLY` - Ichra Reimbursement Only """ class Enrollment(BaseModel): - """Serializer for Enrollment entity in public API responses. + id: str + """Unique enrollment identifier (enrl\\__\\**)""" - An Enrollment represents an employee's benefit enrollment for a specific plan year. - """ + answered_at: Optional[datetime] = None + """When the employee enrolled or waived""" - id: str - """Unique enrollment identifier with 'enrl\\__' prefix""" + benefit: Benefit + """Nested benefit product summary""" - benefit_product_id: str - """ID of the benefit product (bprd\\__\\**)""" + coverage_end: Optional[date] = None + """Coverage period end date""" - coverage_tier: CoverageTier - """ - - `Unspecified` - Unspecified - - `EE` - Ee - - `ES` - Es - - `EC` - Ec - - `EF` - Ef - """ + coverage_start: date + """Coverage period start date""" created_at: datetime - """Timestamp when the enrollment was created""" + """When the enrollment was created""" + + employee_deduction_in_cents: Optional[int] = None + """Employee monthly payroll deduction in cents""" employee_id: str - """ID of the employee (empl\\__\\**)""" + """Employee ID (empl\\__\\**)""" + + employer_contribution_in_cents: Optional[int] = None + """Employer monthly contribution in cents""" - plan_year_id: str - """ID of the plan year (plyr\\__\\**)""" + employer_id: str + """Employer ID (empr\\__\\**)""" status: EnrollmentStatus """ @@ -68,29 +87,8 @@ class Enrollment(BaseModel): - `inactive` - Inactive """ - updated_at: datetime - """Timestamp when the enrollment was last updated""" - - coverage_end_date: Optional[date] = None - """Date when coverage ends""" - - coverage_start_date: Optional[date] = None - """Date when coverage begins""" - - decision: Optional[str] = None - """Employee's election decision: 'enrolled' (accepted) or 'waived' (declined)""" - - employee_contribution_cents: Optional[int] = None - """Employee's monthly contribution in cents""" + terminated_at: Optional[datetime] = None + """When coverage was terminated""" - employer_contribution_cents: Optional[int] = None - """Employer's monthly contribution in cents""" - - enrolled_dependents: Optional[List[EnrolledDependent]] = None - """List of dependents included in this enrollment""" - - selected_plan_id: Optional[str] = None - """ID of the selected plan (plan\\__\\**), if enrolled""" - - selected_plan_name: Optional[str] = None - """Name of the selected plan""" + updated_at: datetime + """When the enrollment was last updated""" diff --git a/src/vitable_connect/types/enrollment_list_plans_response.py b/src/vitable_connect/types/enrollment_list_plans_response.py deleted file mode 100644 index b5a5013..0000000 --- a/src/vitable_connect/types/enrollment_list_plans_response.py +++ /dev/null @@ -1,77 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List, Optional - -from .._models import BaseModel -from .plan_tier import PlanTier -from .pagination import Pagination -from .coverage_tier import CoverageTier - -__all__ = ["EnrollmentListPlansResponse", "Data", "DataCost"] - - -class DataCost(BaseModel): - """Cost breakdown for a plan option.""" - - coverage_tier: CoverageTier - """ - - `Unspecified` - Unspecified - - `EE` - Ee - - `ES` - Es - - `EC` - Ec - - `EF` - Ef - """ - - employee_contribution_cents: int - """Employee's monthly contribution in cents""" - - employer_contribution_cents: int - """Employer's monthly contribution in cents""" - - total_monthly_premium_cents: int - """Total monthly premium in cents""" - - -class Data(BaseModel): - """Serializer for plan options available for enrollment selection. - - Returns plan details with cost breakdowns for each coverage tier. - """ - - id: str - """Unique plan identifier (plan\\__\\**)""" - - costs: List[DataCost] - """Cost breakdown by coverage tier""" - - name: str - """Display name of the plan""" - - carrier_name: Optional[str] = None - """Name of the carrier""" - - deductible_cents: Optional[int] = None - """Annual deductible in cents""" - - description: Optional[str] = None - """Plan description""" - - out_of_pocket_max_cents: Optional[int] = None - """Annual out-of-pocket maximum in cents""" - - tier: Optional[PlanTier] = None - """ - - `Bronze` - Bronze - - `Silver` - Silver - - `Gold` - Gold - - `Platinum` - Platinum - """ - - -class EnrollmentListPlansResponse(BaseModel): - """Paginated list response containing plan option resources.""" - - data: List[Data] - - pagination: Pagination - """Pagination metadata for list responses.""" diff --git a/src/vitable_connect/types/enrollment_reissue_params.py b/src/vitable_connect/types/enrollment_reissue_params.py deleted file mode 100644 index 3c0dc4e..0000000 --- a/src/vitable_connect/types/enrollment_reissue_params.py +++ /dev/null @@ -1,16 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Optional -from typing_extensions import Required, TypedDict - -__all__ = ["EnrollmentReissueParams"] - - -class EnrollmentReissueParams(TypedDict, total=False): - qle_id: Required[str] - """ID of the qualifying life event (qle\\__\\**)""" - - reason: Optional[str] - """Optional reason for reissue""" diff --git a/src/vitable_connect/types/enrollment_response.py b/src/vitable_connect/types/enrollment_response.py index 1e82a63..4170224 100644 --- a/src/vitable_connect/types/enrollment_response.py +++ b/src/vitable_connect/types/enrollment_response.py @@ -10,8 +10,3 @@ class EnrollmentResponse(BaseModel): """Response containing a single enrollment resource.""" data: Enrollment - """Serializer for Enrollment entity in public API responses. - - An Enrollment represents an employee's benefit enrollment for a specific plan - year. - """ diff --git a/src/vitable_connect/types/members/__init__.py b/src/vitable_connect/types/members/__init__.py index 8e2d2fe..f8ee8b1 100644 --- a/src/vitable_connect/types/members/__init__.py +++ b/src/vitable_connect/types/members/__init__.py @@ -1,14 +1,3 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. from __future__ import annotations - -from .event_type import EventType as EventType -from .dependent_list_params import DependentListParams as DependentListParams -from .qualifying_life_event import QualifyingLifeEvent as QualifyingLifeEvent -from .dependent_create_params import DependentCreateParams as DependentCreateParams -from .dependent_list_response import DependentListResponse as DependentListResponse -from .qualifying_life_event_status import QualifyingLifeEventStatus as QualifyingLifeEventStatus -from .qualifying_life_event_response import QualifyingLifeEventResponse as QualifyingLifeEventResponse -from .qualifying_life_event_list_params import QualifyingLifeEventListParams as QualifyingLifeEventListParams -from .qualifying_life_event_list_response import QualifyingLifeEventListResponse as QualifyingLifeEventListResponse -from .qualifying_life_event_record_params import QualifyingLifeEventRecordParams as QualifyingLifeEventRecordParams diff --git a/src/vitable_connect/types/members/dependent_create_params.py b/src/vitable_connect/types/members/dependent_create_params.py deleted file mode 100644 index 3684894..0000000 --- a/src/vitable_connect/types/members/dependent_create_params.py +++ /dev/null @@ -1,47 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Optional -from datetime import date -from typing_extensions import Required, Annotated, TypedDict - -from ..sex import Sex -from ..._utils import PropertyInfo -from ..relationship import Relationship - -__all__ = ["DependentCreateParams"] - - -class DependentCreateParams(TypedDict, total=False): - date_of_birth: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] - """Date of birth (YYYY-MM-DD)""" - - first_name: Required[str] - """Dependent's legal first name""" - - last_name: Required[str] - """Dependent's legal last name""" - - relationship: Required[Relationship] - """ - - `Spouse` - Spouse - - `Child` - Child - """ - - sex: Required[Sex] - """ - - `Male` - Male - - `Female` - Female - - `Other` - Other - - `Unknown` - Unknown - """ - - gender: Optional[str] - """Gender identity""" - - ssn: Optional[str] - """Social Security Number (optional, XXX-XX-XXXX or XXXXXXXXX)""" - - suffix: Optional[str] - """Name suffix (Jr., Sr., III)""" diff --git a/src/vitable_connect/types/members/dependent_list_params.py b/src/vitable_connect/types/members/dependent_list_params.py deleted file mode 100644 index d17e30b..0000000 --- a/src/vitable_connect/types/members/dependent_list_params.py +++ /dev/null @@ -1,23 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import TypedDict - -from ..relationship import Relationship - -__all__ = ["DependentListParams"] - - -class DependentListParams(TypedDict, total=False): - active_in: bool - """Filter by active status""" - - limit: int - """Items per page (default: 20, max: 100)""" - - page: int - """Page number (default: 1)""" - - relationship: Relationship - """Filter by relationship type""" diff --git a/src/vitable_connect/types/members/dependent_list_response.py b/src/vitable_connect/types/members/dependent_list_response.py deleted file mode 100644 index 501af6a..0000000 --- a/src/vitable_connect/types/members/dependent_list_response.py +++ /dev/null @@ -1,18 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List - -from ..._models import BaseModel -from ..dependent import Dependent -from ..pagination import Pagination - -__all__ = ["DependentListResponse"] - - -class DependentListResponse(BaseModel): - """Paginated list response containing dependent resources.""" - - data: List[Dependent] - - pagination: Pagination - """Pagination metadata for list responses.""" diff --git a/src/vitable_connect/types/members/event_type.py b/src/vitable_connect/types/members/event_type.py deleted file mode 100644 index 89ee83a..0000000 --- a/src/vitable_connect/types/members/event_type.py +++ /dev/null @@ -1,19 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import Literal, TypeAlias - -__all__ = ["EventType"] - -EventType: TypeAlias = Literal[ - "Marriage", - "Birth", - "Adoption", - "Divorce", - "Death", - "Job Loss", - "Reduction In Hours", - "Employer Bankruptcy", - "Medicare Entitlement", - "Termination", - "Other", -] diff --git a/src/vitable_connect/types/members/qualifying_life_event.py b/src/vitable_connect/types/members/qualifying_life_event.py deleted file mode 100644 index f534a28..0000000 --- a/src/vitable_connect/types/members/qualifying_life_event.py +++ /dev/null @@ -1,63 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Optional -from datetime import date, datetime - -from ..._models import BaseModel -from .qualifying_life_event_status import QualifyingLifeEventStatus - -__all__ = ["QualifyingLifeEvent"] - - -class QualifyingLifeEvent(BaseModel): - """Serializer for Qualifying Life Event entity in public API responses. - - QLEs are significant life changes (marriage, birth, adoption, loss of coverage) - that allow employees to modify benefit elections outside of open enrollment. - """ - - id: str - """Unique QLE identifier with 'qle\\__' prefix""" - - created_at: datetime - """Timestamp when the QLE was created""" - - employee_id: str - """ID of the employee (empl\\__\\**)""" - - enrollment_window_end: datetime - """End of the special enrollment period (typically 30-60 days from event)""" - - enrollment_window_start: datetime - """Start of the special enrollment period""" - - event_date: date - """Date when the qualifying life event occurred""" - - event_type: str - """ - Type of qualifying life event (e.g., 'marriage', 'birth', 'adoption', - 'loss_of_coverage', 'divorce') - """ - - member_id: str - """ID of the member experiencing the life event (mbr\\__\\**)""" - - status: QualifyingLifeEventStatus - """ - - `pending` - Pending - - `approved` - Approved - - `denied` - Denied - """ - - updated_at: datetime - """Timestamp when the QLE was last updated""" - - notes: Optional[str] = None - """Additional notes or comments about the QLE""" - - reviewed_at: Optional[datetime] = None - """Timestamp when the QLE was reviewed, if reviewed""" - - reviewed_by: Optional[str] = None - """ID of the user who reviewed the QLE, if reviewed""" diff --git a/src/vitable_connect/types/members/qualifying_life_event_list_params.py b/src/vitable_connect/types/members/qualifying_life_event_list_params.py deleted file mode 100644 index 6e106f4..0000000 --- a/src/vitable_connect/types/members/qualifying_life_event_list_params.py +++ /dev/null @@ -1,24 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import TypedDict - -from .event_type import EventType -from .qualifying_life_event_status import QualifyingLifeEventStatus - -__all__ = ["QualifyingLifeEventListParams"] - - -class QualifyingLifeEventListParams(TypedDict, total=False): - event_type: EventType - """Filter by QLE type""" - - limit: int - """Items per page (default: 20, max: 100)""" - - page: int - """Page number (default: 1)""" - - status: QualifyingLifeEventStatus - """Filter by QLE status""" diff --git a/src/vitable_connect/types/members/qualifying_life_event_list_response.py b/src/vitable_connect/types/members/qualifying_life_event_list_response.py deleted file mode 100644 index f7b8a5a..0000000 --- a/src/vitable_connect/types/members/qualifying_life_event_list_response.py +++ /dev/null @@ -1,18 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List - -from ..._models import BaseModel -from ..pagination import Pagination -from .qualifying_life_event import QualifyingLifeEvent - -__all__ = ["QualifyingLifeEventListResponse"] - - -class QualifyingLifeEventListResponse(BaseModel): - """Paginated list response containing qualifying life event resources.""" - - data: List[QualifyingLifeEvent] - - pagination: Pagination - """Pagination metadata for list responses.""" diff --git a/src/vitable_connect/types/members/qualifying_life_event_record_params.py b/src/vitable_connect/types/members/qualifying_life_event_record_params.py deleted file mode 100644 index 1f51a41..0000000 --- a/src/vitable_connect/types/members/qualifying_life_event_record_params.py +++ /dev/null @@ -1,35 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Optional -from datetime import date -from typing_extensions import Required, Annotated, TypedDict - -from ..._utils import PropertyInfo -from .event_type import EventType - -__all__ = ["QualifyingLifeEventRecordParams"] - - -class QualifyingLifeEventRecordParams(TypedDict, total=False): - event_date: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] - """Date when the event occurred""" - - event_type: Required[EventType] - """ - - `Marriage` - Marriage - - `Birth` - Birth - - `Adoption` - Adoption - - `Divorce` - Divorce - - `Death` - Death - - `Job Loss` - Job Loss - - `Reduction In Hours` - Reduction In Hours - - `Employer Bankruptcy` - Employer Bankruptcy - - `Medicare Entitlement` - Medicare Entitlement - - `Termination` - Termination - - `Other` - Other - """ - - notes: Optional[str] - """Optional notes about the event""" diff --git a/src/vitable_connect/types/members/qualifying_life_event_response.py b/src/vitable_connect/types/members/qualifying_life_event_response.py deleted file mode 100644 index fcb9dc2..0000000 --- a/src/vitable_connect/types/members/qualifying_life_event_response.py +++ /dev/null @@ -1,17 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from ..._models import BaseModel -from .qualifying_life_event import QualifyingLifeEvent - -__all__ = ["QualifyingLifeEventResponse"] - - -class QualifyingLifeEventResponse(BaseModel): - """Response containing a single qualifying life event resource.""" - - data: QualifyingLifeEvent - """Serializer for Qualifying Life Event entity in public API responses. - - QLEs are significant life changes (marriage, birth, adoption, loss of coverage) - that allow employees to modify benefit elections outside of open enrollment. - """ diff --git a/src/vitable_connect/types/members/qualifying_life_event_status.py b/src/vitable_connect/types/members/qualifying_life_event_status.py deleted file mode 100644 index 3773615..0000000 --- a/src/vitable_connect/types/members/qualifying_life_event_status.py +++ /dev/null @@ -1,7 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import Literal, TypeAlias - -__all__ = ["QualifyingLifeEventStatus"] - -QualifyingLifeEventStatus: TypeAlias = Literal["pending", "approved", "denied"] diff --git a/src/vitable_connect/types/plan_tier.py b/src/vitable_connect/types/plan_tier.py deleted file mode 100644 index 9fea756..0000000 --- a/src/vitable_connect/types/plan_tier.py +++ /dev/null @@ -1,7 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import Literal, TypeAlias - -__all__ = ["PlanTier"] - -PlanTier: TypeAlias = Literal["Bronze", "Silver", "Gold", "Platinum"] diff --git a/src/vitable_connect/types/plan_year_update_params.py b/src/vitable_connect/types/plan_year_update_params.py deleted file mode 100644 index 5d9fb7f..0000000 --- a/src/vitable_connect/types/plan_year_update_params.py +++ /dev/null @@ -1,48 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union, Iterable, Optional -from datetime import date -from typing_extensions import Required, Annotated, TypedDict - -from .._utils import PropertyInfo -from .coverage_tier import CoverageTier - -__all__ = ["PlanYearUpdateParams", "ContributionClass"] - - -class PlanYearUpdateParams(TypedDict, total=False): - contribution_classes: Optional[Iterable[ContributionClass]] - """Updated contribution classes""" - - open_enrollment_end: Annotated[Union[str, date, None], PropertyInfo(format="iso8601")] - """Open enrollment end date""" - - open_enrollment_start: Annotated[Union[str, date, None], PropertyInfo(format="iso8601")] - """Open enrollment start date""" - - status: Optional[str] - """Plan year status""" - - -class ContributionClass(TypedDict, total=False): - """Contribution class input for plan year update.""" - - coverage_tier: Required[CoverageTier] - """ - - `Unspecified` - Unspecified - - `EE` - Ee - - `ES` - Es - - `EC` - Ec - - `EF` - Ef - """ - - employee_contribution_cents: Required[int] - """Employee's monthly contribution in cents""" - - employer_contribution_cents: Required[int] - """Employer's monthly contribution in cents""" - - employment: Required[str] - """Employment type""" diff --git a/src/vitable_connect/types/relationship.py b/src/vitable_connect/types/relationship.py deleted file mode 100644 index 03652c6..0000000 --- a/src/vitable_connect/types/relationship.py +++ /dev/null @@ -1,7 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import Literal, TypeAlias - -__all__ = ["Relationship"] - -Relationship: TypeAlias = Literal["Spouse", "Child"] diff --git a/src/vitable_connect/types/sex.py b/src/vitable_connect/types/sex.py deleted file mode 100644 index 7945794..0000000 --- a/src/vitable_connect/types/sex.py +++ /dev/null @@ -1,7 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import Literal, TypeAlias - -__all__ = ["Sex"] - -Sex: TypeAlias = Literal["Male", "Female", "Other", "Unknown"] diff --git a/tests/api_resources/benefit_products/__init__.py b/tests/api_resources/benefit_products/__init__.py deleted file mode 100644 index fd8019a..0000000 --- a/tests/api_resources/benefit_products/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. diff --git a/tests/api_resources/benefit_products/test_plan_years.py b/tests/api_resources/benefit_products/test_plan_years.py deleted file mode 100644 index 165ae1e..0000000 --- a/tests/api_resources/benefit_products/test_plan_years.py +++ /dev/null @@ -1,372 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from tests.utils import assert_matches_type -from vitable_connect import VitableConnect, AsyncVitableConnect -from vitable_connect._utils import parse_date -from vitable_connect.types.benefit_products import ( - PlanYearResponse, - PlanYearListResponse, -) - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestPlanYears: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create(self, client: VitableConnect) -> None: - plan_year = client.benefit_products.plan_years.create( - benefit_product_id="bprd_abc123def456", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 20000, - "employer_contribution_cents": 45000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 50000, - "employer_contribution_cents": 60000, - "employment": "full_time", - }, - ], - coverage_end=parse_date("2026-12-31"), - coverage_start=parse_date("2026-01-01"), - employer_id="empr_abc123", - open_enrollment_end=parse_date("2025-11-30"), - open_enrollment_start=parse_date("2025-10-15"), - ) - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_create(self, client: VitableConnect) -> None: - response = client.benefit_products.plan_years.with_raw_response.create( - benefit_product_id="bprd_abc123def456", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 20000, - "employer_contribution_cents": 45000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 50000, - "employer_contribution_cents": 60000, - "employment": "full_time", - }, - ], - coverage_end=parse_date("2026-12-31"), - coverage_start=parse_date("2026-01-01"), - employer_id="empr_abc123", - open_enrollment_end=parse_date("2025-11-30"), - open_enrollment_start=parse_date("2025-10-15"), - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - plan_year = response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_create(self, client: VitableConnect) -> None: - with client.benefit_products.plan_years.with_streaming_response.create( - benefit_product_id="bprd_abc123def456", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 20000, - "employer_contribution_cents": 45000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 50000, - "employer_contribution_cents": 60000, - "employment": "full_time", - }, - ], - coverage_end=parse_date("2026-12-31"), - coverage_start=parse_date("2026-01-01"), - employer_id="empr_abc123", - open_enrollment_end=parse_date("2025-11-30"), - open_enrollment_start=parse_date("2025-10-15"), - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - plan_year = response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_create(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_product_id` but received ''"): - client.benefit_products.plan_years.with_raw_response.create( - benefit_product_id="", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 20000, - "employer_contribution_cents": 45000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 50000, - "employer_contribution_cents": 60000, - "employment": "full_time", - }, - ], - coverage_end=parse_date("2026-12-31"), - coverage_start=parse_date("2026-01-01"), - employer_id="empr_abc123", - open_enrollment_end=parse_date("2025-11-30"), - open_enrollment_start=parse_date("2025-10-15"), - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list(self, client: VitableConnect) -> None: - plan_year = client.benefit_products.plan_years.list( - benefit_product_id="bprd_abc123def456", - ) - assert_matches_type(PlanYearListResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list_with_all_params(self, client: VitableConnect) -> None: - plan_year = client.benefit_products.plan_years.list( - benefit_product_id="bprd_abc123def456", - employer_id="empr_abc123def456", - limit=20, - page=1, - status="draft", - ) - assert_matches_type(PlanYearListResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_list(self, client: VitableConnect) -> None: - response = client.benefit_products.plan_years.with_raw_response.list( - benefit_product_id="bprd_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - plan_year = response.parse() - assert_matches_type(PlanYearListResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_list(self, client: VitableConnect) -> None: - with client.benefit_products.plan_years.with_streaming_response.list( - benefit_product_id="bprd_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - plan_year = response.parse() - assert_matches_type(PlanYearListResponse, plan_year, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_list(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_product_id` but received ''"): - client.benefit_products.plan_years.with_raw_response.list( - benefit_product_id="", - ) - - -class TestAsyncPlanYears: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create(self, async_client: AsyncVitableConnect) -> None: - plan_year = await async_client.benefit_products.plan_years.create( - benefit_product_id="bprd_abc123def456", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 20000, - "employer_contribution_cents": 45000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 50000, - "employer_contribution_cents": 60000, - "employment": "full_time", - }, - ], - coverage_end=parse_date("2026-12-31"), - coverage_start=parse_date("2026-01-01"), - employer_id="empr_abc123", - open_enrollment_end=parse_date("2025-11-30"), - open_enrollment_start=parse_date("2025-10-15"), - ) - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_create(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.benefit_products.plan_years.with_raw_response.create( - benefit_product_id="bprd_abc123def456", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 20000, - "employer_contribution_cents": 45000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 50000, - "employer_contribution_cents": 60000, - "employment": "full_time", - }, - ], - coverage_end=parse_date("2026-12-31"), - coverage_start=parse_date("2026-01-01"), - employer_id="empr_abc123", - open_enrollment_end=parse_date("2025-11-30"), - open_enrollment_start=parse_date("2025-10-15"), - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - plan_year = await response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_create(self, async_client: AsyncVitableConnect) -> None: - async with async_client.benefit_products.plan_years.with_streaming_response.create( - benefit_product_id="bprd_abc123def456", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 20000, - "employer_contribution_cents": 45000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 50000, - "employer_contribution_cents": 60000, - "employment": "full_time", - }, - ], - coverage_end=parse_date("2026-12-31"), - coverage_start=parse_date("2026-01-01"), - employer_id="empr_abc123", - open_enrollment_end=parse_date("2025-11-30"), - open_enrollment_start=parse_date("2025-10-15"), - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - plan_year = await response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_create(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_product_id` but received ''"): - await async_client.benefit_products.plan_years.with_raw_response.create( - benefit_product_id="", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 20000, - "employer_contribution_cents": 45000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 50000, - "employer_contribution_cents": 60000, - "employment": "full_time", - }, - ], - coverage_end=parse_date("2026-12-31"), - coverage_start=parse_date("2026-01-01"), - employer_id="empr_abc123", - open_enrollment_end=parse_date("2025-11-30"), - open_enrollment_start=parse_date("2025-10-15"), - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list(self, async_client: AsyncVitableConnect) -> None: - plan_year = await async_client.benefit_products.plan_years.list( - benefit_product_id="bprd_abc123def456", - ) - assert_matches_type(PlanYearListResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list_with_all_params(self, async_client: AsyncVitableConnect) -> None: - plan_year = await async_client.benefit_products.plan_years.list( - benefit_product_id="bprd_abc123def456", - employer_id="empr_abc123def456", - limit=20, - page=1, - status="draft", - ) - assert_matches_type(PlanYearListResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_list(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.benefit_products.plan_years.with_raw_response.list( - benefit_product_id="bprd_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - plan_year = await response.parse() - assert_matches_type(PlanYearListResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_list(self, async_client: AsyncVitableConnect) -> None: - async with async_client.benefit_products.plan_years.with_streaming_response.list( - benefit_product_id="bprd_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - plan_year = await response.parse() - assert_matches_type(PlanYearListResponse, plan_year, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_list(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_product_id` but received ''"): - await async_client.benefit_products.plan_years.with_raw_response.list( - benefit_product_id="", - ) diff --git a/tests/api_resources/employees/test_enrollments.py b/tests/api_resources/employees/test_enrollments.py index 3508773..bcfd0c5 100644 --- a/tests/api_resources/employees/test_enrollments.py +++ b/tests/api_resources/employees/test_enrollments.py @@ -30,11 +30,8 @@ def test_method_list(self, client: VitableConnect) -> None: def test_method_list_with_all_params(self, client: VitableConnect) -> None: enrollment = client.employees.enrollments.list( employee_id="empl_abc123def456", - coverage_effective_start_year=2025, limit=20, page=1, - plan_year=2025, - status="pending", ) assert_matches_type(EnrollmentList, enrollment, path=["response"]) @@ -72,96 +69,6 @@ def test_path_params_list(self, client: VitableConnect) -> None: employee_id="", ) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_submit_elections(self, client: VitableConnect) -> None: - enrollment = client.employees.enrollments.submit_elections( - employee_id="empl_abc123def456", - elections=[ - { - "coverage_tier": "EF", - "decision": "Enrolled", - "enrollment_id": "enrl_pending123abc", - }, - { - "coverage_tier": "Unspecified", - "decision": "Waived", - "enrollment_id": "enrl_pending456def", - }, - ], - ) - assert_matches_type(EnrollmentList, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_submit_elections(self, client: VitableConnect) -> None: - response = client.employees.enrollments.with_raw_response.submit_elections( - employee_id="empl_abc123def456", - elections=[ - { - "coverage_tier": "EF", - "decision": "Enrolled", - "enrollment_id": "enrl_pending123abc", - }, - { - "coverage_tier": "Unspecified", - "decision": "Waived", - "enrollment_id": "enrl_pending456def", - }, - ], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - enrollment = response.parse() - assert_matches_type(EnrollmentList, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_submit_elections(self, client: VitableConnect) -> None: - with client.employees.enrollments.with_streaming_response.submit_elections( - employee_id="empl_abc123def456", - elections=[ - { - "coverage_tier": "EF", - "decision": "Enrolled", - "enrollment_id": "enrl_pending123abc", - }, - { - "coverage_tier": "Unspecified", - "decision": "Waived", - "enrollment_id": "enrl_pending456def", - }, - ], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - enrollment = response.parse() - assert_matches_type(EnrollmentList, enrollment, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_submit_elections(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employee_id` but received ''"): - client.employees.enrollments.with_raw_response.submit_elections( - employee_id="", - elections=[ - { - "coverage_tier": "EF", - "decision": "Enrolled", - "enrollment_id": "enrl_pending123abc", - }, - { - "coverage_tier": "Unspecified", - "decision": "Waived", - "enrollment_id": "enrl_pending456def", - }, - ], - ) - class TestAsyncEnrollments: parametrize = pytest.mark.parametrize( @@ -181,11 +88,8 @@ async def test_method_list(self, async_client: AsyncVitableConnect) -> None: async def test_method_list_with_all_params(self, async_client: AsyncVitableConnect) -> None: enrollment = await async_client.employees.enrollments.list( employee_id="empl_abc123def456", - coverage_effective_start_year=2025, limit=20, page=1, - plan_year=2025, - status="pending", ) assert_matches_type(EnrollmentList, enrollment, path=["response"]) @@ -222,93 +126,3 @@ async def test_path_params_list(self, async_client: AsyncVitableConnect) -> None await async_client.employees.enrollments.with_raw_response.list( employee_id="", ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_submit_elections(self, async_client: AsyncVitableConnect) -> None: - enrollment = await async_client.employees.enrollments.submit_elections( - employee_id="empl_abc123def456", - elections=[ - { - "coverage_tier": "EF", - "decision": "Enrolled", - "enrollment_id": "enrl_pending123abc", - }, - { - "coverage_tier": "Unspecified", - "decision": "Waived", - "enrollment_id": "enrl_pending456def", - }, - ], - ) - assert_matches_type(EnrollmentList, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_submit_elections(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.employees.enrollments.with_raw_response.submit_elections( - employee_id="empl_abc123def456", - elections=[ - { - "coverage_tier": "EF", - "decision": "Enrolled", - "enrollment_id": "enrl_pending123abc", - }, - { - "coverage_tier": "Unspecified", - "decision": "Waived", - "enrollment_id": "enrl_pending456def", - }, - ], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - enrollment = await response.parse() - assert_matches_type(EnrollmentList, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_submit_elections(self, async_client: AsyncVitableConnect) -> None: - async with async_client.employees.enrollments.with_streaming_response.submit_elections( - employee_id="empl_abc123def456", - elections=[ - { - "coverage_tier": "EF", - "decision": "Enrolled", - "enrollment_id": "enrl_pending123abc", - }, - { - "coverage_tier": "Unspecified", - "decision": "Waived", - "enrollment_id": "enrl_pending456def", - }, - ], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - enrollment = await response.parse() - assert_matches_type(EnrollmentList, enrollment, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_submit_elections(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employee_id` but received ''"): - await async_client.employees.enrollments.with_raw_response.submit_elections( - employee_id="", - elections=[ - { - "coverage_tier": "EF", - "decision": "Enrolled", - "enrollment_id": "enrl_pending123abc", - }, - { - "coverage_tier": "Unspecified", - "decision": "Waived", - "enrollment_id": "enrl_pending456def", - }, - ], - ) diff --git a/tests/api_resources/employers/test_employees.py b/tests/api_resources/employers/test_employees.py index dd4349c..1f0b25c 100644 --- a/tests/api_resources/employers/test_employees.py +++ b/tests/api_resources/employers/test_employees.py @@ -9,8 +9,6 @@ from tests.utils import assert_matches_type from vitable_connect import VitableConnect, AsyncVitableConnect -from vitable_connect.types import EmployeeResponse -from vitable_connect._utils import parse_date from vitable_connect.types.employers import EmployeeListResponse base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -19,103 +17,6 @@ class TestEmployees: parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create(self, client: VitableConnect) -> None: - employee = client.employers.employees.create( - employer_id="empr_abc123def456", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - ) - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create_with_all_params(self, client: VitableConnect) -> None: - employee = client.employers.employees.create( - employer_id="empr_abc123def456", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - address={ - "city": "Austin", - "state": "TX", - "street_1": "789 Pine Street", - "zip_code": "78701", - "country": "US", - "street_2": "street_2", - }, - employee_class="Full Time", - gender="gender", - phone="+1-555-222-3333", - suffix="suffix", - ) - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_create(self, client: VitableConnect) -> None: - response = client.employers.employees.with_raw_response.create( - employer_id="empr_abc123def456", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - employee = response.parse() - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_create(self, client: VitableConnect) -> None: - with client.employers.employees.with_streaming_response.create( - employer_id="empr_abc123def456", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - employee = response.parse() - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_create(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employer_id` but received ''"): - client.employers.employees.with_raw_response.create( - employer_id="", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - ) - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_list(self, client: VitableConnect) -> None: @@ -129,8 +30,6 @@ def test_method_list(self, client: VitableConnect) -> None: def test_method_list_with_all_params(self, client: VitableConnect) -> None: employee = client.employers.employees.list( employer_id="empr_abc123def456", - active_in=True, - employee_class="Full Time", limit=20, page=1, ) @@ -176,103 +75,6 @@ class TestAsyncEmployees: "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] ) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create(self, async_client: AsyncVitableConnect) -> None: - employee = await async_client.employers.employees.create( - employer_id="empr_abc123def456", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - ) - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create_with_all_params(self, async_client: AsyncVitableConnect) -> None: - employee = await async_client.employers.employees.create( - employer_id="empr_abc123def456", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - address={ - "city": "Austin", - "state": "TX", - "street_1": "789 Pine Street", - "zip_code": "78701", - "country": "US", - "street_2": "street_2", - }, - employee_class="Full Time", - gender="gender", - phone="+1-555-222-3333", - suffix="suffix", - ) - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_create(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.employers.employees.with_raw_response.create( - employer_id="empr_abc123def456", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - employee = await response.parse() - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_create(self, async_client: AsyncVitableConnect) -> None: - async with async_client.employers.employees.with_streaming_response.create( - employer_id="empr_abc123def456", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - employee = await response.parse() - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_create(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employer_id` but received ''"): - await async_client.employers.employees.with_raw_response.create( - employer_id="", - date_of_birth=parse_date("1992-08-25"), - email="michael.johnson@example.com", - first_name="Michael", - last_name="Johnson", - sex="Male", - ssn="123-45-6789", - start_date=parse_date("2024-12-01"), - ) - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_list(self, async_client: AsyncVitableConnect) -> None: @@ -286,8 +88,6 @@ async def test_method_list(self, async_client: AsyncVitableConnect) -> None: async def test_method_list_with_all_params(self, async_client: AsyncVitableConnect) -> None: employee = await async_client.employers.employees.list( employer_id="empr_abc123def456", - active_in=True, - employee_class="Full Time", limit=20, page=1, ) diff --git a/tests/api_resources/members/__init__.py b/tests/api_resources/members/__init__.py deleted file mode 100644 index fd8019a..0000000 --- a/tests/api_resources/members/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. diff --git a/tests/api_resources/members/test_dependents.py b/tests/api_resources/members/test_dependents.py deleted file mode 100644 index 0ea5bf4..0000000 --- a/tests/api_resources/members/test_dependents.py +++ /dev/null @@ -1,290 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from tests.utils import assert_matches_type -from vitable_connect import VitableConnect, AsyncVitableConnect -from vitable_connect.types import DependentResponse -from vitable_connect._utils import parse_date -from vitable_connect.types.members import DependentListResponse - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestDependents: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create(self, client: VitableConnect) -> None: - dependent = client.members.dependents.create( - member_id="mbr_abc123def456", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create_with_all_params(self, client: VitableConnect) -> None: - dependent = client.members.dependents.create( - member_id="mbr_abc123def456", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - gender="gender", - ssn="123-45-6789", - suffix="suffix", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_create(self, client: VitableConnect) -> None: - response = client.members.dependents.with_raw_response.create( - member_id="mbr_abc123def456", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - dependent = response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_create(self, client: VitableConnect) -> None: - with client.members.dependents.with_streaming_response.create( - member_id="mbr_abc123def456", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - dependent = response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_create(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - client.members.dependents.with_raw_response.create( - member_id="", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list(self, client: VitableConnect) -> None: - dependent = client.members.dependents.list( - member_id="mbr_abc123def456", - ) - assert_matches_type(DependentListResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list_with_all_params(self, client: VitableConnect) -> None: - dependent = client.members.dependents.list( - member_id="mbr_abc123def456", - active_in=True, - limit=20, - page=1, - relationship="Spouse", - ) - assert_matches_type(DependentListResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_list(self, client: VitableConnect) -> None: - response = client.members.dependents.with_raw_response.list( - member_id="mbr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - dependent = response.parse() - assert_matches_type(DependentListResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_list(self, client: VitableConnect) -> None: - with client.members.dependents.with_streaming_response.list( - member_id="mbr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - dependent = response.parse() - assert_matches_type(DependentListResponse, dependent, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_list(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - client.members.dependents.with_raw_response.list( - member_id="", - ) - - -class TestAsyncDependents: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create(self, async_client: AsyncVitableConnect) -> None: - dependent = await async_client.members.dependents.create( - member_id="mbr_abc123def456", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create_with_all_params(self, async_client: AsyncVitableConnect) -> None: - dependent = await async_client.members.dependents.create( - member_id="mbr_abc123def456", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - gender="gender", - ssn="123-45-6789", - suffix="suffix", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_create(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.members.dependents.with_raw_response.create( - member_id="mbr_abc123def456", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - dependent = await response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_create(self, async_client: AsyncVitableConnect) -> None: - async with async_client.members.dependents.with_streaming_response.create( - member_id="mbr_abc123def456", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - dependent = await response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_create(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - await async_client.members.dependents.with_raw_response.create( - member_id="", - date_of_birth=parse_date("2020-05-15"), - first_name="Emily", - last_name="Doe", - relationship="Child", - sex="Female", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list(self, async_client: AsyncVitableConnect) -> None: - dependent = await async_client.members.dependents.list( - member_id="mbr_abc123def456", - ) - assert_matches_type(DependentListResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list_with_all_params(self, async_client: AsyncVitableConnect) -> None: - dependent = await async_client.members.dependents.list( - member_id="mbr_abc123def456", - active_in=True, - limit=20, - page=1, - relationship="Spouse", - ) - assert_matches_type(DependentListResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_list(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.members.dependents.with_raw_response.list( - member_id="mbr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - dependent = await response.parse() - assert_matches_type(DependentListResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_list(self, async_client: AsyncVitableConnect) -> None: - async with async_client.members.dependents.with_streaming_response.list( - member_id="mbr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - dependent = await response.parse() - assert_matches_type(DependentListResponse, dependent, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_list(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - await async_client.members.dependents.with_raw_response.list( - member_id="", - ) diff --git a/tests/api_resources/members/test_qualifying_life_events.py b/tests/api_resources/members/test_qualifying_life_events.py deleted file mode 100644 index 9917b00..0000000 --- a/tests/api_resources/members/test_qualifying_life_events.py +++ /dev/null @@ -1,362 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from tests.utils import assert_matches_type -from vitable_connect import VitableConnect, AsyncVitableConnect -from vitable_connect._utils import parse_date -from vitable_connect.types.members import ( - QualifyingLifeEventResponse, - QualifyingLifeEventListResponse, -) - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestQualifyingLifeEvents: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_retrieve(self, client: VitableConnect) -> None: - qualifying_life_event = client.members.qualifying_life_events.retrieve( - qle_id="qle_abc123def456", - member_id="mbr_abc123def456", - ) - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_retrieve(self, client: VitableConnect) -> None: - response = client.members.qualifying_life_events.with_raw_response.retrieve( - qle_id="qle_abc123def456", - member_id="mbr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - qualifying_life_event = response.parse() - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_retrieve(self, client: VitableConnect) -> None: - with client.members.qualifying_life_events.with_streaming_response.retrieve( - qle_id="qle_abc123def456", - member_id="mbr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - qualifying_life_event = response.parse() - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_retrieve(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - client.members.qualifying_life_events.with_raw_response.retrieve( - qle_id="qle_abc123def456", - member_id="", - ) - - with pytest.raises(ValueError, match=r"Expected a non-empty value for `qle_id` but received ''"): - client.members.qualifying_life_events.with_raw_response.retrieve( - qle_id="", - member_id="mbr_abc123def456", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list(self, client: VitableConnect) -> None: - qualifying_life_event = client.members.qualifying_life_events.list( - member_id="mbr_abc123def456", - ) - assert_matches_type(QualifyingLifeEventListResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list_with_all_params(self, client: VitableConnect) -> None: - qualifying_life_event = client.members.qualifying_life_events.list( - member_id="mbr_abc123def456", - event_type="Marriage", - limit=20, - page=1, - status="pending", - ) - assert_matches_type(QualifyingLifeEventListResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_list(self, client: VitableConnect) -> None: - response = client.members.qualifying_life_events.with_raw_response.list( - member_id="mbr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - qualifying_life_event = response.parse() - assert_matches_type(QualifyingLifeEventListResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_list(self, client: VitableConnect) -> None: - with client.members.qualifying_life_events.with_streaming_response.list( - member_id="mbr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - qualifying_life_event = response.parse() - assert_matches_type(QualifyingLifeEventListResponse, qualifying_life_event, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_list(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - client.members.qualifying_life_events.with_raw_response.list( - member_id="", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_record(self, client: VitableConnect) -> None: - qualifying_life_event = client.members.qualifying_life_events.record( - member_id="mbr_abc123def456", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - ) - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_record_with_all_params(self, client: VitableConnect) -> None: - qualifying_life_event = client.members.qualifying_life_events.record( - member_id="mbr_abc123def456", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - notes="Employee got married, adding spouse to coverage", - ) - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_record(self, client: VitableConnect) -> None: - response = client.members.qualifying_life_events.with_raw_response.record( - member_id="mbr_abc123def456", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - qualifying_life_event = response.parse() - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_record(self, client: VitableConnect) -> None: - with client.members.qualifying_life_events.with_streaming_response.record( - member_id="mbr_abc123def456", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - qualifying_life_event = response.parse() - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_record(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - client.members.qualifying_life_events.with_raw_response.record( - member_id="", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - ) - - -class TestAsyncQualifyingLifeEvents: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_retrieve(self, async_client: AsyncVitableConnect) -> None: - qualifying_life_event = await async_client.members.qualifying_life_events.retrieve( - qle_id="qle_abc123def456", - member_id="mbr_abc123def456", - ) - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_retrieve(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.members.qualifying_life_events.with_raw_response.retrieve( - qle_id="qle_abc123def456", - member_id="mbr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - qualifying_life_event = await response.parse() - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_retrieve(self, async_client: AsyncVitableConnect) -> None: - async with async_client.members.qualifying_life_events.with_streaming_response.retrieve( - qle_id="qle_abc123def456", - member_id="mbr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - qualifying_life_event = await response.parse() - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_retrieve(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - await async_client.members.qualifying_life_events.with_raw_response.retrieve( - qle_id="qle_abc123def456", - member_id="", - ) - - with pytest.raises(ValueError, match=r"Expected a non-empty value for `qle_id` but received ''"): - await async_client.members.qualifying_life_events.with_raw_response.retrieve( - qle_id="", - member_id="mbr_abc123def456", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list(self, async_client: AsyncVitableConnect) -> None: - qualifying_life_event = await async_client.members.qualifying_life_events.list( - member_id="mbr_abc123def456", - ) - assert_matches_type(QualifyingLifeEventListResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list_with_all_params(self, async_client: AsyncVitableConnect) -> None: - qualifying_life_event = await async_client.members.qualifying_life_events.list( - member_id="mbr_abc123def456", - event_type="Marriage", - limit=20, - page=1, - status="pending", - ) - assert_matches_type(QualifyingLifeEventListResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_list(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.members.qualifying_life_events.with_raw_response.list( - member_id="mbr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - qualifying_life_event = await response.parse() - assert_matches_type(QualifyingLifeEventListResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_list(self, async_client: AsyncVitableConnect) -> None: - async with async_client.members.qualifying_life_events.with_streaming_response.list( - member_id="mbr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - qualifying_life_event = await response.parse() - assert_matches_type(QualifyingLifeEventListResponse, qualifying_life_event, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_list(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - await async_client.members.qualifying_life_events.with_raw_response.list( - member_id="", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_record(self, async_client: AsyncVitableConnect) -> None: - qualifying_life_event = await async_client.members.qualifying_life_events.record( - member_id="mbr_abc123def456", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - ) - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_record_with_all_params(self, async_client: AsyncVitableConnect) -> None: - qualifying_life_event = await async_client.members.qualifying_life_events.record( - member_id="mbr_abc123def456", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - notes="Employee got married, adding spouse to coverage", - ) - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_record(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.members.qualifying_life_events.with_raw_response.record( - member_id="mbr_abc123def456", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - qualifying_life_event = await response.parse() - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_record(self, async_client: AsyncVitableConnect) -> None: - async with async_client.members.qualifying_life_events.with_streaming_response.record( - member_id="mbr_abc123def456", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - qualifying_life_event = await response.parse() - assert_matches_type(QualifyingLifeEventResponse, qualifying_life_event, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_record(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `member_id` but received ''"): - await async_client.members.qualifying_life_events.with_raw_response.record( - member_id="", - event_date=parse_date("2024-11-15"), - event_type="Marriage", - ) diff --git a/tests/api_resources/test_benefit_products.py b/tests/api_resources/test_benefit_products.py deleted file mode 100644 index 9d2aff4..0000000 --- a/tests/api_resources/test_benefit_products.py +++ /dev/null @@ -1,104 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from tests.utils import assert_matches_type -from vitable_connect import VitableConnect, AsyncVitableConnect -from vitable_connect.types import BenefitProductListResponse - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestBenefitProducts: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list(self, client: VitableConnect) -> None: - benefit_product = client.benefit_products.list() - assert_matches_type(BenefitProductListResponse, benefit_product, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list_with_all_params(self, client: VitableConnect) -> None: - benefit_product = client.benefit_products.list( - active_in=True, - category="Medical", - limit=20, - page=1, - product_code="EBA", - ) - assert_matches_type(BenefitProductListResponse, benefit_product, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_list(self, client: VitableConnect) -> None: - response = client.benefit_products.with_raw_response.list() - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - benefit_product = response.parse() - assert_matches_type(BenefitProductListResponse, benefit_product, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_list(self, client: VitableConnect) -> None: - with client.benefit_products.with_streaming_response.list() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - benefit_product = response.parse() - assert_matches_type(BenefitProductListResponse, benefit_product, path=["response"]) - - assert cast(Any, response.is_closed) is True - - -class TestAsyncBenefitProducts: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list(self, async_client: AsyncVitableConnect) -> None: - benefit_product = await async_client.benefit_products.list() - assert_matches_type(BenefitProductListResponse, benefit_product, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list_with_all_params(self, async_client: AsyncVitableConnect) -> None: - benefit_product = await async_client.benefit_products.list( - active_in=True, - category="Medical", - limit=20, - page=1, - product_code="EBA", - ) - assert_matches_type(BenefitProductListResponse, benefit_product, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_list(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.benefit_products.with_raw_response.list() - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - benefit_product = await response.parse() - assert_matches_type(BenefitProductListResponse, benefit_product, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_list(self, async_client: AsyncVitableConnect) -> None: - async with async_client.benefit_products.with_streaming_response.list() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - benefit_product = await response.parse() - assert_matches_type(BenefitProductListResponse, benefit_product, path=["response"]) - - assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/test_dependents.py b/tests/api_resources/test_dependents.py deleted file mode 100644 index d573545..0000000 --- a/tests/api_resources/test_dependents.py +++ /dev/null @@ -1,214 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from tests.utils import assert_matches_type -from vitable_connect import VitableConnect, AsyncVitableConnect -from vitable_connect.types import DependentResponse - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestDependents: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_retrieve(self, client: VitableConnect) -> None: - dependent = client.dependents.retrieve( - "dpnd_abc123def456", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_retrieve(self, client: VitableConnect) -> None: - response = client.dependents.with_raw_response.retrieve( - "dpnd_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - dependent = response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_retrieve(self, client: VitableConnect) -> None: - with client.dependents.with_streaming_response.retrieve( - "dpnd_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - dependent = response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_retrieve(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `dependent_id` but received ''"): - client.dependents.with_raw_response.retrieve( - "", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_update(self, client: VitableConnect) -> None: - dependent = client.dependents.update( - dependent_id="dpnd_abc123def456", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_update_with_all_params(self, client: VitableConnect) -> None: - dependent = client.dependents.update( - dependent_id="dpnd_abc123def456", - active=True, - gender="gender", - relationship="Spouse", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_update(self, client: VitableConnect) -> None: - response = client.dependents.with_raw_response.update( - dependent_id="dpnd_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - dependent = response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_update(self, client: VitableConnect) -> None: - with client.dependents.with_streaming_response.update( - dependent_id="dpnd_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - dependent = response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_update(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `dependent_id` but received ''"): - client.dependents.with_raw_response.update( - dependent_id="", - ) - - -class TestAsyncDependents: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_retrieve(self, async_client: AsyncVitableConnect) -> None: - dependent = await async_client.dependents.retrieve( - "dpnd_abc123def456", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_retrieve(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.dependents.with_raw_response.retrieve( - "dpnd_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - dependent = await response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_retrieve(self, async_client: AsyncVitableConnect) -> None: - async with async_client.dependents.with_streaming_response.retrieve( - "dpnd_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - dependent = await response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_retrieve(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `dependent_id` but received ''"): - await async_client.dependents.with_raw_response.retrieve( - "", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_update(self, async_client: AsyncVitableConnect) -> None: - dependent = await async_client.dependents.update( - dependent_id="dpnd_abc123def456", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_update_with_all_params(self, async_client: AsyncVitableConnect) -> None: - dependent = await async_client.dependents.update( - dependent_id="dpnd_abc123def456", - active=True, - gender="gender", - relationship="Spouse", - ) - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_update(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.dependents.with_raw_response.update( - dependent_id="dpnd_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - dependent = await response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_update(self, async_client: AsyncVitableConnect) -> None: - async with async_client.dependents.with_streaming_response.update( - dependent_id="dpnd_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - dependent = await response.parse() - assert_matches_type(DependentResponse, dependent, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_update(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `dependent_id` but received ''"): - await async_client.dependents.with_raw_response.update( - dependent_id="", - ) diff --git a/tests/api_resources/test_employees.py b/tests/api_resources/test_employees.py index df5fe1e..d44932d 100644 --- a/tests/api_resources/test_employees.py +++ b/tests/api_resources/test_employees.py @@ -10,7 +10,6 @@ from tests.utils import assert_matches_type from vitable_connect import VitableConnect, AsyncVitableConnect from vitable_connect.types import EmployeeResponse -from vitable_connect._utils import parse_date base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -60,111 +59,6 @@ def test_path_params_retrieve(self, client: VitableConnect) -> None: "", ) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_update(self, client: VitableConnect) -> None: - employee = client.employees.update( - employee_id="empl_abc123def456", - ) - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_update_with_all_params(self, client: VitableConnect) -> None: - employee = client.employees.update( - employee_id="empl_abc123def456", - address={ - "city": "Los Angeles", - "state": "CA", - "street_1": "123 New Street", - "zip_code": "90001", - "country": "US", - "street_2": "street_2", - }, - email="john.doe.updated@example.com", - employee_class="Part Time", - gender="gender", - phone="+1-555-999-8888", - termination_date=parse_date("2019-12-27"), - ) - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_update(self, client: VitableConnect) -> None: - response = client.employees.with_raw_response.update( - employee_id="empl_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - employee = response.parse() - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_update(self, client: VitableConnect) -> None: - with client.employees.with_streaming_response.update( - employee_id="empl_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - employee = response.parse() - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_update(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employee_id` but received ''"): - client.employees.with_raw_response.update( - employee_id="", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_terminate(self, client: VitableConnect) -> None: - employee = client.employees.terminate( - "empl_abc123def456", - ) - assert employee is None - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_terminate(self, client: VitableConnect) -> None: - response = client.employees.with_raw_response.terminate( - "empl_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - employee = response.parse() - assert employee is None - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_terminate(self, client: VitableConnect) -> None: - with client.employees.with_streaming_response.terminate( - "empl_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - employee = response.parse() - assert employee is None - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_terminate(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employee_id` but received ''"): - client.employees.with_raw_response.terminate( - "", - ) - class TestAsyncEmployees: parametrize = pytest.mark.parametrize( @@ -212,108 +106,3 @@ async def test_path_params_retrieve(self, async_client: AsyncVitableConnect) -> await async_client.employees.with_raw_response.retrieve( "", ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_update(self, async_client: AsyncVitableConnect) -> None: - employee = await async_client.employees.update( - employee_id="empl_abc123def456", - ) - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_update_with_all_params(self, async_client: AsyncVitableConnect) -> None: - employee = await async_client.employees.update( - employee_id="empl_abc123def456", - address={ - "city": "Los Angeles", - "state": "CA", - "street_1": "123 New Street", - "zip_code": "90001", - "country": "US", - "street_2": "street_2", - }, - email="john.doe.updated@example.com", - employee_class="Part Time", - gender="gender", - phone="+1-555-999-8888", - termination_date=parse_date("2019-12-27"), - ) - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_update(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.employees.with_raw_response.update( - employee_id="empl_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - employee = await response.parse() - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_update(self, async_client: AsyncVitableConnect) -> None: - async with async_client.employees.with_streaming_response.update( - employee_id="empl_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - employee = await response.parse() - assert_matches_type(EmployeeResponse, employee, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_update(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employee_id` but received ''"): - await async_client.employees.with_raw_response.update( - employee_id="", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_terminate(self, async_client: AsyncVitableConnect) -> None: - employee = await async_client.employees.terminate( - "empl_abc123def456", - ) - assert employee is None - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_terminate(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.employees.with_raw_response.terminate( - "empl_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - employee = await response.parse() - assert employee is None - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_terminate(self, async_client: AsyncVitableConnect) -> None: - async with async_client.employees.with_streaming_response.terminate( - "empl_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - employee = await response.parse() - assert employee is None - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_terminate(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employee_id` but received ''"): - await async_client.employees.with_raw_response.terminate( - "", - ) diff --git a/tests/api_resources/test_employers.py b/tests/api_resources/test_employers.py index 8dbe731..c501c34 100644 --- a/tests/api_resources/test_employers.py +++ b/tests/api_resources/test_employers.py @@ -14,7 +14,6 @@ EmployerListResponse, BenefitEligibilityPolicy, ) -from vitable_connect._utils import parse_date base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -143,66 +142,6 @@ def test_path_params_retrieve(self, client: VitableConnect) -> None: "", ) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_update(self, client: VitableConnect) -> None: - employer = client.employers.update( - employer_id="empr_abc123def456", - ) - assert_matches_type(EmployerResponse, employer, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_update_with_all_params(self, client: VitableConnect) -> None: - employer = client.employers.update( - employer_id="empr_abc123def456", - active=True, - address={ - "address_line_1": "456 New Address Ave", - "city": "San Francisco", - "state": "CA", - "zipcode": "94103", - "address_line_2": "Suite 200", - }, - legal_name="x", - name="Acme Corp (Updated)", - ) - assert_matches_type(EmployerResponse, employer, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_update(self, client: VitableConnect) -> None: - response = client.employers.with_raw_response.update( - employer_id="empr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - employer = response.parse() - assert_matches_type(EmployerResponse, employer, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_update(self, client: VitableConnect) -> None: - with client.employers.with_streaming_response.update( - employer_id="empr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - employer = response.parse() - assert_matches_type(EmployerResponse, employer, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_update(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employer_id` but received ''"): - client.employers.with_raw_response.update( - employer_id="", - ) - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_list(self, client: VitableConnect) -> None: @@ -213,9 +152,7 @@ def test_method_list(self, client: VitableConnect) -> None: @parametrize def test_method_list_with_all_params(self, client: VitableConnect) -> None: employer = client.employers.list( - active_in=True, limit=20, - name="Acme", page=1, ) assert_matches_type(EmployerListResponse, employer, path=["response"]) @@ -247,44 +184,8 @@ def test_streaming_response_list(self, client: VitableConnect) -> None: def test_method_create_eligibility_policy(self, client: VitableConnect) -> None: employer = client.employers.create_eligibility_policy( employer_id="empr_abc123def456", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], - ) - assert_matches_type(BenefitEligibilityPolicy, employer, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create_eligibility_policy_with_all_params(self, client: VitableConnect) -> None: - employer = client.employers.create_eligibility_policy( - employer_id="empr_abc123def456", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], - policy_to_replace_id="epol_abc123def456", - description="Eligibility policy for full-time employees working 30+ hours per week", + classification="classification", + waiting_period="waiting_period", ) assert_matches_type(BenefitEligibilityPolicy, employer, path=["response"]) @@ -293,20 +194,8 @@ def test_method_create_eligibility_policy_with_all_params(self, client: VitableC def test_raw_response_create_eligibility_policy(self, client: VitableConnect) -> None: response = client.employers.with_raw_response.create_eligibility_policy( employer_id="empr_abc123def456", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], + classification="classification", + waiting_period="waiting_period", ) assert response.is_closed is True @@ -319,20 +208,8 @@ def test_raw_response_create_eligibility_policy(self, client: VitableConnect) -> def test_streaming_response_create_eligibility_policy(self, client: VitableConnect) -> None: with client.employers.with_streaming_response.create_eligibility_policy( employer_id="empr_abc123def456", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], + classification="classification", + waiting_period="waiting_period", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -348,20 +225,8 @@ def test_path_params_create_eligibility_policy(self, client: VitableConnect) -> with pytest.raises(ValueError, match=r"Expected a non-empty value for `employer_id` but received ''"): client.employers.with_raw_response.create_eligibility_policy( employer_id="", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], + classification="classification", + waiting_period="waiting_period", ) @@ -491,66 +356,6 @@ async def test_path_params_retrieve(self, async_client: AsyncVitableConnect) -> "", ) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_update(self, async_client: AsyncVitableConnect) -> None: - employer = await async_client.employers.update( - employer_id="empr_abc123def456", - ) - assert_matches_type(EmployerResponse, employer, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_update_with_all_params(self, async_client: AsyncVitableConnect) -> None: - employer = await async_client.employers.update( - employer_id="empr_abc123def456", - active=True, - address={ - "address_line_1": "456 New Address Ave", - "city": "San Francisco", - "state": "CA", - "zipcode": "94103", - "address_line_2": "Suite 200", - }, - legal_name="x", - name="Acme Corp (Updated)", - ) - assert_matches_type(EmployerResponse, employer, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_update(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.employers.with_raw_response.update( - employer_id="empr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - employer = await response.parse() - assert_matches_type(EmployerResponse, employer, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_update(self, async_client: AsyncVitableConnect) -> None: - async with async_client.employers.with_streaming_response.update( - employer_id="empr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - employer = await response.parse() - assert_matches_type(EmployerResponse, employer, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_update(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `employer_id` but received ''"): - await async_client.employers.with_raw_response.update( - employer_id="", - ) - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_list(self, async_client: AsyncVitableConnect) -> None: @@ -561,9 +366,7 @@ async def test_method_list(self, async_client: AsyncVitableConnect) -> None: @parametrize async def test_method_list_with_all_params(self, async_client: AsyncVitableConnect) -> None: employer = await async_client.employers.list( - active_in=True, limit=20, - name="Acme", page=1, ) assert_matches_type(EmployerListResponse, employer, path=["response"]) @@ -595,44 +398,8 @@ async def test_streaming_response_list(self, async_client: AsyncVitableConnect) async def test_method_create_eligibility_policy(self, async_client: AsyncVitableConnect) -> None: employer = await async_client.employers.create_eligibility_policy( employer_id="empr_abc123def456", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], - ) - assert_matches_type(BenefitEligibilityPolicy, employer, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create_eligibility_policy_with_all_params(self, async_client: AsyncVitableConnect) -> None: - employer = await async_client.employers.create_eligibility_policy( - employer_id="empr_abc123def456", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], - policy_to_replace_id="epol_abc123def456", - description="Eligibility policy for full-time employees working 30+ hours per week", + classification="classification", + waiting_period="waiting_period", ) assert_matches_type(BenefitEligibilityPolicy, employer, path=["response"]) @@ -641,20 +408,8 @@ async def test_method_create_eligibility_policy_with_all_params(self, async_clie async def test_raw_response_create_eligibility_policy(self, async_client: AsyncVitableConnect) -> None: response = await async_client.employers.with_raw_response.create_eligibility_policy( employer_id="empr_abc123def456", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], + classification="classification", + waiting_period="waiting_period", ) assert response.is_closed is True @@ -667,20 +422,8 @@ async def test_raw_response_create_eligibility_policy(self, async_client: AsyncV async def test_streaming_response_create_eligibility_policy(self, async_client: AsyncVitableConnect) -> None: async with async_client.employers.with_streaming_response.create_eligibility_policy( employer_id="empr_abc123def456", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], + classification="classification", + waiting_period="waiting_period", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -696,18 +439,6 @@ async def test_path_params_create_eligibility_policy(self, async_client: AsyncVi with pytest.raises(ValueError, match=r"Expected a non-empty value for `employer_id` but received ''"): await async_client.employers.with_raw_response.create_eligibility_policy( employer_id="", - effective_date=parse_date("2025-01-01"), - name="Standard Full-Time Eligibility", - rules=[ - { - "operator": "in", - "rule_type": "employment_status", - "value": "full_time,part_time_30_plus", - }, - { - "operator": "greater_than_or_equal", - "rule_type": "waiting_period_days", - "value": "30", - }, - ], + classification="classification", + waiting_period="waiting_period", ) diff --git a/tests/api_resources/test_enrollments.py b/tests/api_resources/test_enrollments.py index ba4eac6..06a7c57 100644 --- a/tests/api_resources/test_enrollments.py +++ b/tests/api_resources/test_enrollments.py @@ -9,7 +9,7 @@ from tests.utils import assert_matches_type from vitable_connect import VitableConnect, AsyncVitableConnect -from vitable_connect.types import EnrollmentResponse, EnrollmentListPlansResponse +from vitable_connect.types import EnrollmentResponse base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -59,104 +59,6 @@ def test_path_params_retrieve(self, client: VitableConnect) -> None: "", ) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list_plans(self, client: VitableConnect) -> None: - enrollment = client.enrollments.list_plans( - "enrl_abc123def456", - ) - assert_matches_type(EnrollmentListPlansResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_list_plans(self, client: VitableConnect) -> None: - response = client.enrollments.with_raw_response.list_plans( - "enrl_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - enrollment = response.parse() - assert_matches_type(EnrollmentListPlansResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_list_plans(self, client: VitableConnect) -> None: - with client.enrollments.with_streaming_response.list_plans( - "enrl_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - enrollment = response.parse() - assert_matches_type(EnrollmentListPlansResponse, enrollment, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_list_plans(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `enrollment_id` but received ''"): - client.enrollments.with_raw_response.list_plans( - "", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_reissue(self, client: VitableConnect) -> None: - enrollment = client.enrollments.reissue( - enrollment_id="enrl_abc123def456", - qle_id="qle_marriage123abc", - ) - assert_matches_type(EnrollmentResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_reissue_with_all_params(self, client: VitableConnect) -> None: - enrollment = client.enrollments.reissue( - enrollment_id="enrl_abc123def456", - qle_id="qle_marriage123abc", - reason="reason", - ) - assert_matches_type(EnrollmentResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_reissue(self, client: VitableConnect) -> None: - response = client.enrollments.with_raw_response.reissue( - enrollment_id="enrl_abc123def456", - qle_id="qle_marriage123abc", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - enrollment = response.parse() - assert_matches_type(EnrollmentResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_reissue(self, client: VitableConnect) -> None: - with client.enrollments.with_streaming_response.reissue( - enrollment_id="enrl_abc123def456", - qle_id="qle_marriage123abc", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - enrollment = response.parse() - assert_matches_type(EnrollmentResponse, enrollment, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_reissue(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `enrollment_id` but received ''"): - client.enrollments.with_raw_response.reissue( - enrollment_id="", - qle_id="qle_marriage123abc", - ) - class TestAsyncEnrollments: parametrize = pytest.mark.parametrize( @@ -204,101 +106,3 @@ async def test_path_params_retrieve(self, async_client: AsyncVitableConnect) -> await async_client.enrollments.with_raw_response.retrieve( "", ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list_plans(self, async_client: AsyncVitableConnect) -> None: - enrollment = await async_client.enrollments.list_plans( - "enrl_abc123def456", - ) - assert_matches_type(EnrollmentListPlansResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_list_plans(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.enrollments.with_raw_response.list_plans( - "enrl_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - enrollment = await response.parse() - assert_matches_type(EnrollmentListPlansResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_list_plans(self, async_client: AsyncVitableConnect) -> None: - async with async_client.enrollments.with_streaming_response.list_plans( - "enrl_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - enrollment = await response.parse() - assert_matches_type(EnrollmentListPlansResponse, enrollment, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_list_plans(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `enrollment_id` but received ''"): - await async_client.enrollments.with_raw_response.list_plans( - "", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_reissue(self, async_client: AsyncVitableConnect) -> None: - enrollment = await async_client.enrollments.reissue( - enrollment_id="enrl_abc123def456", - qle_id="qle_marriage123abc", - ) - assert_matches_type(EnrollmentResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_reissue_with_all_params(self, async_client: AsyncVitableConnect) -> None: - enrollment = await async_client.enrollments.reissue( - enrollment_id="enrl_abc123def456", - qle_id="qle_marriage123abc", - reason="reason", - ) - assert_matches_type(EnrollmentResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_reissue(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.enrollments.with_raw_response.reissue( - enrollment_id="enrl_abc123def456", - qle_id="qle_marriage123abc", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - enrollment = await response.parse() - assert_matches_type(EnrollmentResponse, enrollment, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_reissue(self, async_client: AsyncVitableConnect) -> None: - async with async_client.enrollments.with_streaming_response.reissue( - enrollment_id="enrl_abc123def456", - qle_id="qle_marriage123abc", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - enrollment = await response.parse() - assert_matches_type(EnrollmentResponse, enrollment, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_reissue(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `enrollment_id` but received ''"): - await async_client.enrollments.with_raw_response.reissue( - enrollment_id="", - qle_id="qle_marriage123abc", - ) diff --git a/tests/api_resources/test_plan_years.py b/tests/api_resources/test_plan_years.py deleted file mode 100644 index f68c79b..0000000 --- a/tests/api_resources/test_plan_years.py +++ /dev/null @@ -1,243 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from tests.utils import assert_matches_type -from vitable_connect import VitableConnect, AsyncVitableConnect -from vitable_connect._utils import parse_date -from vitable_connect.types.benefit_products import PlanYearResponse - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestPlanYears: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_retrieve(self, client: VitableConnect) -> None: - plan_year = client.plan_years.retrieve( - "plyr_abc123def456", - ) - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_retrieve(self, client: VitableConnect) -> None: - response = client.plan_years.with_raw_response.retrieve( - "plyr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - plan_year = response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_retrieve(self, client: VitableConnect) -> None: - with client.plan_years.with_streaming_response.retrieve( - "plyr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - plan_year = response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_retrieve(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `plan_year_id` but received ''"): - client.plan_years.with_raw_response.retrieve( - "", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_update(self, client: VitableConnect) -> None: - plan_year = client.plan_years.update( - plan_year_id="plyr_abc123def456", - ) - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_update_with_all_params(self, client: VitableConnect) -> None: - plan_year = client.plan_years.update( - plan_year_id="plyr_abc123def456", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 18000, - "employer_contribution_cents": 47000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 48000, - "employer_contribution_cents": 62000, - "employment": "full_time", - }, - ], - open_enrollment_end=parse_date("2024-11-15"), - open_enrollment_start=parse_date("2024-10-01"), - status="active", - ) - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_update(self, client: VitableConnect) -> None: - response = client.plan_years.with_raw_response.update( - plan_year_id="plyr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - plan_year = response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_update(self, client: VitableConnect) -> None: - with client.plan_years.with_streaming_response.update( - plan_year_id="plyr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - plan_year = response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_update(self, client: VitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `plan_year_id` but received ''"): - client.plan_years.with_raw_response.update( - plan_year_id="", - ) - - -class TestAsyncPlanYears: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_retrieve(self, async_client: AsyncVitableConnect) -> None: - plan_year = await async_client.plan_years.retrieve( - "plyr_abc123def456", - ) - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_retrieve(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.plan_years.with_raw_response.retrieve( - "plyr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - plan_year = await response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_retrieve(self, async_client: AsyncVitableConnect) -> None: - async with async_client.plan_years.with_streaming_response.retrieve( - "plyr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - plan_year = await response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_retrieve(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `plan_year_id` but received ''"): - await async_client.plan_years.with_raw_response.retrieve( - "", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_update(self, async_client: AsyncVitableConnect) -> None: - plan_year = await async_client.plan_years.update( - plan_year_id="plyr_abc123def456", - ) - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_update_with_all_params(self, async_client: AsyncVitableConnect) -> None: - plan_year = await async_client.plan_years.update( - plan_year_id="plyr_abc123def456", - contribution_classes=[ - { - "coverage_tier": "EE", - "employee_contribution_cents": 18000, - "employer_contribution_cents": 47000, - "employment": "full_time", - }, - { - "coverage_tier": "EF", - "employee_contribution_cents": 48000, - "employer_contribution_cents": 62000, - "employment": "full_time", - }, - ], - open_enrollment_end=parse_date("2024-11-15"), - open_enrollment_start=parse_date("2024-10-01"), - status="active", - ) - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_update(self, async_client: AsyncVitableConnect) -> None: - response = await async_client.plan_years.with_raw_response.update( - plan_year_id="plyr_abc123def456", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - plan_year = await response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_update(self, async_client: AsyncVitableConnect) -> None: - async with async_client.plan_years.with_streaming_response.update( - plan_year_id="plyr_abc123def456", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - plan_year = await response.parse() - assert_matches_type(PlanYearResponse, plan_year, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_update(self, async_client: AsyncVitableConnect) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `plan_year_id` but received ''"): - await async_client.plan_years.with_raw_response.update( - plan_year_id="", - ) diff --git a/uv.lock b/uv.lock index 972d5ba..a9b4c92 100644 --- a/uv.lock +++ b/uv.lock @@ -1653,7 +1653,7 @@ requires-dist = [ { name = "httpx-aiohttp", marker = "extra == 'aiohttp'", specifier = ">=0.1.9" }, { name = "pydantic", specifier = ">=1.9.0,<3" }, { name = "sniffio" }, - { name = "typing-extensions", specifier = ">=4.10,<5" }, + { name = "typing-extensions", specifier = ">=4.14,<5" }, ] provides-extras = ["aiohttp"]