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"]