From d91b3197935d903bfe83a824d4738a942cb842a2 Mon Sep 17 00:00:00 2001
From: fern-api <115122769+fern-api[bot]@users.noreply.github.com>
Date: Thu, 27 Mar 2025 17:11:47 +0000
Subject: [PATCH] SDK regeneration
---
poetry.lock | 14 +-
pyproject.toml | 2 +-
reference.md | 220 ++++++++--
src/schematic/__init__.py | 22 +
src/schematic/accesstokens/client.py | 4 +-
.../issue_temporary_access_token_response.py | 4 +-
src/schematic/accounts/client.py | 58 ++-
src/schematic/base_client.py | 8 +-
src/schematic/billing/__init__.py | 10 +
src/schematic/billing/client.py | 379 ++++++++++++++++--
src/schematic/billing/types/__init__.py | 12 +
.../types/count_billing_products_params.py | 4 +-
...te_billing_price_request_body_tier_mode.py | 5 +
...riptions_request_body_trial_end_setting.py | 5 +
.../types/delete_billing_product_response.py | 24 ++
.../types/list_billing_products_params.py | 4 +-
.../types/list_billing_products_response.py | 4 +-
.../billing/types/list_customers_response.py | 4 +-
.../types/list_payment_methods_params.py | 2 -
.../types/list_product_prices_params.py | 4 +-
.../types/search_billing_prices_params.py | 5 +-
...earch_billing_prices_request_usage_type.py | 5 +
...lling_prices_response_params_usage_type.py | 5 +
src/schematic/checkout/client.py | 36 +-
.../preview_checkout_internal_response.py | 4 +-
src/schematic/companies/client.py | 124 ++++--
.../count_entity_key_definitions_params.py | 4 +-
.../get_entity_trait_definition_response.py | 4 +-
...t_or_create_company_membership_response.py | 4 +-
...create_entity_trait_definition_response.py | 4 +-
.../list_company_memberships_response.py | 4 +-
.../list_entity_key_definitions_params.py | 4 +-
.../list_entity_trait_definitions_params.py | 4 +-
.../list_entity_trait_definitions_response.py | 4 +-
...update_entity_trait_definition_response.py | 4 +-
src/schematic/components/client.py | 28 +-
src/schematic/core/client_wrapper.py | 16 +-
src/schematic/core/file.py | 3 +-
src/schematic/core/pydantic_utilities.py | 8 +-
src/schematic/crm/client.py | 4 +-
src/schematic/entitlements/client.py | 92 ++++-
...any_override_request_body_metric_period.py | 3 +-
..._entitlement_request_body_metric_period.py | 3 +-
...any_override_request_body_metric_period.py | 3 +-
..._entitlement_request_body_metric_period.py | 3 +-
src/schematic/events/client.py | 12 +-
src/schematic/features/client.py | 92 ++++-
src/schematic/plangroups/client.py | 89 ++--
src/schematic/plans/client.py | 28 +-
src/schematic/types/__init__.py | 12 +
src/schematic/types/audience_request_body.py | 4 +-
.../billing_product_detail_response_data.py | 1 +
.../types/billing_product_pricing.py | 3 +-
.../billing_product_pricing_usage_type.py | 5 +
.../billing_subscription_response_data.py | 3 +
.../types/billing_subscription_view.py | 7 +-
.../types/company_detail_response_data.py | 6 +-
.../company_subscription_response_data.py | 8 +-
src/schematic/types/component_capabilities.py | 1 +
.../create_billing_price_tier_request_body.py | 22 +
.../types/create_entitlement_req_common.py | 12 +-
...te_entitlement_req_common_metric_period.py | 3 +-
...create_or_update_condition_request_body.py | 12 +-
...e_condition_request_body_condition_type.py | 11 +-
...te_condition_request_body_metric_period.py | 3 +-
..._update_condition_request_body_operator.py | 3 +-
.../create_or_update_rule_request_body.py | 8 +-
...e_or_update_rule_request_body_rule_type.py | 9 +-
src/schematic/types/entitlements_in_plan.py | 20 +
.../types/feature_company_response_data.py | 4 +-
.../feature_company_user_response_data.py | 4 +-
.../types/feature_detail_response_data.py | 2 +
src/schematic/types/feature_response_data.py | 2 +
.../types/feature_usage_response_data.py | 9 +-
src/schematic/types/ordered_plans_in_group.py | 21 +
.../types/payment_method_request_body.py | 1 -
.../types/payment_method_response_data.py | 1 -
.../plan_audience_detail_response_data.py | 4 +-
.../types/plan_entitlement_response_data.py | 1 +
.../types/plan_entitlements_order.py | 20 +
.../types/plan_group_detail_response_data.py | 2 +
.../plan_group_plan_entitlements_order.py | 21 +
.../types/plan_group_response_data.py | 3 +-
.../types/rule_detail_response_data.py | 4 +-
.../types/update_entitlement_req_common.py | 12 +-
...te_entitlement_req_common_metric_period.py | 3 +-
.../types/update_rule_request_body.py | 4 +-
.../usage_based_entitlement_request_body.py | 1 +
src/schematic/types/webhook_response_data.py | 1 +
src/schematic/webhooks/client.py | 38 +-
tests/utils/test_http_client.py | 10 +-
tests/utils/test_query_encoding.py | 16 +-
tests/utils/test_serialization.py | 40 +-
93 files changed, 1490 insertions(+), 275 deletions(-)
create mode 100644 src/schematic/billing/types/create_billing_price_request_body_tier_mode.py
create mode 100644 src/schematic/billing/types/create_billing_subscriptions_request_body_trial_end_setting.py
create mode 100644 src/schematic/billing/types/delete_billing_product_response.py
create mode 100644 src/schematic/billing/types/search_billing_prices_request_usage_type.py
create mode 100644 src/schematic/billing/types/search_billing_prices_response_params_usage_type.py
create mode 100644 src/schematic/types/billing_product_pricing_usage_type.py
create mode 100644 src/schematic/types/create_billing_price_tier_request_body.py
create mode 100644 src/schematic/types/entitlements_in_plan.py
create mode 100644 src/schematic/types/ordered_plans_in_group.py
create mode 100644 src/schematic/types/plan_entitlements_order.py
create mode 100644 src/schematic/types/plan_group_plan_entitlements_order.py
diff --git a/poetry.lock b/poetry.lock
index 12b0f2c..b603c94 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -144,13 +144,13 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2
[[package]]
name = "iniconfig"
-version = "2.0.0"
+version = "2.1.0"
description = "brain-dead simple config-ini parsing"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
- {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
+ {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"},
+ {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
]
[[package]]
@@ -525,13 +525,13 @@ files = [
[[package]]
name = "typing-extensions"
-version = "4.12.2"
+version = "4.13.0"
description = "Backported and Experimental Type Hints for Python 3.8+"
optional = false
python-versions = ">=3.8"
files = [
- {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"},
- {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
+ {file = "typing_extensions-4.13.0-py3-none-any.whl", hash = "sha256:c8dd92cc0d6425a97c18fbb9d1954e5ff92c1ca881a309c45f06ebc0b79058e5"},
+ {file = "typing_extensions-4.13.0.tar.gz", hash = "sha256:0a4ac55a5820789d87e297727d229866c9650f6521b64206413c4fbada24d95b"},
]
[metadata]
diff --git a/pyproject.toml b/pyproject.toml
index bc46ea3..60b2c6a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,7 +3,7 @@ name = "schematichq"
[tool.poetry]
name = "schematichq"
-version = "1.0.6"
+version = "1.0.7"
description = ""
readme = "README.md"
authors = []
diff --git a/reference.md b/reference.md
index bd3e433..ef487bd 100644
--- a/reference.md
+++ b/reference.md
@@ -1596,6 +1596,22 @@ client.features.create_feature(
-
+**plural_name:** `typing.Optional[str]`
+
+
+
+
+
+-
+
+**singular_name:** `typing.Optional[str]`
+
+
+
+
+
+-
+
**trait_id:** `typing.Optional[str]`
@@ -1780,6 +1796,22 @@ client.features.update_feature(
-
+**plural_name:** `typing.Optional[str]`
+
+
+
+
+
+-
+
+**singular_name:** `typing.Optional[str]`
+
+
+
+
+
+-
+
**trait_id:** `typing.Optional[str]`
@@ -2981,6 +3013,14 @@ client.billing.upsert_billing_customer(
-
+**default_payment_method_id:** `typing.Optional[str]`
+
+
+
+
+
+-
+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -3608,14 +3648,6 @@ client.billing.list_payment_methods(
-
-**subscription_external_id:** `typing.Optional[str]`
-
-
-
-
-
--
-
**limit:** `typing.Optional[int]` — Page limit (default 100)
@@ -3778,14 +3810,6 @@ client.billing.upsert_payment_method(
-
-**subscription_external_id:** `typing.Optional[str]`
-
-
-
-
-
--
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -3856,7 +3880,7 @@ client.billing.search_billing_prices()
-
-**usage_type:** `typing.Optional[str]`
+**usage_type:** `typing.Optional[SearchBillingPricesRequestUsageType]`
@@ -3913,17 +3937,23 @@ client.billing.search_billing_prices()
-
```python
-from schematic import Schematic
+from schematic import CreateBillingPriceTierRequestBody, Schematic
client = Schematic(
api_key="YOUR_API_KEY",
)
client.billing.upsert_billing_price(
currency="currency",
+ external_account_id="external_account_id",
interval="interval",
is_active=True,
price=1,
price_external_id="price_external_id",
+ price_tiers=[
+ CreateBillingPriceTierRequestBody(
+ price_external_id="price_external_id",
+ )
+ ],
product_external_id="product_external_id",
usage_type="licensed",
)
@@ -3950,6 +3980,14 @@ client.billing.upsert_billing_price(
-
+**external_account_id:** `str`
+
+
+
+
+
+-
+
**interval:** `str`
@@ -3982,6 +4020,14 @@ client.billing.upsert_billing_price(
-
+**price_tiers:** `typing.Sequence[CreateBillingPriceTierRequestBody]`
+
+
+
+
+
+-
+
**product_external_id:** `str`
@@ -4006,6 +4052,70 @@ client.billing.upsert_billing_price(
-
+**tier_mode:** `typing.Optional[CreateBillingPriceRequestBodyTierMode]`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.billing.delete_billing_product(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+
+client = Schematic(
+ api_key="YOUR_API_KEY",
+)
+client.billing.delete_billing_product(
+ billing_id="billing_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**billing_id:** `str` — billing_id
+
+
+
+
+
+-
+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -4211,6 +4321,7 @@ client = Schematic(
api_key="YOUR_API_KEY",
)
client.billing.upsert_billing_product(
+ active=True,
currency="currency",
external_id="external_id",
name="name",
@@ -4232,6 +4343,14 @@ client.billing.upsert_billing_product(
-
+**active:** `bool`
+
+
+
+
+
+-
+
**currency:** `str`
@@ -4545,6 +4664,7 @@ client = Schematic(
api_key="YOUR_API_KEY",
)
client.billing.upsert_billing_subscription(
+ cancel_at_period_end=True,
currency="currency",
customer_external_id="customer_external_id",
discounts=[
@@ -4568,7 +4688,7 @@ client.billing.upsert_billing_subscription(
price_external_id="price_external_id",
product_external_id="product_external_id",
quantity=1,
- usage_type="usage_type",
+ usage_type="licensed",
)
],
subscription_external_id="subscription_external_id",
@@ -4589,6 +4709,14 @@ client.billing.upsert_billing_subscription(
-
+**cancel_at_period_end:** `bool`
+
+
+
+
+
+-
+
**currency:** `str`
@@ -4645,6 +4773,22 @@ client.billing.upsert_billing_subscription(
-
+**cancel_at:** `typing.Optional[int]`
+
+
+
+
+
+-
+
+**default_payment_method_id:** `typing.Optional[str]`
+
+
+
+
+
+-
+
**interval:** `typing.Optional[str]`
@@ -4693,7 +4837,7 @@ client.billing.upsert_billing_subscription(
-
-**trial_end_setting:** `typing.Optional[str]`
+**trial_end_setting:** `typing.Optional[CreateBillingSubscriptionsRequestBodyTrialEndSetting]`
@@ -8868,6 +9012,14 @@ client.entitlements.create_plan_entitlement(
-
+**soft_limit:** `typing.Optional[int]`
+
+
+
+
+
+-
+
**value_bool:** `typing.Optional[bool]`
@@ -9053,6 +9205,14 @@ client.entitlements.update_plan_entitlement(
-
+**soft_limit:** `typing.Optional[int]`
+
+
+
+
+
+-
+
**value_bool:** `typing.Optional[bool]`
@@ -11692,14 +11852,18 @@ client.plangroups.get_plan_group()
-
```python
-from schematic import Schematic
+from schematic import OrderedPlansInGroup, Schematic
client = Schematic(
api_key="YOUR_API_KEY",
)
client.plangroups.create_plan_group(
add_on_ids=["add_on_ids"],
- plan_ids=["plan_ids"],
+ ordered_plans=[
+ OrderedPlansInGroup(
+ plan_id="plan_id",
+ )
+ ],
)
```
@@ -11724,7 +11888,7 @@ client.plangroups.create_plan_group(
-
-**plan_ids:** `typing.Sequence[str]`
+**ordered_plans:** `typing.Sequence[OrderedPlansInGroup]`
@@ -11797,7 +11961,7 @@ client.plangroups.create_plan_group(
-
```python
-from schematic import Schematic
+from schematic import OrderedPlansInGroup, Schematic
client = Schematic(
api_key="YOUR_API_KEY",
@@ -11805,7 +11969,11 @@ client = Schematic(
client.plangroups.update_plan_group(
plan_group_id="plan_group_id",
add_on_ids=["add_on_ids"],
- plan_ids=["plan_ids"],
+ ordered_plans=[
+ OrderedPlansInGroup(
+ plan_id="plan_id",
+ )
+ ],
)
```
@@ -11838,7 +12006,7 @@ client.plangroups.update_plan_group(
-
-**plan_ids:** `typing.Sequence[str]`
+**ordered_plans:** `typing.Sequence[OrderedPlansInGroup]`
diff --git a/src/schematic/__init__.py b/src/schematic/__init__.py
index e78ede2..290630b 100644
--- a/src/schematic/__init__.py
+++ b/src/schematic/__init__.py
@@ -19,6 +19,7 @@
BillingProductPlanResponseData,
BillingProductPriceResponseData,
BillingProductPricing,
+ BillingProductPricingUsageType,
BillingProductResponseData,
BillingSubscriptionDiscount,
BillingSubscriptionDiscountView,
@@ -46,6 +47,7 @@
ComponentResponseData,
CountResponse,
CouponRequestBody,
+ CreateBillingPriceTierRequestBody,
CreateEntitlementReqCommon,
CreateEntitlementReqCommonMetricPeriod,
CreateEntitlementReqCommonMetricPeriodMonthReset,
@@ -70,6 +72,7 @@
CustomPlanViewConfigResponseData,
Decimal,
DeleteResponse,
+ EntitlementsInPlan,
EntityKeyDefinitionResponseData,
EntityKeyDetailResponseData,
EntityKeyResponseData,
@@ -104,6 +107,7 @@
IssueTemporaryAccessTokenResponseData,
KeysRequestBody,
MeterRequestBody,
+ OrderedPlansInGroup,
PaginationFilter,
PaymentMethodRequestBody,
PaymentMethodResponseData,
@@ -111,8 +115,10 @@
PlanAudienceResponseData,
PlanDetailResponseData,
PlanEntitlementResponseData,
+ PlanEntitlementsOrder,
PlanGroupDetailResponseData,
PlanGroupPlanDetailResponseData,
+ PlanGroupPlanEntitlementsOrder,
PlanGroupResponseData,
PlanResponseData,
PreviewObject,
@@ -196,7 +202,10 @@
CountBillingProductsResponseParamsPriceUsageType,
CountCustomersParams,
CountCustomersResponse,
+ CreateBillingPriceRequestBodyTierMode,
CreateBillingPriceRequestBodyUsageType,
+ CreateBillingSubscriptionsRequestBodyTrialEndSetting,
+ DeleteBillingProductResponse,
DeleteProductPriceResponse,
ListBillingProductsParams,
ListBillingProductsRequestPriceUsageType,
@@ -217,7 +226,9 @@
ListProductPricesResponse,
ListProductPricesResponseParamsPriceUsageType,
SearchBillingPricesParams,
+ SearchBillingPricesRequestUsageType,
SearchBillingPricesResponse,
+ SearchBillingPricesResponseParamsUsageType,
UpsertBillingCouponResponse,
UpsertBillingCustomerResponse,
UpsertBillingMeterResponse,
@@ -464,6 +475,7 @@
"BillingProductPlanResponseData",
"BillingProductPriceResponseData",
"BillingProductPricing",
+ "BillingProductPricingUsageType",
"BillingProductResponseData",
"BillingSubscriptionDiscount",
"BillingSubscriptionDiscountView",
@@ -545,7 +557,10 @@
"CountWebhooksResponse",
"CouponRequestBody",
"CreateApiKeyResponse",
+ "CreateBillingPriceRequestBodyTierMode",
"CreateBillingPriceRequestBodyUsageType",
+ "CreateBillingPriceTierRequestBody",
+ "CreateBillingSubscriptionsRequestBodyTrialEndSetting",
"CreateCompanyOverrideRequestBodyMetricPeriod",
"CreateCompanyOverrideRequestBodyMetricPeriodMonthReset",
"CreateCompanyOverrideRequestBodyValueType",
@@ -597,6 +612,7 @@
"Decimal",
"DeleteApiKeyResponse",
"DeleteAudienceResponse",
+ "DeleteBillingProductResponse",
"DeleteCompanyByKeysResponse",
"DeleteCompanyMembershipResponse",
"DeleteCompanyOverrideResponse",
@@ -612,6 +628,7 @@
"DeleteUserByKeysResponse",
"DeleteUserResponse",
"DeleteWebhookResponse",
+ "EntitlementsInPlan",
"EntityKeyDefinitionResponseData",
"EntityKeyDetailResponseData",
"EntityKeyResponseData",
@@ -756,6 +773,7 @@
"LookupUserResponse",
"MeterRequestBody",
"NotFoundError",
+ "OrderedPlansInGroup",
"PaginationFilter",
"PaymentMethodRequestBody",
"PaymentMethodResponseData",
@@ -763,8 +781,10 @@
"PlanAudienceResponseData",
"PlanDetailResponseData",
"PlanEntitlementResponseData",
+ "PlanEntitlementsOrder",
"PlanGroupDetailResponseData",
"PlanGroupPlanDetailResponseData",
+ "PlanGroupPlanEntitlementsOrder",
"PlanGroupResponseData",
"PlanResponseData",
"PreviewCheckoutInternalResponse",
@@ -786,7 +806,9 @@
"SchematicConfig",
"SchematicEnvironment",
"SearchBillingPricesParams",
+ "SearchBillingPricesRequestUsageType",
"SearchBillingPricesResponse",
+ "SearchBillingPricesResponseParamsUsageType",
"SegmentStatusResp",
"StripeEmbedInfo",
"TemporaryAccessTokenResponseData",
diff --git a/src/schematic/accesstokens/client.py b/src/schematic/accesstokens/client.py
index add07bf..c048a90 100644
--- a/src/schematic/accesstokens/client.py
+++ b/src/schematic/accesstokens/client.py
@@ -3,7 +3,9 @@
import typing
from ..core.client_wrapper import SyncClientWrapper
from ..core.request_options import RequestOptions
-from .types.issue_temporary_access_token_response import IssueTemporaryAccessTokenResponse
+from .types.issue_temporary_access_token_response import (
+ IssueTemporaryAccessTokenResponse,
+)
from ..core.pydantic_utilities import parse_obj_as
from ..errors.bad_request_error import BadRequestError
from ..types.api_error import ApiError as types_api_error_ApiError
diff --git a/src/schematic/accesstokens/types/issue_temporary_access_token_response.py b/src/schematic/accesstokens/types/issue_temporary_access_token_response.py
index 0b99b85..a1e5de9 100644
--- a/src/schematic/accesstokens/types/issue_temporary_access_token_response.py
+++ b/src/schematic/accesstokens/types/issue_temporary_access_token_response.py
@@ -1,7 +1,9 @@
# This file was auto-generated by Fern from our API Definition.
from ...core.pydantic_utilities import UniversalBaseModel
-from ...types.issue_temporary_access_token_response_data import IssueTemporaryAccessTokenResponseData
+from ...types.issue_temporary_access_token_response_data import (
+ IssueTemporaryAccessTokenResponseData,
+)
import typing
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/accounts/client.py b/src/schematic/accounts/client.py
index 742f105..6d1b3ee 100644
--- a/src/schematic/accounts/client.py
+++ b/src/schematic/accounts/client.py
@@ -23,10 +23,14 @@
from .types.get_api_request_response import GetApiRequestResponse
from .types.count_api_requests_response import CountApiRequestsResponse
from .types.list_environments_response import ListEnvironmentsResponse
-from .types.create_environment_request_body_environment_type import CreateEnvironmentRequestBodyEnvironmentType
+from .types.create_environment_request_body_environment_type import (
+ CreateEnvironmentRequestBodyEnvironmentType,
+)
from .types.create_environment_response import CreateEnvironmentResponse
from .types.get_environment_response import GetEnvironmentResponse
-from .types.update_environment_request_body_environment_type import UpdateEnvironmentRequestBodyEnvironmentType
+from .types.update_environment_request_body_environment_type import (
+ UpdateEnvironmentRequestBodyEnvironmentType,
+)
from .types.update_environment_response import UpdateEnvironmentResponse
from .types.delete_environment_response import DeleteEnvironmentResponse
from ..core.client_wrapper import AsyncClientWrapper
@@ -250,7 +254,10 @@ def create_api_key(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_api_key(
- self, api_key_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ api_key_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetApiKeyResponse:
"""
Parameters
@@ -451,7 +458,10 @@ def update_api_key(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_api_key(
- self, api_key_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ api_key_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteApiKeyResponse:
"""
Parameters
@@ -752,7 +762,10 @@ def list_api_requests(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_api_request(
- self, api_request_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ api_request_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetApiRequestResponse:
"""
Parameters
@@ -1148,7 +1161,10 @@ def create_environment(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_environment(
- self, environment_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ environment_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetEnvironmentResponse:
"""
Parameters
@@ -1349,7 +1365,10 @@ def update_environment(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_environment(
- self, environment_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ environment_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteEnvironmentResponse:
"""
Parameters
@@ -1667,7 +1686,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_api_key(
- self, api_key_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ api_key_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetApiKeyResponse:
"""
Parameters
@@ -1884,7 +1906,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_api_key(
- self, api_key_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ api_key_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteApiKeyResponse:
"""
Parameters
@@ -2209,7 +2234,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_api_request(
- self, api_request_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ api_request_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetApiRequestResponse:
"""
Parameters
@@ -2637,7 +2665,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_environment(
- self, environment_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ environment_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetEnvironmentResponse:
"""
Parameters
@@ -2854,7 +2885,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_environment(
- self, environment_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ environment_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteEnvironmentResponse:
"""
Parameters
diff --git a/src/schematic/base_client.py b/src/schematic/base_client.py
index adeedb5..495421d 100644
--- a/src/schematic/base_client.py
+++ b/src/schematic/base_client.py
@@ -80,7 +80,9 @@ def __init__(
follow_redirects: typing.Optional[bool] = True,
httpx_client: typing.Optional[httpx.Client] = None,
):
- _defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None
+ _defaulted_timeout = (
+ timeout if timeout is not None else 60 if httpx_client is None else httpx_client.timeout.read
+ )
self._client_wrapper = SyncClientWrapper(
base_url=_get_base_url(base_url=base_url, environment=environment),
api_key=api_key,
@@ -153,7 +155,9 @@ def __init__(
follow_redirects: typing.Optional[bool] = True,
httpx_client: typing.Optional[httpx.AsyncClient] = None,
):
- _defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None
+ _defaulted_timeout = (
+ timeout if timeout is not None else 60 if httpx_client is None else httpx_client.timeout.read
+ )
self._client_wrapper = AsyncClientWrapper(
base_url=_get_base_url(base_url=base_url, environment=environment),
api_key=api_key,
diff --git a/src/schematic/billing/__init__.py b/src/schematic/billing/__init__.py
index fba40e7..aebad97 100644
--- a/src/schematic/billing/__init__.py
+++ b/src/schematic/billing/__init__.py
@@ -7,7 +7,10 @@
CountBillingProductsResponseParamsPriceUsageType,
CountCustomersParams,
CountCustomersResponse,
+ CreateBillingPriceRequestBodyTierMode,
CreateBillingPriceRequestBodyUsageType,
+ CreateBillingSubscriptionsRequestBodyTrialEndSetting,
+ DeleteBillingProductResponse,
DeleteProductPriceResponse,
ListBillingProductsParams,
ListBillingProductsRequestPriceUsageType,
@@ -28,7 +31,9 @@
ListProductPricesResponse,
ListProductPricesResponseParamsPriceUsageType,
SearchBillingPricesParams,
+ SearchBillingPricesRequestUsageType,
SearchBillingPricesResponse,
+ SearchBillingPricesResponseParamsUsageType,
UpsertBillingCouponResponse,
UpsertBillingCustomerResponse,
UpsertBillingMeterResponse,
@@ -46,7 +51,10 @@
"CountBillingProductsResponseParamsPriceUsageType",
"CountCustomersParams",
"CountCustomersResponse",
+ "CreateBillingPriceRequestBodyTierMode",
"CreateBillingPriceRequestBodyUsageType",
+ "CreateBillingSubscriptionsRequestBodyTrialEndSetting",
+ "DeleteBillingProductResponse",
"DeleteProductPriceResponse",
"ListBillingProductsParams",
"ListBillingProductsRequestPriceUsageType",
@@ -67,7 +75,9 @@
"ListProductPricesResponse",
"ListProductPricesResponseParamsPriceUsageType",
"SearchBillingPricesParams",
+ "SearchBillingPricesRequestUsageType",
"SearchBillingPricesResponse",
+ "SearchBillingPricesResponseParamsUsageType",
"UpsertBillingCouponResponse",
"UpsertBillingCustomerResponse",
"UpsertBillingMeterResponse",
diff --git a/src/schematic/billing/client.py b/src/schematic/billing/client.py
index 0f658e9..70e2e18 100644
--- a/src/schematic/billing/client.py
+++ b/src/schematic/billing/client.py
@@ -23,22 +23,45 @@
from .types.upsert_billing_meter_response import UpsertBillingMeterResponse
from .types.list_payment_methods_response import ListPaymentMethodsResponse
from .types.upsert_payment_method_response import UpsertPaymentMethodResponse
+from .types.search_billing_prices_request_usage_type import (
+ SearchBillingPricesRequestUsageType,
+)
from .types.search_billing_prices_response import SearchBillingPricesResponse
-from .types.create_billing_price_request_body_usage_type import CreateBillingPriceRequestBodyUsageType
+from ..types.create_billing_price_tier_request_body import (
+ CreateBillingPriceTierRequestBody,
+)
+from .types.create_billing_price_request_body_usage_type import (
+ CreateBillingPriceRequestBodyUsageType,
+)
+from .types.create_billing_price_request_body_tier_mode import (
+ CreateBillingPriceRequestBodyTierMode,
+)
from .types.upsert_billing_price_response import UpsertBillingPriceResponse
-from .types.list_product_prices_request_price_usage_type import ListProductPricesRequestPriceUsageType
+from ..core.serialization import convert_and_respect_annotation_metadata
+from .types.delete_billing_product_response import DeleteBillingProductResponse
+from ..core.jsonable_encoder import jsonable_encoder
+from .types.list_product_prices_request_price_usage_type import (
+ ListProductPricesRequestPriceUsageType,
+)
from .types.list_product_prices_response import ListProductPricesResponse
from .types.delete_product_price_response import DeleteProductPriceResponse
-from ..core.jsonable_encoder import jsonable_encoder
from .types.upsert_billing_product_response import UpsertBillingProductResponse
-from .types.list_billing_products_request_price_usage_type import ListBillingProductsRequestPriceUsageType
+from .types.list_billing_products_request_price_usage_type import (
+ ListBillingProductsRequestPriceUsageType,
+)
from .types.list_billing_products_response import ListBillingProductsResponse
-from .types.count_billing_products_request_price_usage_type import CountBillingProductsRequestPriceUsageType
+from .types.count_billing_products_request_price_usage_type import (
+ CountBillingProductsRequestPriceUsageType,
+)
from .types.count_billing_products_response import CountBillingProductsResponse
from ..types.billing_subscription_discount import BillingSubscriptionDiscount
from ..types.billing_product_pricing import BillingProductPricing
-from .types.upsert_billing_subscription_response import UpsertBillingSubscriptionResponse
-from ..core.serialization import convert_and_respect_annotation_metadata
+from .types.create_billing_subscriptions_request_body_trial_end_setting import (
+ CreateBillingSubscriptionsRequestBodyTrialEndSetting,
+)
+from .types.upsert_billing_subscription_response import (
+ UpsertBillingSubscriptionResponse,
+)
from ..core.client_wrapper import AsyncClientWrapper
# this is used as the default value for optional parameters
@@ -297,6 +320,7 @@ def upsert_billing_customer(
meta: typing.Dict[str, str],
name: str,
company_id: typing.Optional[str] = OMIT,
+ default_payment_method_id: typing.Optional[str] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertBillingCustomerResponse:
"""
@@ -314,6 +338,8 @@ def upsert_billing_customer(
company_id : typing.Optional[str]
+ default_payment_method_id : typing.Optional[str]
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -342,6 +368,7 @@ def upsert_billing_customer(
method="POST",
json={
"company_id": company_id,
+ "default_payment_method_id": default_payment_method_id,
"email": email,
"external_id": external_id,
"failed_to_import": failed_to_import,
@@ -1096,7 +1123,6 @@ def list_payment_methods(
*,
customer_external_id: str,
company_id: typing.Optional[str] = None,
- subscription_external_id: typing.Optional[str] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -1108,8 +1134,6 @@ def list_payment_methods(
company_id : typing.Optional[str]
- subscription_external_id : typing.Optional[str]
-
limit : typing.Optional[int]
Page limit (default 100)
@@ -1141,7 +1165,6 @@ def list_payment_methods(
params={
"company_id": company_id,
"customer_external_id": customer_external_id,
- "subscription_external_id": subscription_external_id,
"limit": limit,
"offset": offset,
},
@@ -1216,7 +1239,6 @@ def upsert_payment_method(
card_exp_month: typing.Optional[int] = OMIT,
card_exp_year: typing.Optional[int] = OMIT,
card_last_4: typing.Optional[str] = OMIT,
- subscription_external_id: typing.Optional[str] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertPaymentMethodResponse:
"""
@@ -1246,8 +1268,6 @@ def upsert_payment_method(
card_last_4 : typing.Optional[str]
- subscription_external_id : typing.Optional[str]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -1285,7 +1305,6 @@ def upsert_payment_method(
"customer_external_id": customer_external_id,
"external_id": external_id,
"payment_method_type": payment_method_type,
- "subscription_external_id": subscription_external_id,
},
headers={
"content-type": "application/json",
@@ -1353,7 +1372,7 @@ def search_billing_prices(
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
q: typing.Optional[str] = None,
interval: typing.Optional[str] = None,
- usage_type: typing.Optional[str] = None,
+ usage_type: typing.Optional[SearchBillingPricesRequestUsageType] = None,
price: typing.Optional[int] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
@@ -1368,7 +1387,7 @@ def search_billing_prices(
interval : typing.Optional[str]
- usage_type : typing.Optional[str]
+ usage_type : typing.Optional[SearchBillingPricesRequestUsageType]
price : typing.Optional[int]
@@ -1467,13 +1486,16 @@ def upsert_billing_price(
self,
*,
currency: str,
+ external_account_id: str,
interval: str,
is_active: bool,
price: int,
price_external_id: str,
+ price_tiers: typing.Sequence[CreateBillingPriceTierRequestBody],
product_external_id: str,
usage_type: CreateBillingPriceRequestBodyUsageType,
meter_id: typing.Optional[str] = OMIT,
+ tier_mode: typing.Optional[CreateBillingPriceRequestBodyTierMode] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertBillingPriceResponse:
"""
@@ -1481,6 +1503,8 @@ def upsert_billing_price(
----------
currency : str
+ external_account_id : str
+
interval : str
is_active : bool
@@ -1489,12 +1513,16 @@ def upsert_billing_price(
price_external_id : str
+ price_tiers : typing.Sequence[CreateBillingPriceTierRequestBody]
+
product_external_id : str
usage_type : CreateBillingPriceRequestBodyUsageType
meter_id : typing.Optional[str]
+ tier_mode : typing.Optional[CreateBillingPriceRequestBodyTierMode]
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -1505,17 +1533,23 @@ def upsert_billing_price(
Examples
--------
- from schematic import Schematic
+ from schematic import CreateBillingPriceTierRequestBody, Schematic
client = Schematic(
api_key="YOUR_API_KEY",
)
client.billing.upsert_billing_price(
currency="currency",
+ external_account_id="external_account_id",
interval="interval",
is_active=True,
price=1,
price_external_id="price_external_id",
+ price_tiers=[
+ CreateBillingPriceTierRequestBody(
+ price_external_id="price_external_id",
+ )
+ ],
product_external_id="product_external_id",
usage_type="licensed",
)
@@ -1525,12 +1559,19 @@ def upsert_billing_price(
method="POST",
json={
"currency": currency,
+ "external_account_id": external_account_id,
"interval": interval,
"is_active": is_active,
"meter_id": meter_id,
"price": price,
"price_external_id": price_external_id,
+ "price_tiers": convert_and_respect_annotation_metadata(
+ object_=price_tiers,
+ annotation=typing.Sequence[CreateBillingPriceTierRequestBody],
+ direction="write",
+ ),
"product_external_id": product_external_id,
+ "tier_mode": tier_mode,
"usage_type": usage_type,
},
headers={
@@ -1593,6 +1634,96 @@ def upsert_billing_price(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response.text)
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
+ def delete_billing_product(
+ self,
+ billing_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> DeleteBillingProductResponse:
+ """
+ Parameters
+ ----------
+ billing_id : str
+ billing_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ DeleteBillingProductResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.billing.delete_billing_product(
+ billing_id="billing_id",
+ )
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"billing/product/{jsonable_encoder(billing_id)}",
+ method="DELETE",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ DeleteBillingProductResponse,
+ parse_obj_as(
+ type_=DeleteBillingProductResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ if _response.status_code == 400:
+ raise BadRequestError(
+ typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(status_code=_response.status_code, body=_response.text)
+ raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
+
def list_product_prices(
self,
*,
@@ -1721,7 +1852,10 @@ def list_product_prices(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_product_price(
- self, billing_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ billing_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteProductPriceResponse:
"""
Parameters
@@ -1810,6 +1944,7 @@ def delete_product_price(
def upsert_billing_product(
self,
*,
+ active: bool,
currency: str,
external_id: str,
name: str,
@@ -1820,6 +1955,8 @@ def upsert_billing_product(
"""
Parameters
----------
+ active : bool
+
currency : str
external_id : str
@@ -1846,6 +1983,7 @@ def upsert_billing_product(
api_key="YOUR_API_KEY",
)
client.billing.upsert_billing_product(
+ active=True,
currency="currency",
external_id="external_id",
name="name",
@@ -1857,6 +1995,7 @@ def upsert_billing_product(
"billing/product/upsert",
method="POST",
json={
+ "active": active,
"currency": currency,
"external_id": external_id,
"name": name,
@@ -2180,6 +2319,7 @@ def count_billing_products(
def upsert_billing_subscription(
self,
*,
+ cancel_at_period_end: bool,
currency: str,
customer_external_id: str,
discounts: typing.Sequence[BillingSubscriptionDiscount],
@@ -2187,18 +2327,22 @@ def upsert_billing_subscription(
product_external_ids: typing.Sequence[BillingProductPricing],
subscription_external_id: str,
total_price: int,
+ cancel_at: typing.Optional[int] = OMIT,
+ default_payment_method_id: typing.Optional[str] = OMIT,
interval: typing.Optional[str] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
period_end: typing.Optional[int] = OMIT,
period_start: typing.Optional[int] = OMIT,
status: typing.Optional[str] = OMIT,
trial_end: typing.Optional[int] = OMIT,
- trial_end_setting: typing.Optional[str] = OMIT,
+ trial_end_setting: typing.Optional[CreateBillingSubscriptionsRequestBodyTrialEndSetting] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertBillingSubscriptionResponse:
"""
Parameters
----------
+ cancel_at_period_end : bool
+
currency : str
customer_external_id : str
@@ -2213,6 +2357,10 @@ def upsert_billing_subscription(
total_price : int
+ cancel_at : typing.Optional[int]
+
+ default_payment_method_id : typing.Optional[str]
+
interval : typing.Optional[str]
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
@@ -2225,7 +2373,7 @@ def upsert_billing_subscription(
trial_end : typing.Optional[int]
- trial_end_setting : typing.Optional[str]
+ trial_end_setting : typing.Optional[CreateBillingSubscriptionsRequestBodyTrialEndSetting]
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -2249,6 +2397,7 @@ def upsert_billing_subscription(
api_key="YOUR_API_KEY",
)
client.billing.upsert_billing_subscription(
+ cancel_at_period_end=True,
currency="currency",
customer_external_id="customer_external_id",
discounts=[
@@ -2272,7 +2421,7 @@ def upsert_billing_subscription(
price_external_id="price_external_id",
product_external_id="product_external_id",
quantity=1,
- usage_type="usage_type",
+ usage_type="licensed",
)
],
subscription_external_id="subscription_external_id",
@@ -2283,10 +2432,15 @@ def upsert_billing_subscription(
"billing/subscription/upsert",
method="POST",
json={
+ "cancel_at": cancel_at,
+ "cancel_at_period_end": cancel_at_period_end,
"currency": currency,
"customer_external_id": customer_external_id,
+ "default_payment_method_id": default_payment_method_id,
"discounts": convert_and_respect_annotation_metadata(
- object_=discounts, annotation=typing.Sequence[BillingSubscriptionDiscount], direction="write"
+ object_=discounts,
+ annotation=typing.Sequence[BillingSubscriptionDiscount],
+ direction="write",
),
"expired_at": expired_at,
"interval": interval,
@@ -2294,7 +2448,9 @@ def upsert_billing_subscription(
"period_end": period_end,
"period_start": period_start,
"product_external_ids": convert_and_respect_annotation_metadata(
- object_=product_external_ids, annotation=typing.Sequence[BillingProductPricing], direction="write"
+ object_=product_external_ids,
+ annotation=typing.Sequence[BillingProductPricing],
+ direction="write",
),
"status": status,
"subscription_external_id": subscription_external_id,
@@ -2631,6 +2787,7 @@ async def upsert_billing_customer(
meta: typing.Dict[str, str],
name: str,
company_id: typing.Optional[str] = OMIT,
+ default_payment_method_id: typing.Optional[str] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertBillingCustomerResponse:
"""
@@ -2648,6 +2805,8 @@ async def upsert_billing_customer(
company_id : typing.Optional[str]
+ default_payment_method_id : typing.Optional[str]
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -2684,6 +2843,7 @@ async def main() -> None:
method="POST",
json={
"company_id": company_id,
+ "default_payment_method_id": default_payment_method_id,
"email": email,
"external_id": external_id,
"failed_to_import": failed_to_import,
@@ -3486,7 +3646,6 @@ async def list_payment_methods(
*,
customer_external_id: str,
company_id: typing.Optional[str] = None,
- subscription_external_id: typing.Optional[str] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -3498,8 +3657,6 @@ async def list_payment_methods(
company_id : typing.Optional[str]
- subscription_external_id : typing.Optional[str]
-
limit : typing.Optional[int]
Page limit (default 100)
@@ -3539,7 +3696,6 @@ async def main() -> None:
params={
"company_id": company_id,
"customer_external_id": customer_external_id,
- "subscription_external_id": subscription_external_id,
"limit": limit,
"offset": offset,
},
@@ -3614,7 +3770,6 @@ async def upsert_payment_method(
card_exp_month: typing.Optional[int] = OMIT,
card_exp_year: typing.Optional[int] = OMIT,
card_last_4: typing.Optional[str] = OMIT,
- subscription_external_id: typing.Optional[str] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertPaymentMethodResponse:
"""
@@ -3644,8 +3799,6 @@ async def upsert_payment_method(
card_last_4 : typing.Optional[str]
- subscription_external_id : typing.Optional[str]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -3691,7 +3844,6 @@ async def main() -> None:
"customer_external_id": customer_external_id,
"external_id": external_id,
"payment_method_type": payment_method_type,
- "subscription_external_id": subscription_external_id,
},
headers={
"content-type": "application/json",
@@ -3759,7 +3911,7 @@ async def search_billing_prices(
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
q: typing.Optional[str] = None,
interval: typing.Optional[str] = None,
- usage_type: typing.Optional[str] = None,
+ usage_type: typing.Optional[SearchBillingPricesRequestUsageType] = None,
price: typing.Optional[int] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
@@ -3774,7 +3926,7 @@ async def search_billing_prices(
interval : typing.Optional[str]
- usage_type : typing.Optional[str]
+ usage_type : typing.Optional[SearchBillingPricesRequestUsageType]
price : typing.Optional[int]
@@ -3881,13 +4033,16 @@ async def upsert_billing_price(
self,
*,
currency: str,
+ external_account_id: str,
interval: str,
is_active: bool,
price: int,
price_external_id: str,
+ price_tiers: typing.Sequence[CreateBillingPriceTierRequestBody],
product_external_id: str,
usage_type: CreateBillingPriceRequestBodyUsageType,
meter_id: typing.Optional[str] = OMIT,
+ tier_mode: typing.Optional[CreateBillingPriceRequestBodyTierMode] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertBillingPriceResponse:
"""
@@ -3895,6 +4050,8 @@ async def upsert_billing_price(
----------
currency : str
+ external_account_id : str
+
interval : str
is_active : bool
@@ -3903,12 +4060,16 @@ async def upsert_billing_price(
price_external_id : str
+ price_tiers : typing.Sequence[CreateBillingPriceTierRequestBody]
+
product_external_id : str
usage_type : CreateBillingPriceRequestBodyUsageType
meter_id : typing.Optional[str]
+ tier_mode : typing.Optional[CreateBillingPriceRequestBodyTierMode]
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -3921,7 +4082,7 @@ async def upsert_billing_price(
--------
import asyncio
- from schematic import AsyncSchematic
+ from schematic import AsyncSchematic, CreateBillingPriceTierRequestBody
client = AsyncSchematic(
api_key="YOUR_API_KEY",
@@ -3931,10 +4092,16 @@ async def upsert_billing_price(
async def main() -> None:
await client.billing.upsert_billing_price(
currency="currency",
+ external_account_id="external_account_id",
interval="interval",
is_active=True,
price=1,
price_external_id="price_external_id",
+ price_tiers=[
+ CreateBillingPriceTierRequestBody(
+ price_external_id="price_external_id",
+ )
+ ],
product_external_id="product_external_id",
usage_type="licensed",
)
@@ -3947,12 +4114,19 @@ async def main() -> None:
method="POST",
json={
"currency": currency,
+ "external_account_id": external_account_id,
"interval": interval,
"is_active": is_active,
"meter_id": meter_id,
"price": price,
"price_external_id": price_external_id,
+ "price_tiers": convert_and_respect_annotation_metadata(
+ object_=price_tiers,
+ annotation=typing.Sequence[CreateBillingPriceTierRequestBody],
+ direction="write",
+ ),
"product_external_id": product_external_id,
+ "tier_mode": tier_mode,
"usage_type": usage_type,
},
headers={
@@ -4015,6 +4189,104 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response.text)
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
+ async def delete_billing_product(
+ self,
+ billing_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> DeleteBillingProductResponse:
+ """
+ Parameters
+ ----------
+ billing_id : str
+ billing_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ DeleteBillingProductResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.billing.delete_billing_product(
+ billing_id="billing_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"billing/product/{jsonable_encoder(billing_id)}",
+ method="DELETE",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ return typing.cast(
+ DeleteBillingProductResponse,
+ parse_obj_as(
+ type_=DeleteBillingProductResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ if _response.status_code == 400:
+ raise BadRequestError(
+ typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(status_code=_response.status_code, body=_response.text)
+ raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
+
async def list_product_prices(
self,
*,
@@ -4151,7 +4423,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_product_price(
- self, billing_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ billing_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteProductPriceResponse:
"""
Parameters
@@ -4248,6 +4523,7 @@ async def main() -> None:
async def upsert_billing_product(
self,
*,
+ active: bool,
currency: str,
external_id: str,
name: str,
@@ -4258,6 +4534,8 @@ async def upsert_billing_product(
"""
Parameters
----------
+ active : bool
+
currency : str
external_id : str
@@ -4289,6 +4567,7 @@ async def upsert_billing_product(
async def main() -> None:
await client.billing.upsert_billing_product(
+ active=True,
currency="currency",
external_id="external_id",
name="name",
@@ -4303,6 +4582,7 @@ async def main() -> None:
"billing/product/upsert",
method="POST",
json={
+ "active": active,
"currency": currency,
"external_id": external_id,
"name": name,
@@ -4642,6 +4922,7 @@ async def main() -> None:
async def upsert_billing_subscription(
self,
*,
+ cancel_at_period_end: bool,
currency: str,
customer_external_id: str,
discounts: typing.Sequence[BillingSubscriptionDiscount],
@@ -4649,18 +4930,22 @@ async def upsert_billing_subscription(
product_external_ids: typing.Sequence[BillingProductPricing],
subscription_external_id: str,
total_price: int,
+ cancel_at: typing.Optional[int] = OMIT,
+ default_payment_method_id: typing.Optional[str] = OMIT,
interval: typing.Optional[str] = OMIT,
metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
period_end: typing.Optional[int] = OMIT,
period_start: typing.Optional[int] = OMIT,
status: typing.Optional[str] = OMIT,
trial_end: typing.Optional[int] = OMIT,
- trial_end_setting: typing.Optional[str] = OMIT,
+ trial_end_setting: typing.Optional[CreateBillingSubscriptionsRequestBodyTrialEndSetting] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertBillingSubscriptionResponse:
"""
Parameters
----------
+ cancel_at_period_end : bool
+
currency : str
customer_external_id : str
@@ -4675,6 +4960,10 @@ async def upsert_billing_subscription(
total_price : int
+ cancel_at : typing.Optional[int]
+
+ default_payment_method_id : typing.Optional[str]
+
interval : typing.Optional[str]
metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
@@ -4687,7 +4976,7 @@ async def upsert_billing_subscription(
trial_end : typing.Optional[int]
- trial_end_setting : typing.Optional[str]
+ trial_end_setting : typing.Optional[CreateBillingSubscriptionsRequestBodyTrialEndSetting]
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -4715,6 +5004,7 @@ async def upsert_billing_subscription(
async def main() -> None:
await client.billing.upsert_billing_subscription(
+ cancel_at_period_end=True,
currency="currency",
customer_external_id="customer_external_id",
discounts=[
@@ -4738,7 +5028,7 @@ async def main() -> None:
price_external_id="price_external_id",
product_external_id="product_external_id",
quantity=1,
- usage_type="usage_type",
+ usage_type="licensed",
)
],
subscription_external_id="subscription_external_id",
@@ -4752,10 +5042,15 @@ async def main() -> None:
"billing/subscription/upsert",
method="POST",
json={
+ "cancel_at": cancel_at,
+ "cancel_at_period_end": cancel_at_period_end,
"currency": currency,
"customer_external_id": customer_external_id,
+ "default_payment_method_id": default_payment_method_id,
"discounts": convert_and_respect_annotation_metadata(
- object_=discounts, annotation=typing.Sequence[BillingSubscriptionDiscount], direction="write"
+ object_=discounts,
+ annotation=typing.Sequence[BillingSubscriptionDiscount],
+ direction="write",
),
"expired_at": expired_at,
"interval": interval,
@@ -4763,7 +5058,9 @@ async def main() -> None:
"period_end": period_end,
"period_start": period_start,
"product_external_ids": convert_and_respect_annotation_metadata(
- object_=product_external_ids, annotation=typing.Sequence[BillingProductPricing], direction="write"
+ object_=product_external_ids,
+ annotation=typing.Sequence[BillingProductPricing],
+ direction="write",
),
"status": status,
"subscription_external_id": subscription_external_id,
diff --git a/src/schematic/billing/types/__init__.py b/src/schematic/billing/types/__init__.py
index df57ebb..bc8bb7b 100644
--- a/src/schematic/billing/types/__init__.py
+++ b/src/schematic/billing/types/__init__.py
@@ -6,7 +6,12 @@
from .count_billing_products_response_params_price_usage_type import CountBillingProductsResponseParamsPriceUsageType
from .count_customers_params import CountCustomersParams
from .count_customers_response import CountCustomersResponse
+from .create_billing_price_request_body_tier_mode import CreateBillingPriceRequestBodyTierMode
from .create_billing_price_request_body_usage_type import CreateBillingPriceRequestBodyUsageType
+from .create_billing_subscriptions_request_body_trial_end_setting import (
+ CreateBillingSubscriptionsRequestBodyTrialEndSetting,
+)
+from .delete_billing_product_response import DeleteBillingProductResponse
from .delete_product_price_response import DeleteProductPriceResponse
from .list_billing_products_params import ListBillingProductsParams
from .list_billing_products_request_price_usage_type import ListBillingProductsRequestPriceUsageType
@@ -27,7 +32,9 @@
from .list_product_prices_response import ListProductPricesResponse
from .list_product_prices_response_params_price_usage_type import ListProductPricesResponseParamsPriceUsageType
from .search_billing_prices_params import SearchBillingPricesParams
+from .search_billing_prices_request_usage_type import SearchBillingPricesRequestUsageType
from .search_billing_prices_response import SearchBillingPricesResponse
+from .search_billing_prices_response_params_usage_type import SearchBillingPricesResponseParamsUsageType
from .upsert_billing_coupon_response import UpsertBillingCouponResponse
from .upsert_billing_customer_response import UpsertBillingCustomerResponse
from .upsert_billing_meter_response import UpsertBillingMeterResponse
@@ -44,7 +51,10 @@
"CountBillingProductsResponseParamsPriceUsageType",
"CountCustomersParams",
"CountCustomersResponse",
+ "CreateBillingPriceRequestBodyTierMode",
"CreateBillingPriceRequestBodyUsageType",
+ "CreateBillingSubscriptionsRequestBodyTrialEndSetting",
+ "DeleteBillingProductResponse",
"DeleteProductPriceResponse",
"ListBillingProductsParams",
"ListBillingProductsRequestPriceUsageType",
@@ -65,7 +75,9 @@
"ListProductPricesResponse",
"ListProductPricesResponseParamsPriceUsageType",
"SearchBillingPricesParams",
+ "SearchBillingPricesRequestUsageType",
"SearchBillingPricesResponse",
+ "SearchBillingPricesResponseParamsUsageType",
"UpsertBillingCouponResponse",
"UpsertBillingCustomerResponse",
"UpsertBillingMeterResponse",
diff --git a/src/schematic/billing/types/count_billing_products_params.py b/src/schematic/billing/types/count_billing_products_params.py
index 4e53984..2177b07 100644
--- a/src/schematic/billing/types/count_billing_products_params.py
+++ b/src/schematic/billing/types/count_billing_products_params.py
@@ -3,7 +3,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
import pydantic
-from .count_billing_products_response_params_price_usage_type import CountBillingProductsResponseParamsPriceUsageType
+from .count_billing_products_response_params_price_usage_type import (
+ CountBillingProductsResponseParamsPriceUsageType,
+)
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/billing/types/create_billing_price_request_body_tier_mode.py b/src/schematic/billing/types/create_billing_price_request_body_tier_mode.py
new file mode 100644
index 0000000..d32a69b
--- /dev/null
+++ b/src/schematic/billing/types/create_billing_price_request_body_tier_mode.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+CreateBillingPriceRequestBodyTierMode = typing.Union[typing.Literal["volume", "graduated"], typing.Any]
diff --git a/src/schematic/billing/types/create_billing_subscriptions_request_body_trial_end_setting.py b/src/schematic/billing/types/create_billing_subscriptions_request_body_trial_end_setting.py
new file mode 100644
index 0000000..5f1ae49
--- /dev/null
+++ b/src/schematic/billing/types/create_billing_subscriptions_request_body_trial_end_setting.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+CreateBillingSubscriptionsRequestBodyTrialEndSetting = typing.Union[typing.Literal["subscribe", "cancel"], typing.Any]
diff --git a/src/schematic/billing/types/delete_billing_product_response.py b/src/schematic/billing/types/delete_billing_product_response.py
new file mode 100644
index 0000000..7645e04
--- /dev/null
+++ b/src/schematic/billing/types/delete_billing_product_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ...core.pydantic_utilities import UniversalBaseModel
+from ...types.delete_response import DeleteResponse
+import typing
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2
+
+
+class DeleteBillingProductResponse(UniversalBaseModel):
+ data: DeleteResponse
+ params: typing.Dict[str, typing.Optional[typing.Any]] = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/billing/types/list_billing_products_params.py b/src/schematic/billing/types/list_billing_products_params.py
index a644cb3..1cb21e3 100644
--- a/src/schematic/billing/types/list_billing_products_params.py
+++ b/src/schematic/billing/types/list_billing_products_params.py
@@ -3,7 +3,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
import pydantic
-from .list_billing_products_response_params_price_usage_type import ListBillingProductsResponseParamsPriceUsageType
+from .list_billing_products_response_params_price_usage_type import (
+ ListBillingProductsResponseParamsPriceUsageType,
+)
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/billing/types/list_billing_products_response.py b/src/schematic/billing/types/list_billing_products_response.py
index 0af53a4..9146927 100644
--- a/src/schematic/billing/types/list_billing_products_response.py
+++ b/src/schematic/billing/types/list_billing_products_response.py
@@ -2,7 +2,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
-from ...types.billing_product_detail_response_data import BillingProductDetailResponseData
+from ...types.billing_product_detail_response_data import (
+ BillingProductDetailResponseData,
+)
import pydantic
from .list_billing_products_params import ListBillingProductsParams
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/billing/types/list_customers_response.py b/src/schematic/billing/types/list_customers_response.py
index de37d23..6054bff 100644
--- a/src/schematic/billing/types/list_customers_response.py
+++ b/src/schematic/billing/types/list_customers_response.py
@@ -2,7 +2,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
-from ...types.billing_customer_with_subscriptions_response_data import BillingCustomerWithSubscriptionsResponseData
+from ...types.billing_customer_with_subscriptions_response_data import (
+ BillingCustomerWithSubscriptionsResponseData,
+)
import pydantic
from .list_customers_params import ListCustomersParams
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/billing/types/list_payment_methods_params.py b/src/schematic/billing/types/list_payment_methods_params.py
index 7d8b66a..ce449d0 100644
--- a/src/schematic/billing/types/list_payment_methods_params.py
+++ b/src/schematic/billing/types/list_payment_methods_params.py
@@ -23,8 +23,6 @@ class ListPaymentMethodsParams(UniversalBaseModel):
Page offset (default 0)
"""
- subscription_external_id: typing.Optional[str] = None
-
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/schematic/billing/types/list_product_prices_params.py b/src/schematic/billing/types/list_product_prices_params.py
index 304b776..8101a04 100644
--- a/src/schematic/billing/types/list_product_prices_params.py
+++ b/src/schematic/billing/types/list_product_prices_params.py
@@ -3,7 +3,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
import pydantic
-from .list_product_prices_response_params_price_usage_type import ListProductPricesResponseParamsPriceUsageType
+from .list_product_prices_response_params_price_usage_type import (
+ ListProductPricesResponseParamsPriceUsageType,
+)
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/billing/types/search_billing_prices_params.py b/src/schematic/billing/types/search_billing_prices_params.py
index 1ee0a97..1780a83 100644
--- a/src/schematic/billing/types/search_billing_prices_params.py
+++ b/src/schematic/billing/types/search_billing_prices_params.py
@@ -3,6 +3,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
import pydantic
+from .search_billing_prices_response_params_usage_type import (
+ SearchBillingPricesResponseParamsUsageType,
+)
from ...core.pydantic_utilities import IS_PYDANTIC_V2
@@ -25,7 +28,7 @@ class SearchBillingPricesParams(UniversalBaseModel):
price: typing.Optional[int] = None
q: typing.Optional[str] = None
- usage_type: typing.Optional[str] = None
+ usage_type: typing.Optional[SearchBillingPricesResponseParamsUsageType] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/schematic/billing/types/search_billing_prices_request_usage_type.py b/src/schematic/billing/types/search_billing_prices_request_usage_type.py
new file mode 100644
index 0000000..1e63700
--- /dev/null
+++ b/src/schematic/billing/types/search_billing_prices_request_usage_type.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+SearchBillingPricesRequestUsageType = typing.Union[typing.Literal["licensed", "metered"], typing.Any]
diff --git a/src/schematic/billing/types/search_billing_prices_response_params_usage_type.py b/src/schematic/billing/types/search_billing_prices_response_params_usage_type.py
new file mode 100644
index 0000000..50ea3d2
--- /dev/null
+++ b/src/schematic/billing/types/search_billing_prices_response_params_usage_type.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+SearchBillingPricesResponseParamsUsageType = typing.Union[typing.Literal["licensed", "metered"], typing.Any]
diff --git a/src/schematic/checkout/client.py b/src/schematic/checkout/client.py
index 937cb4f..fe35e5b 100644
--- a/src/schematic/checkout/client.py
+++ b/src/schematic/checkout/client.py
@@ -18,7 +18,9 @@
from .types.get_checkout_data_response import GetCheckoutDataResponse
from .types.preview_checkout_internal_response import PreviewCheckoutInternalResponse
import datetime as dt
-from .types.update_customer_subscription_trial_end_response import UpdateCustomerSubscriptionTrialEndResponse
+from .types.update_customer_subscription_trial_end_response import (
+ UpdateCustomerSubscriptionTrialEndResponse,
+)
from ..core.jsonable_encoder import jsonable_encoder
from ..errors.not_found_error import NotFoundError
from ..core.client_wrapper import AsyncClientWrapper
@@ -105,14 +107,18 @@ def internal(
method="POST",
json={
"add_on_ids": convert_and_respect_annotation_metadata(
- object_=add_on_ids, annotation=typing.Sequence[UpdateAddOnRequestBody], direction="write"
+ object_=add_on_ids,
+ annotation=typing.Sequence[UpdateAddOnRequestBody],
+ direction="write",
),
"company_id": company_id,
"coupon_external_id": coupon_external_id,
"new_plan_id": new_plan_id,
"new_price_id": new_price_id,
"pay_in_advance": convert_and_respect_annotation_metadata(
- object_=pay_in_advance, annotation=typing.Sequence[UpdatePayInAdvanceRequestBody], direction="write"
+ object_=pay_in_advance,
+ annotation=typing.Sequence[UpdatePayInAdvanceRequestBody],
+ direction="write",
),
"payment_method_id": payment_method_id,
"promo_code": promo_code,
@@ -348,14 +354,18 @@ def preview_checkout_internal(
method="POST",
json={
"add_on_ids": convert_and_respect_annotation_metadata(
- object_=add_on_ids, annotation=typing.Sequence[UpdateAddOnRequestBody], direction="write"
+ object_=add_on_ids,
+ annotation=typing.Sequence[UpdateAddOnRequestBody],
+ direction="write",
),
"company_id": company_id,
"coupon_external_id": coupon_external_id,
"new_plan_id": new_plan_id,
"new_price_id": new_price_id,
"pay_in_advance": convert_and_respect_annotation_metadata(
- object_=pay_in_advance, annotation=typing.Sequence[UpdatePayInAdvanceRequestBody], direction="write"
+ object_=pay_in_advance,
+ annotation=typing.Sequence[UpdatePayInAdvanceRequestBody],
+ direction="write",
),
"payment_method_id": payment_method_id,
"promo_code": promo_code,
@@ -614,14 +624,18 @@ async def main() -> None:
method="POST",
json={
"add_on_ids": convert_and_respect_annotation_metadata(
- object_=add_on_ids, annotation=typing.Sequence[UpdateAddOnRequestBody], direction="write"
+ object_=add_on_ids,
+ annotation=typing.Sequence[UpdateAddOnRequestBody],
+ direction="write",
),
"company_id": company_id,
"coupon_external_id": coupon_external_id,
"new_plan_id": new_plan_id,
"new_price_id": new_price_id,
"pay_in_advance": convert_and_respect_annotation_metadata(
- object_=pay_in_advance, annotation=typing.Sequence[UpdatePayInAdvanceRequestBody], direction="write"
+ object_=pay_in_advance,
+ annotation=typing.Sequence[UpdatePayInAdvanceRequestBody],
+ direction="write",
),
"payment_method_id": payment_method_id,
"promo_code": promo_code,
@@ -873,14 +887,18 @@ async def main() -> None:
method="POST",
json={
"add_on_ids": convert_and_respect_annotation_metadata(
- object_=add_on_ids, annotation=typing.Sequence[UpdateAddOnRequestBody], direction="write"
+ object_=add_on_ids,
+ annotation=typing.Sequence[UpdateAddOnRequestBody],
+ direction="write",
),
"company_id": company_id,
"coupon_external_id": coupon_external_id,
"new_plan_id": new_plan_id,
"new_price_id": new_price_id,
"pay_in_advance": convert_and_respect_annotation_metadata(
- object_=pay_in_advance, annotation=typing.Sequence[UpdatePayInAdvanceRequestBody], direction="write"
+ object_=pay_in_advance,
+ annotation=typing.Sequence[UpdatePayInAdvanceRequestBody],
+ direction="write",
),
"payment_method_id": payment_method_id,
"promo_code": promo_code,
diff --git a/src/schematic/checkout/types/preview_checkout_internal_response.py b/src/schematic/checkout/types/preview_checkout_internal_response.py
index 967a6c8..ffb57a0 100644
--- a/src/schematic/checkout/types/preview_checkout_internal_response.py
+++ b/src/schematic/checkout/types/preview_checkout_internal_response.py
@@ -1,7 +1,9 @@
# This file was auto-generated by Fern from our API Definition.
from ...core.pydantic_utilities import UniversalBaseModel
-from ...types.preview_subscription_change_response_data import PreviewSubscriptionChangeResponseData
+from ...types.preview_subscription_change_response_data import (
+ PreviewSubscriptionChangeResponseData,
+)
import typing
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/companies/client.py b/src/schematic/companies/client.py
index 51676cd..1867e36 100644
--- a/src/schematic/companies/client.py
+++ b/src/schematic/companies/client.py
@@ -24,32 +24,58 @@
from .types.lookup_company_response import LookupCompanyResponse
from .types.get_active_deals_response import GetActiveDealsResponse
from .types.list_company_memberships_response import ListCompanyMembershipsResponse
-from .types.get_or_create_company_membership_response import GetOrCreateCompanyMembershipResponse
+from .types.get_or_create_company_membership_response import (
+ GetOrCreateCompanyMembershipResponse,
+)
from .types.delete_company_membership_response import DeleteCompanyMembershipResponse
-from .types.get_active_company_subscription_response import GetActiveCompanySubscriptionResponse
+from .types.get_active_company_subscription_response import (
+ GetActiveCompanySubscriptionResponse,
+)
from .types.upsert_company_trait_response import UpsertCompanyTraitResponse
-from .types.list_entity_key_definitions_request_entity_type import ListEntityKeyDefinitionsRequestEntityType
+from .types.list_entity_key_definitions_request_entity_type import (
+ ListEntityKeyDefinitionsRequestEntityType,
+)
from .types.list_entity_key_definitions_response import ListEntityKeyDefinitionsResponse
-from .types.count_entity_key_definitions_request_entity_type import CountEntityKeyDefinitionsRequestEntityType
-from .types.count_entity_key_definitions_response import CountEntityKeyDefinitionsResponse
-from .types.list_entity_trait_definitions_request_entity_type import ListEntityTraitDefinitionsRequestEntityType
-from .types.list_entity_trait_definitions_request_trait_type import ListEntityTraitDefinitionsRequestTraitType
-from .types.list_entity_trait_definitions_response import ListEntityTraitDefinitionsResponse
+from .types.count_entity_key_definitions_request_entity_type import (
+ CountEntityKeyDefinitionsRequestEntityType,
+)
+from .types.count_entity_key_definitions_response import (
+ CountEntityKeyDefinitionsResponse,
+)
+from .types.list_entity_trait_definitions_request_entity_type import (
+ ListEntityTraitDefinitionsRequestEntityType,
+)
+from .types.list_entity_trait_definitions_request_trait_type import (
+ ListEntityTraitDefinitionsRequestTraitType,
+)
+from .types.list_entity_trait_definitions_response import (
+ ListEntityTraitDefinitionsResponse,
+)
from .types.create_entity_trait_definition_request_body_entity_type import (
CreateEntityTraitDefinitionRequestBodyEntityType,
)
from .types.create_entity_trait_definition_request_body_trait_type import (
CreateEntityTraitDefinitionRequestBodyTraitType,
)
-from .types.get_or_create_entity_trait_definition_response import GetOrCreateEntityTraitDefinitionResponse
+from .types.get_or_create_entity_trait_definition_response import (
+ GetOrCreateEntityTraitDefinitionResponse,
+)
from .types.get_entity_trait_definition_response import GetEntityTraitDefinitionResponse
from .types.update_entity_trait_definition_request_body_trait_type import (
UpdateEntityTraitDefinitionRequestBodyTraitType,
)
-from .types.update_entity_trait_definition_response import UpdateEntityTraitDefinitionResponse
-from .types.count_entity_trait_definitions_request_entity_type import CountEntityTraitDefinitionsRequestEntityType
-from .types.count_entity_trait_definitions_request_trait_type import CountEntityTraitDefinitionsRequestTraitType
-from .types.count_entity_trait_definitions_response import CountEntityTraitDefinitionsResponse
+from .types.update_entity_trait_definition_response import (
+ UpdateEntityTraitDefinitionResponse,
+)
+from .types.count_entity_trait_definitions_request_entity_type import (
+ CountEntityTraitDefinitionsRequestEntityType,
+)
+from .types.count_entity_trait_definitions_request_trait_type import (
+ CountEntityTraitDefinitionsRequestTraitType,
+)
+from .types.count_entity_trait_definitions_response import (
+ CountEntityTraitDefinitionsResponse,
+)
from .types.get_entity_trait_values_response import GetEntityTraitValuesResponse
from .types.upsert_user_trait_response import UpsertUserTraitResponse
from .types.list_users_response import ListUsersResponse
@@ -307,7 +333,10 @@ def upsert_company(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_company(
- self, company_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetCompanyResponse:
"""
Parameters
@@ -394,7 +423,10 @@ def get_company(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_company(
- self, company_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteCompanyResponse:
"""
Parameters
@@ -717,7 +749,10 @@ def create_company(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_company_by_keys(
- self, *, keys: typing.Dict[str, str], request_options: typing.Optional[RequestOptions] = None
+ self,
+ *,
+ keys: typing.Dict[str, str],
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteCompanyByKeysResponse:
"""
Parameters
@@ -1111,7 +1146,11 @@ def list_company_memberships(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_or_create_company_membership(
- self, *, company_id: str, user_id: str, request_options: typing.Optional[RequestOptions] = None
+ self,
+ *,
+ company_id: str,
+ user_id: str,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetOrCreateCompanyMembershipResponse:
"""
Parameters
@@ -1208,7 +1247,10 @@ def get_or_create_company_membership(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_company_membership(
- self, company_membership_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_membership_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteCompanyMembershipResponse:
"""
Parameters
@@ -1952,7 +1994,10 @@ def get_or_create_entity_trait_definition(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_entity_trait_definition(
- self, entity_trait_definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ entity_trait_definition_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetEntityTraitDefinitionResponse:
"""
Parameters
@@ -3143,7 +3188,10 @@ def create_user(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_user_by_keys(
- self, *, keys: typing.Dict[str, str], request_options: typing.Optional[RequestOptions] = None
+ self,
+ *,
+ keys: typing.Dict[str, str],
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteUserByKeysResponse:
"""
Parameters
@@ -3583,7 +3631,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_company(
- self, company_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetCompanyResponse:
"""
Parameters
@@ -3678,7 +3729,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_company(
- self, company_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteCompanyResponse:
"""
Parameters
@@ -4025,7 +4079,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_company_by_keys(
- self, *, keys: typing.Dict[str, str], request_options: typing.Optional[RequestOptions] = None
+ self,
+ *,
+ keys: typing.Dict[str, str],
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteCompanyByKeysResponse:
"""
Parameters
@@ -4451,7 +4508,11 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_or_create_company_membership(
- self, *, company_id: str, user_id: str, request_options: typing.Optional[RequestOptions] = None
+ self,
+ *,
+ company_id: str,
+ user_id: str,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetOrCreateCompanyMembershipResponse:
"""
Parameters
@@ -4556,7 +4617,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_company_membership(
- self, company_membership_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_membership_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteCompanyMembershipResponse:
"""
Parameters
@@ -5356,7 +5420,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_entity_trait_definition(
- self, entity_trait_definition_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ entity_trait_definition_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetEntityTraitDefinitionResponse:
"""
Parameters
@@ -6637,7 +6704,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_user_by_keys(
- self, *, keys: typing.Dict[str, str], request_options: typing.Optional[RequestOptions] = None
+ self,
+ *,
+ keys: typing.Dict[str, str],
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteUserByKeysResponse:
"""
Parameters
diff --git a/src/schematic/companies/types/count_entity_key_definitions_params.py b/src/schematic/companies/types/count_entity_key_definitions_params.py
index 33810f4..88df378 100644
--- a/src/schematic/companies/types/count_entity_key_definitions_params.py
+++ b/src/schematic/companies/types/count_entity_key_definitions_params.py
@@ -2,7 +2,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
-from .count_entity_key_definitions_response_params_entity_type import CountEntityKeyDefinitionsResponseParamsEntityType
+from .count_entity_key_definitions_response_params_entity_type import (
+ CountEntityKeyDefinitionsResponseParamsEntityType,
+)
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/companies/types/get_entity_trait_definition_response.py b/src/schematic/companies/types/get_entity_trait_definition_response.py
index 057f58b..626f2d7 100644
--- a/src/schematic/companies/types/get_entity_trait_definition_response.py
+++ b/src/schematic/companies/types/get_entity_trait_definition_response.py
@@ -1,7 +1,9 @@
# This file was auto-generated by Fern from our API Definition.
from ...core.pydantic_utilities import UniversalBaseModel
-from ...types.entity_trait_definition_response_data import EntityTraitDefinitionResponseData
+from ...types.entity_trait_definition_response_data import (
+ EntityTraitDefinitionResponseData,
+)
import typing
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/companies/types/get_or_create_company_membership_response.py b/src/schematic/companies/types/get_or_create_company_membership_response.py
index 996b037..486c4a7 100644
--- a/src/schematic/companies/types/get_or_create_company_membership_response.py
+++ b/src/schematic/companies/types/get_or_create_company_membership_response.py
@@ -1,7 +1,9 @@
# This file was auto-generated by Fern from our API Definition.
from ...core.pydantic_utilities import UniversalBaseModel
-from ...types.company_membership_detail_response_data import CompanyMembershipDetailResponseData
+from ...types.company_membership_detail_response_data import (
+ CompanyMembershipDetailResponseData,
+)
import typing
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/companies/types/get_or_create_entity_trait_definition_response.py b/src/schematic/companies/types/get_or_create_entity_trait_definition_response.py
index f7d0744..710238a 100644
--- a/src/schematic/companies/types/get_or_create_entity_trait_definition_response.py
+++ b/src/schematic/companies/types/get_or_create_entity_trait_definition_response.py
@@ -1,7 +1,9 @@
# This file was auto-generated by Fern from our API Definition.
from ...core.pydantic_utilities import UniversalBaseModel
-from ...types.entity_trait_definition_response_data import EntityTraitDefinitionResponseData
+from ...types.entity_trait_definition_response_data import (
+ EntityTraitDefinitionResponseData,
+)
import typing
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/companies/types/list_company_memberships_response.py b/src/schematic/companies/types/list_company_memberships_response.py
index b0f2ea1..08c82c1 100644
--- a/src/schematic/companies/types/list_company_memberships_response.py
+++ b/src/schematic/companies/types/list_company_memberships_response.py
@@ -2,7 +2,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
-from ...types.company_membership_detail_response_data import CompanyMembershipDetailResponseData
+from ...types.company_membership_detail_response_data import (
+ CompanyMembershipDetailResponseData,
+)
import pydantic
from .list_company_memberships_params import ListCompanyMembershipsParams
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/companies/types/list_entity_key_definitions_params.py b/src/schematic/companies/types/list_entity_key_definitions_params.py
index a5873f6..d3bd830 100644
--- a/src/schematic/companies/types/list_entity_key_definitions_params.py
+++ b/src/schematic/companies/types/list_entity_key_definitions_params.py
@@ -2,7 +2,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
-from .list_entity_key_definitions_response_params_entity_type import ListEntityKeyDefinitionsResponseParamsEntityType
+from .list_entity_key_definitions_response_params_entity_type import (
+ ListEntityKeyDefinitionsResponseParamsEntityType,
+)
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/companies/types/list_entity_trait_definitions_params.py b/src/schematic/companies/types/list_entity_trait_definitions_params.py
index 0e79fc7..4251b68 100644
--- a/src/schematic/companies/types/list_entity_trait_definitions_params.py
+++ b/src/schematic/companies/types/list_entity_trait_definitions_params.py
@@ -6,7 +6,9 @@
ListEntityTraitDefinitionsResponseParamsEntityType,
)
import pydantic
-from .list_entity_trait_definitions_response_params_trait_type import ListEntityTraitDefinitionsResponseParamsTraitType
+from .list_entity_trait_definitions_response_params_trait_type import (
+ ListEntityTraitDefinitionsResponseParamsTraitType,
+)
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/companies/types/list_entity_trait_definitions_response.py b/src/schematic/companies/types/list_entity_trait_definitions_response.py
index 09c2a99..f65b30c 100644
--- a/src/schematic/companies/types/list_entity_trait_definitions_response.py
+++ b/src/schematic/companies/types/list_entity_trait_definitions_response.py
@@ -2,7 +2,9 @@
from ...core.pydantic_utilities import UniversalBaseModel
import typing
-from ...types.entity_trait_definition_response_data import EntityTraitDefinitionResponseData
+from ...types.entity_trait_definition_response_data import (
+ EntityTraitDefinitionResponseData,
+)
import pydantic
from .list_entity_trait_definitions_params import ListEntityTraitDefinitionsParams
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/companies/types/update_entity_trait_definition_response.py b/src/schematic/companies/types/update_entity_trait_definition_response.py
index 4493b05..54cb4d8 100644
--- a/src/schematic/companies/types/update_entity_trait_definition_response.py
+++ b/src/schematic/companies/types/update_entity_trait_definition_response.py
@@ -1,7 +1,9 @@
# This file was auto-generated by Fern from our API Definition.
from ...core.pydantic_utilities import UniversalBaseModel
-from ...types.entity_trait_definition_response_data import EntityTraitDefinitionResponseData
+from ...types.entity_trait_definition_response_data import (
+ EntityTraitDefinitionResponseData,
+)
import typing
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/components/client.py b/src/schematic/components/client.py
index cf6139b..e711da9 100644
--- a/src/schematic/components/client.py
+++ b/src/schematic/components/client.py
@@ -12,12 +12,16 @@
from ..errors.internal_server_error import InternalServerError
from json.decoder import JSONDecodeError
from ..core.api_error import ApiError as core_api_error_ApiError
-from .types.create_component_request_body_entity_type import CreateComponentRequestBodyEntityType
+from .types.create_component_request_body_entity_type import (
+ CreateComponentRequestBodyEntityType,
+)
from .types.create_component_response import CreateComponentResponse
from .types.get_component_response import GetComponentResponse
from ..core.jsonable_encoder import jsonable_encoder
from ..errors.not_found_error import NotFoundError
-from .types.update_component_request_body_entity_type import UpdateComponentRequestBodyEntityType
+from .types.update_component_request_body_entity_type import (
+ UpdateComponentRequestBodyEntityType,
+)
from .types.update_component_request_body_state import UpdateComponentRequestBodyState
from .types.update_component_response import UpdateComponentResponse
from .types.delete_component_response import DeleteComponentResponse
@@ -239,7 +243,10 @@ def create_component(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_component(
- self, component_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ component_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetComponentResponse:
"""
Parameters
@@ -448,7 +455,10 @@ def update_component(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_component(
- self, component_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ component_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteComponentResponse:
"""
Parameters
@@ -955,7 +965,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_component(
- self, component_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ component_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetComponentResponse:
"""
Parameters
@@ -1180,7 +1193,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_component(
- self, component_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ component_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteComponentResponse:
"""
Parameters
diff --git a/src/schematic/core/client_wrapper.py b/src/schematic/core/client_wrapper.py
index 334ec07..9947b8d 100644
--- a/src/schematic/core/client_wrapper.py
+++ b/src/schematic/core/client_wrapper.py
@@ -16,7 +16,7 @@ def get_headers(self) -> typing.Dict[str, str]:
headers: typing.Dict[str, str] = {
"X-Fern-Language": "Python",
"X-Fern-SDK-Name": "schematichq",
- "X-Fern-SDK-Version": "1.0.6",
+ "X-Fern-SDK-Version": "1.0.7",
}
headers["X-Schematic-Api-Key"] = self.api_key
return headers
@@ -30,7 +30,12 @@ def get_timeout(self) -> typing.Optional[float]:
class SyncClientWrapper(BaseClientWrapper):
def __init__(
- self, *, api_key: str, base_url: str, timeout: typing.Optional[float] = None, httpx_client: httpx.Client
+ self,
+ *,
+ api_key: str,
+ base_url: str,
+ timeout: typing.Optional[float] = None,
+ httpx_client: httpx.Client,
):
super().__init__(api_key=api_key, base_url=base_url, timeout=timeout)
self.httpx_client = HttpClient(
@@ -43,7 +48,12 @@ def __init__(
class AsyncClientWrapper(BaseClientWrapper):
def __init__(
- self, *, api_key: str, base_url: str, timeout: typing.Optional[float] = None, httpx_client: httpx.AsyncClient
+ self,
+ *,
+ api_key: str,
+ base_url: str,
+ timeout: typing.Optional[float] = None,
+ httpx_client: httpx.AsyncClient,
):
super().__init__(api_key=api_key, base_url=base_url, timeout=timeout)
self.httpx_client = AsyncHttpClient(
diff --git a/src/schematic/core/file.py b/src/schematic/core/file.py
index 44b0d27..c6d11fc 100644
--- a/src/schematic/core/file.py
+++ b/src/schematic/core/file.py
@@ -58,7 +58,8 @@ def with_content_type(*, file: File, default_content_type: str) -> File:
return (filename, content, out_content_type)
elif len(file) == 4:
filename, content, file_content_type, headers = cast( # type: ignore
- Tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]], file
+ Tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]],
+ file,
)
out_content_type = file_content_type or default_content_type
return (filename, content, out_content_type, headers)
diff --git a/src/schematic/core/pydantic_utilities.py b/src/schematic/core/pydantic_utilities.py
index ca1f479..93a9d78 100644
--- a/src/schematic/core/pydantic_utilities.py
+++ b/src/schematic/core/pydantic_utilities.py
@@ -97,14 +97,18 @@ class Config:
@classmethod
def model_construct(
- cls: typing.Type["Model"], _fields_set: typing.Optional[typing.Set[str]] = None, **values: typing.Any
+ cls: typing.Type["Model"],
+ _fields_set: typing.Optional[typing.Set[str]] = None,
+ **values: typing.Any,
) -> "Model":
dealiased_object = convert_and_respect_annotation_metadata(object_=values, annotation=cls, direction="read")
return cls.construct(_fields_set, **dealiased_object)
@classmethod
def construct(
- cls: typing.Type["Model"], _fields_set: typing.Optional[typing.Set[str]] = None, **values: typing.Any
+ cls: typing.Type["Model"],
+ _fields_set: typing.Optional[typing.Set[str]] = None,
+ **values: typing.Any,
) -> "Model":
dealiased_object = convert_and_respect_annotation_metadata(object_=values, annotation=cls, direction="read")
if IS_PYDANTIC_V2:
diff --git a/src/schematic/crm/client.py b/src/schematic/crm/client.py
index 267e848..2884e1f 100644
--- a/src/schematic/crm/client.py
+++ b/src/schematic/crm/client.py
@@ -3,7 +3,9 @@
import typing
from ..core.client_wrapper import SyncClientWrapper
from ..core.request_options import RequestOptions
-from .types.upsert_deal_line_item_association_response import UpsertDealLineItemAssociationResponse
+from .types.upsert_deal_line_item_association_response import (
+ UpsertDealLineItemAssociationResponse,
+)
from ..core.pydantic_utilities import parse_obj_as
from ..errors.bad_request_error import BadRequestError
from ..types.api_error import ApiError as types_api_error_ApiError
diff --git a/src/schematic/entitlements/client.py b/src/schematic/entitlements/client.py
index 3cc013d..c53a889 100644
--- a/src/schematic/entitlements/client.py
+++ b/src/schematic/entitlements/client.py
@@ -12,9 +12,13 @@
from ..errors.internal_server_error import InternalServerError
from json.decoder import JSONDecodeError
from ..core.api_error import ApiError as core_api_error_ApiError
-from .types.create_company_override_request_body_value_type import CreateCompanyOverrideRequestBodyValueType
+from .types.create_company_override_request_body_value_type import (
+ CreateCompanyOverrideRequestBodyValueType,
+)
import datetime as dt
-from .types.create_company_override_request_body_metric_period import CreateCompanyOverrideRequestBodyMetricPeriod
+from .types.create_company_override_request_body_metric_period import (
+ CreateCompanyOverrideRequestBodyMetricPeriod,
+)
from .types.create_company_override_request_body_metric_period_month_reset import (
CreateCompanyOverrideRequestBodyMetricPeriodMonthReset,
)
@@ -22,8 +26,12 @@
from .types.get_company_override_response import GetCompanyOverrideResponse
from ..core.jsonable_encoder import jsonable_encoder
from ..errors.not_found_error import NotFoundError
-from .types.update_company_override_request_body_value_type import UpdateCompanyOverrideRequestBodyValueType
-from .types.update_company_override_request_body_metric_period import UpdateCompanyOverrideRequestBodyMetricPeriod
+from .types.update_company_override_request_body_value_type import (
+ UpdateCompanyOverrideRequestBodyValueType,
+)
+from .types.update_company_override_request_body_metric_period import (
+ UpdateCompanyOverrideRequestBodyMetricPeriod,
+)
from .types.update_company_override_request_body_metric_period_month_reset import (
UpdateCompanyOverrideRequestBodyMetricPeriodMonthReset,
)
@@ -37,22 +45,32 @@
from .types.list_feature_users_response import ListFeatureUsersResponse
from .types.count_feature_users_response import CountFeatureUsersResponse
from .types.list_plan_entitlements_response import ListPlanEntitlementsResponse
-from .types.create_plan_entitlement_request_body_value_type import CreatePlanEntitlementRequestBodyValueType
-from .types.create_plan_entitlement_request_body_metric_period import CreatePlanEntitlementRequestBodyMetricPeriod
+from .types.create_plan_entitlement_request_body_value_type import (
+ CreatePlanEntitlementRequestBodyValueType,
+)
+from .types.create_plan_entitlement_request_body_metric_period import (
+ CreatePlanEntitlementRequestBodyMetricPeriod,
+)
from .types.create_plan_entitlement_request_body_metric_period_month_reset import (
CreatePlanEntitlementRequestBodyMetricPeriodMonthReset,
)
from .types.create_plan_entitlement_response import CreatePlanEntitlementResponse
from .types.get_plan_entitlement_response import GetPlanEntitlementResponse
-from .types.update_plan_entitlement_request_body_value_type import UpdatePlanEntitlementRequestBodyValueType
-from .types.update_plan_entitlement_request_body_metric_period import UpdatePlanEntitlementRequestBodyMetricPeriod
+from .types.update_plan_entitlement_request_body_value_type import (
+ UpdatePlanEntitlementRequestBodyValueType,
+)
+from .types.update_plan_entitlement_request_body_metric_period import (
+ UpdatePlanEntitlementRequestBodyMetricPeriod,
+)
from .types.update_plan_entitlement_request_body_metric_period_month_reset import (
UpdatePlanEntitlementRequestBodyMetricPeriodMonthReset,
)
from .types.update_plan_entitlement_response import UpdatePlanEntitlementResponse
from .types.delete_plan_entitlement_response import DeletePlanEntitlementResponse
from .types.count_plan_entitlements_response import CountPlanEntitlementsResponse
-from .types.get_feature_usage_by_company_response import GetFeatureUsageByCompanyResponse
+from .types.get_feature_usage_by_company_response import (
+ GetFeatureUsageByCompanyResponse,
+)
from ..core.client_wrapper import AsyncClientWrapper
# this is used as the default value for optional parameters
@@ -325,7 +343,10 @@ def create_company_override(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_company_override(
- self, company_override_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_override_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetCompanyOverrideResponse:
"""
Parameters
@@ -547,7 +568,10 @@ def update_company_override(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_company_override(
- self, company_override_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_override_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteCompanyOverrideResponse:
"""
Parameters
@@ -1561,6 +1585,7 @@ def create_plan_entitlement(
metric_period_month_reset: typing.Optional[CreatePlanEntitlementRequestBodyMetricPeriodMonthReset] = OMIT,
monthly_metered_price_id: typing.Optional[str] = OMIT,
price_behavior: typing.Optional[str] = OMIT,
+ soft_limit: typing.Optional[int] = OMIT,
value_bool: typing.Optional[bool] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
@@ -1584,6 +1609,8 @@ def create_plan_entitlement(
price_behavior : typing.Optional[str]
+ soft_limit : typing.Optional[int]
+
value_bool : typing.Optional[bool]
value_numeric : typing.Optional[int]
@@ -1623,6 +1650,7 @@ def create_plan_entitlement(
"monthly_metered_price_id": monthly_metered_price_id,
"plan_id": plan_id,
"price_behavior": price_behavior,
+ "soft_limit": soft_limit,
"value_bool": value_bool,
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
@@ -1690,7 +1718,10 @@ def create_plan_entitlement(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_plan_entitlement(
- self, plan_entitlement_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ plan_entitlement_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetPlanEntitlementResponse:
"""
Parameters
@@ -1785,6 +1816,7 @@ def update_plan_entitlement(
metric_period_month_reset: typing.Optional[UpdatePlanEntitlementRequestBodyMetricPeriodMonthReset] = OMIT,
monthly_metered_price_id: typing.Optional[str] = OMIT,
price_behavior: typing.Optional[str] = OMIT,
+ soft_limit: typing.Optional[int] = OMIT,
value_bool: typing.Optional[bool] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
@@ -1807,6 +1839,8 @@ def update_plan_entitlement(
price_behavior : typing.Optional[str]
+ soft_limit : typing.Optional[int]
+
value_bool : typing.Optional[bool]
value_numeric : typing.Optional[int]
@@ -1843,6 +1877,7 @@ def update_plan_entitlement(
"metric_period_month_reset": metric_period_month_reset,
"monthly_metered_price_id": monthly_metered_price_id,
"price_behavior": price_behavior,
+ "soft_limit": soft_limit,
"value_bool": value_bool,
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
@@ -1920,7 +1955,10 @@ def update_plan_entitlement(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_plan_entitlement(
- self, plan_entitlement_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ plan_entitlement_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeletePlanEntitlementResponse:
"""
Parameters
@@ -2513,7 +2551,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_company_override(
- self, company_override_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_override_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetCompanyOverrideResponse:
"""
Parameters
@@ -2751,7 +2792,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_company_override(
- self, company_override_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ company_override_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteCompanyOverrideResponse:
"""
Parameters
@@ -3837,6 +3881,7 @@ async def create_plan_entitlement(
metric_period_month_reset: typing.Optional[CreatePlanEntitlementRequestBodyMetricPeriodMonthReset] = OMIT,
monthly_metered_price_id: typing.Optional[str] = OMIT,
price_behavior: typing.Optional[str] = OMIT,
+ soft_limit: typing.Optional[int] = OMIT,
value_bool: typing.Optional[bool] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
@@ -3860,6 +3905,8 @@ async def create_plan_entitlement(
price_behavior : typing.Optional[str]
+ soft_limit : typing.Optional[int]
+
value_bool : typing.Optional[bool]
value_numeric : typing.Optional[int]
@@ -3907,6 +3954,7 @@ async def main() -> None:
"monthly_metered_price_id": monthly_metered_price_id,
"plan_id": plan_id,
"price_behavior": price_behavior,
+ "soft_limit": soft_limit,
"value_bool": value_bool,
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
@@ -3974,7 +4022,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_plan_entitlement(
- self, plan_entitlement_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ plan_entitlement_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetPlanEntitlementResponse:
"""
Parameters
@@ -4077,6 +4128,7 @@ async def update_plan_entitlement(
metric_period_month_reset: typing.Optional[UpdatePlanEntitlementRequestBodyMetricPeriodMonthReset] = OMIT,
monthly_metered_price_id: typing.Optional[str] = OMIT,
price_behavior: typing.Optional[str] = OMIT,
+ soft_limit: typing.Optional[int] = OMIT,
value_bool: typing.Optional[bool] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
@@ -4099,6 +4151,8 @@ async def update_plan_entitlement(
price_behavior : typing.Optional[str]
+ soft_limit : typing.Optional[int]
+
value_bool : typing.Optional[bool]
value_numeric : typing.Optional[int]
@@ -4143,6 +4197,7 @@ async def main() -> None:
"metric_period_month_reset": metric_period_month_reset,
"monthly_metered_price_id": monthly_metered_price_id,
"price_behavior": price_behavior,
+ "soft_limit": soft_limit,
"value_bool": value_bool,
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
@@ -4220,7 +4275,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_plan_entitlement(
- self, plan_entitlement_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ plan_entitlement_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeletePlanEntitlementResponse:
"""
Parameters
diff --git a/src/schematic/entitlements/types/create_company_override_request_body_metric_period.py b/src/schematic/entitlements/types/create_company_override_request_body_metric_period.py
index beda67a..c0b05dc 100644
--- a/src/schematic/entitlements/types/create_company_override_request_body_metric_period.py
+++ b/src/schematic/entitlements/types/create_company_override_request_body_metric_period.py
@@ -3,5 +3,6 @@
import typing
CreateCompanyOverrideRequestBodyMetricPeriod = typing.Union[
- typing.Literal["all_time", "current_month", "current_week", "current_day"], typing.Any
+ typing.Literal["all_time", "current_month", "current_week", "current_day"],
+ typing.Any,
]
diff --git a/src/schematic/entitlements/types/create_plan_entitlement_request_body_metric_period.py b/src/schematic/entitlements/types/create_plan_entitlement_request_body_metric_period.py
index 0bcfcd1..97817df 100644
--- a/src/schematic/entitlements/types/create_plan_entitlement_request_body_metric_period.py
+++ b/src/schematic/entitlements/types/create_plan_entitlement_request_body_metric_period.py
@@ -3,5 +3,6 @@
import typing
CreatePlanEntitlementRequestBodyMetricPeriod = typing.Union[
- typing.Literal["all_time", "current_month", "current_week", "current_day"], typing.Any
+ typing.Literal["all_time", "current_month", "current_week", "current_day"],
+ typing.Any,
]
diff --git a/src/schematic/entitlements/types/update_company_override_request_body_metric_period.py b/src/schematic/entitlements/types/update_company_override_request_body_metric_period.py
index d92b779..fca390a 100644
--- a/src/schematic/entitlements/types/update_company_override_request_body_metric_period.py
+++ b/src/schematic/entitlements/types/update_company_override_request_body_metric_period.py
@@ -3,5 +3,6 @@
import typing
UpdateCompanyOverrideRequestBodyMetricPeriod = typing.Union[
- typing.Literal["all_time", "current_month", "current_week", "current_day"], typing.Any
+ typing.Literal["all_time", "current_month", "current_week", "current_day"],
+ typing.Any,
]
diff --git a/src/schematic/entitlements/types/update_plan_entitlement_request_body_metric_period.py b/src/schematic/entitlements/types/update_plan_entitlement_request_body_metric_period.py
index 53cd841..8604439 100644
--- a/src/schematic/entitlements/types/update_plan_entitlement_request_body_metric_period.py
+++ b/src/schematic/entitlements/types/update_plan_entitlement_request_body_metric_period.py
@@ -3,5 +3,6 @@
import typing
UpdatePlanEntitlementRequestBodyMetricPeriod = typing.Union[
- typing.Literal["all_time", "current_month", "current_week", "current_day"], typing.Any
+ typing.Literal["all_time", "current_month", "current_week", "current_day"],
+ typing.Any,
]
diff --git a/src/schematic/events/client.py b/src/schematic/events/client.py
index 4f3adb4..622a428 100644
--- a/src/schematic/events/client.py
+++ b/src/schematic/events/client.py
@@ -23,7 +23,9 @@
from .types.get_event_response import GetEventResponse
from ..core.jsonable_encoder import jsonable_encoder
from ..errors.not_found_error import NotFoundError
-from .types.get_segment_integration_status_response import GetSegmentIntegrationStatusResponse
+from .types.get_segment_integration_status_response import (
+ GetSegmentIntegrationStatusResponse,
+)
from ..core.client_wrapper import AsyncClientWrapper
# this is used as the default value for optional parameters
@@ -73,7 +75,9 @@ def create_event_batch(
method="POST",
json={
"events": convert_and_respect_annotation_metadata(
- object_=events, annotation=typing.Sequence[CreateEventRequestBody], direction="write"
+ object_=events,
+ annotation=typing.Sequence[CreateEventRequestBody],
+ direction="write",
),
},
headers={
@@ -678,7 +682,9 @@ async def main() -> None:
method="POST",
json={
"events": convert_and_respect_annotation_metadata(
- object_=events, annotation=typing.Sequence[CreateEventRequestBody], direction="write"
+ object_=events,
+ annotation=typing.Sequence[CreateEventRequestBody],
+ direction="write",
),
},
headers={
diff --git a/src/schematic/features/client.py b/src/schematic/features/client.py
index f65b4fe..a26931d 100644
--- a/src/schematic/features/client.py
+++ b/src/schematic/features/client.py
@@ -2,8 +2,12 @@
import typing
from ..core.client_wrapper import SyncClientWrapper
-from ..types.create_or_update_condition_group_request_body import CreateOrUpdateConditionGroupRequestBody
-from ..types.create_or_update_condition_request_body import CreateOrUpdateConditionRequestBody
+from ..types.create_or_update_condition_group_request_body import (
+ CreateOrUpdateConditionGroupRequestBody,
+)
+from ..types.create_or_update_condition_request_body import (
+ CreateOrUpdateConditionRequestBody,
+)
from ..core.request_options import RequestOptions
from .types.count_audience_companies_response import CountAudienceCompaniesResponse
from ..core.serialization import convert_and_respect_annotation_metadata
@@ -19,13 +23,17 @@
from .types.list_audience_companies_response import ListAudienceCompaniesResponse
from .types.list_audience_users_response import ListAudienceUsersResponse
from .types.list_features_response import ListFeaturesResponse
-from .types.create_feature_request_body_feature_type import CreateFeatureRequestBodyFeatureType
+from .types.create_feature_request_body_feature_type import (
+ CreateFeatureRequestBodyFeatureType,
+)
from ..types.create_or_update_flag_request_body import CreateOrUpdateFlagRequestBody
from .types.create_feature_response import CreateFeatureResponse
from .types.get_feature_response import GetFeatureResponse
from ..core.jsonable_encoder import jsonable_encoder
from ..errors.not_found_error import NotFoundError
-from .types.update_feature_request_body_feature_type import UpdateFeatureRequestBodyFeatureType
+from .types.update_feature_request_body_feature_type import (
+ UpdateFeatureRequestBodyFeatureType,
+)
from .types.update_feature_response import UpdateFeatureResponse
from .types.delete_feature_response import DeleteFeatureResponse
from .types.count_features_response import CountFeaturesResponse
@@ -734,6 +742,8 @@ def create_feature(
icon: typing.Optional[str] = OMIT,
lifecycle_phase: typing.Optional[str] = OMIT,
maintainer_id: typing.Optional[str] = OMIT,
+ plural_name: typing.Optional[str] = OMIT,
+ singular_name: typing.Optional[str] = OMIT,
trait_id: typing.Optional[str] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> CreateFeatureResponse:
@@ -756,6 +766,10 @@ def create_feature(
maintainer_id : typing.Optional[str]
+ plural_name : typing.Optional[str]
+
+ singular_name : typing.Optional[str]
+
trait_id : typing.Optional[str]
request_options : typing.Optional[RequestOptions]
@@ -787,12 +801,16 @@ def create_feature(
"event_subtype": event_subtype,
"feature_type": feature_type,
"flag": convert_and_respect_annotation_metadata(
- object_=flag, annotation=CreateOrUpdateFlagRequestBody, direction="write"
+ object_=flag,
+ annotation=CreateOrUpdateFlagRequestBody,
+ direction="write",
),
"icon": icon,
"lifecycle_phase": lifecycle_phase,
"maintainer_id": maintainer_id,
"name": name,
+ "plural_name": plural_name,
+ "singular_name": singular_name,
"trait_id": trait_id,
},
headers={
@@ -856,7 +874,10 @@ def create_feature(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_feature(
- self, feature_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ feature_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetFeatureResponse:
"""
Parameters
@@ -954,6 +975,8 @@ def update_feature(
lifecycle_phase: typing.Optional[str] = OMIT,
maintainer_id: typing.Optional[str] = OMIT,
name: typing.Optional[str] = OMIT,
+ plural_name: typing.Optional[str] = OMIT,
+ singular_name: typing.Optional[str] = OMIT,
trait_id: typing.Optional[str] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpdateFeatureResponse:
@@ -979,6 +1002,10 @@ def update_feature(
name : typing.Optional[str]
+ plural_name : typing.Optional[str]
+
+ singular_name : typing.Optional[str]
+
trait_id : typing.Optional[str]
request_options : typing.Optional[RequestOptions]
@@ -1008,12 +1035,16 @@ def update_feature(
"event_subtype": event_subtype,
"feature_type": feature_type,
"flag": convert_and_respect_annotation_metadata(
- object_=flag, annotation=CreateOrUpdateFlagRequestBody, direction="write"
+ object_=flag,
+ annotation=CreateOrUpdateFlagRequestBody,
+ direction="write",
),
"icon": icon,
"lifecycle_phase": lifecycle_phase,
"maintainer_id": maintainer_id,
"name": name,
+ "plural_name": plural_name,
+ "singular_name": singular_name,
"trait_id": trait_id,
},
headers={
@@ -1087,7 +1118,10 @@ def update_feature(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_feature(
- self, feature_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ feature_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteFeatureResponse:
"""
Parameters
@@ -1893,7 +1927,9 @@ def update_flag_rules(
method="PUT",
json={
"rules": convert_and_respect_annotation_metadata(
- object_=rules, annotation=typing.Sequence[CreateOrUpdateRuleRequestBody], direction="write"
+ object_=rules,
+ annotation=typing.Sequence[CreateOrUpdateRuleRequestBody],
+ direction="write",
),
},
headers={
@@ -3000,6 +3036,8 @@ async def create_feature(
icon: typing.Optional[str] = OMIT,
lifecycle_phase: typing.Optional[str] = OMIT,
maintainer_id: typing.Optional[str] = OMIT,
+ plural_name: typing.Optional[str] = OMIT,
+ singular_name: typing.Optional[str] = OMIT,
trait_id: typing.Optional[str] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> CreateFeatureResponse:
@@ -3022,6 +3060,10 @@ async def create_feature(
maintainer_id : typing.Optional[str]
+ plural_name : typing.Optional[str]
+
+ singular_name : typing.Optional[str]
+
trait_id : typing.Optional[str]
request_options : typing.Optional[RequestOptions]
@@ -3061,12 +3103,16 @@ async def main() -> None:
"event_subtype": event_subtype,
"feature_type": feature_type,
"flag": convert_and_respect_annotation_metadata(
- object_=flag, annotation=CreateOrUpdateFlagRequestBody, direction="write"
+ object_=flag,
+ annotation=CreateOrUpdateFlagRequestBody,
+ direction="write",
),
"icon": icon,
"lifecycle_phase": lifecycle_phase,
"maintainer_id": maintainer_id,
"name": name,
+ "plural_name": plural_name,
+ "singular_name": singular_name,
"trait_id": trait_id,
},
headers={
@@ -3130,7 +3176,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_feature(
- self, feature_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ feature_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetFeatureResponse:
"""
Parameters
@@ -3236,6 +3285,8 @@ async def update_feature(
lifecycle_phase: typing.Optional[str] = OMIT,
maintainer_id: typing.Optional[str] = OMIT,
name: typing.Optional[str] = OMIT,
+ plural_name: typing.Optional[str] = OMIT,
+ singular_name: typing.Optional[str] = OMIT,
trait_id: typing.Optional[str] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpdateFeatureResponse:
@@ -3261,6 +3312,10 @@ async def update_feature(
name : typing.Optional[str]
+ plural_name : typing.Optional[str]
+
+ singular_name : typing.Optional[str]
+
trait_id : typing.Optional[str]
request_options : typing.Optional[RequestOptions]
@@ -3298,12 +3353,16 @@ async def main() -> None:
"event_subtype": event_subtype,
"feature_type": feature_type,
"flag": convert_and_respect_annotation_metadata(
- object_=flag, annotation=CreateOrUpdateFlagRequestBody, direction="write"
+ object_=flag,
+ annotation=CreateOrUpdateFlagRequestBody,
+ direction="write",
),
"icon": icon,
"lifecycle_phase": lifecycle_phase,
"maintainer_id": maintainer_id,
"name": name,
+ "plural_name": plural_name,
+ "singular_name": singular_name,
"trait_id": trait_id,
},
headers={
@@ -3377,7 +3436,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_feature(
- self, feature_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ feature_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteFeatureResponse:
"""
Parameters
@@ -4249,7 +4311,9 @@ async def main() -> None:
method="PUT",
json={
"rules": convert_and_respect_annotation_metadata(
- object_=rules, annotation=typing.Sequence[CreateOrUpdateRuleRequestBody], direction="write"
+ object_=rules,
+ annotation=typing.Sequence[CreateOrUpdateRuleRequestBody],
+ direction="write",
),
},
headers={
diff --git a/src/schematic/plangroups/client.py b/src/schematic/plangroups/client.py
index 1ee1d3b..d49296a 100644
--- a/src/schematic/plangroups/client.py
+++ b/src/schematic/plangroups/client.py
@@ -12,6 +12,7 @@
from ..errors.internal_server_error import InternalServerError
from json.decoder import JSONDecodeError
from ..core.api_error import ApiError as core_api_error_ApiError
+from ..types.ordered_plans_in_group import OrderedPlansInGroup
from ..types.custom_plan_config import CustomPlanConfig
from .types.create_plan_group_response import CreatePlanGroupResponse
from ..core.serialization import convert_and_respect_annotation_metadata
@@ -112,7 +113,7 @@ def create_plan_group(
self,
*,
add_on_ids: typing.Sequence[str],
- plan_ids: typing.Sequence[str],
+ ordered_plans: typing.Sequence[OrderedPlansInGroup],
custom_plan_config: typing.Optional[CustomPlanConfig] = OMIT,
custom_plan_id: typing.Optional[str] = OMIT,
default_plan_id: typing.Optional[str] = OMIT,
@@ -125,7 +126,7 @@ def create_plan_group(
----------
add_on_ids : typing.Sequence[str]
- plan_ids : typing.Sequence[str]
+ ordered_plans : typing.Sequence[OrderedPlansInGroup]
custom_plan_config : typing.Optional[CustomPlanConfig]
@@ -147,14 +148,18 @@ def create_plan_group(
Examples
--------
- from schematic import Schematic
+ from schematic import OrderedPlansInGroup, Schematic
client = Schematic(
api_key="YOUR_API_KEY",
)
client.plangroups.create_plan_group(
add_on_ids=["add_on_ids"],
- plan_ids=["plan_ids"],
+ ordered_plans=[
+ OrderedPlansInGroup(
+ plan_id="plan_id",
+ )
+ ],
)
"""
_response = self._client_wrapper.httpx_client.request(
@@ -163,11 +168,17 @@ def create_plan_group(
json={
"add_on_ids": add_on_ids,
"custom_plan_config": convert_and_respect_annotation_metadata(
- object_=custom_plan_config, annotation=CustomPlanConfig, direction="write"
+ object_=custom_plan_config,
+ annotation=CustomPlanConfig,
+ direction="write",
),
"custom_plan_id": custom_plan_id,
"default_plan_id": default_plan_id,
- "plan_ids": plan_ids,
+ "ordered_plans": convert_and_respect_annotation_metadata(
+ object_=ordered_plans,
+ annotation=typing.Sequence[OrderedPlansInGroup],
+ direction="write",
+ ),
"trial_days": trial_days,
"trial_payment_method_required": trial_payment_method_required,
},
@@ -236,7 +247,7 @@ def update_plan_group(
plan_group_id: str,
*,
add_on_ids: typing.Sequence[str],
- plan_ids: typing.Sequence[str],
+ ordered_plans: typing.Sequence[OrderedPlansInGroup],
custom_plan_config: typing.Optional[CustomPlanConfig] = OMIT,
custom_plan_id: typing.Optional[str] = OMIT,
default_plan_id: typing.Optional[str] = OMIT,
@@ -252,7 +263,7 @@ def update_plan_group(
add_on_ids : typing.Sequence[str]
- plan_ids : typing.Sequence[str]
+ ordered_plans : typing.Sequence[OrderedPlansInGroup]
custom_plan_config : typing.Optional[CustomPlanConfig]
@@ -274,7 +285,7 @@ def update_plan_group(
Examples
--------
- from schematic import Schematic
+ from schematic import OrderedPlansInGroup, Schematic
client = Schematic(
api_key="YOUR_API_KEY",
@@ -282,7 +293,11 @@ def update_plan_group(
client.plangroups.update_plan_group(
plan_group_id="plan_group_id",
add_on_ids=["add_on_ids"],
- plan_ids=["plan_ids"],
+ ordered_plans=[
+ OrderedPlansInGroup(
+ plan_id="plan_id",
+ )
+ ],
)
"""
_response = self._client_wrapper.httpx_client.request(
@@ -291,11 +306,17 @@ def update_plan_group(
json={
"add_on_ids": add_on_ids,
"custom_plan_config": convert_and_respect_annotation_metadata(
- object_=custom_plan_config, annotation=CustomPlanConfig, direction="write"
+ object_=custom_plan_config,
+ annotation=CustomPlanConfig,
+ direction="write",
),
"custom_plan_id": custom_plan_id,
"default_plan_id": default_plan_id,
- "plan_ids": plan_ids,
+ "ordered_plans": convert_and_respect_annotation_metadata(
+ object_=ordered_plans,
+ annotation=typing.Sequence[OrderedPlansInGroup],
+ direction="write",
+ ),
"trial_days": trial_days,
"trial_payment_method_required": trial_payment_method_required,
},
@@ -466,7 +487,7 @@ async def create_plan_group(
self,
*,
add_on_ids: typing.Sequence[str],
- plan_ids: typing.Sequence[str],
+ ordered_plans: typing.Sequence[OrderedPlansInGroup],
custom_plan_config: typing.Optional[CustomPlanConfig] = OMIT,
custom_plan_id: typing.Optional[str] = OMIT,
default_plan_id: typing.Optional[str] = OMIT,
@@ -479,7 +500,7 @@ async def create_plan_group(
----------
add_on_ids : typing.Sequence[str]
- plan_ids : typing.Sequence[str]
+ ordered_plans : typing.Sequence[OrderedPlansInGroup]
custom_plan_config : typing.Optional[CustomPlanConfig]
@@ -503,7 +524,7 @@ async def create_plan_group(
--------
import asyncio
- from schematic import AsyncSchematic
+ from schematic import AsyncSchematic, OrderedPlansInGroup
client = AsyncSchematic(
api_key="YOUR_API_KEY",
@@ -513,7 +534,11 @@ async def create_plan_group(
async def main() -> None:
await client.plangroups.create_plan_group(
add_on_ids=["add_on_ids"],
- plan_ids=["plan_ids"],
+ ordered_plans=[
+ OrderedPlansInGroup(
+ plan_id="plan_id",
+ )
+ ],
)
@@ -525,11 +550,17 @@ async def main() -> None:
json={
"add_on_ids": add_on_ids,
"custom_plan_config": convert_and_respect_annotation_metadata(
- object_=custom_plan_config, annotation=CustomPlanConfig, direction="write"
+ object_=custom_plan_config,
+ annotation=CustomPlanConfig,
+ direction="write",
),
"custom_plan_id": custom_plan_id,
"default_plan_id": default_plan_id,
- "plan_ids": plan_ids,
+ "ordered_plans": convert_and_respect_annotation_metadata(
+ object_=ordered_plans,
+ annotation=typing.Sequence[OrderedPlansInGroup],
+ direction="write",
+ ),
"trial_days": trial_days,
"trial_payment_method_required": trial_payment_method_required,
},
@@ -598,7 +629,7 @@ async def update_plan_group(
plan_group_id: str,
*,
add_on_ids: typing.Sequence[str],
- plan_ids: typing.Sequence[str],
+ ordered_plans: typing.Sequence[OrderedPlansInGroup],
custom_plan_config: typing.Optional[CustomPlanConfig] = OMIT,
custom_plan_id: typing.Optional[str] = OMIT,
default_plan_id: typing.Optional[str] = OMIT,
@@ -614,7 +645,7 @@ async def update_plan_group(
add_on_ids : typing.Sequence[str]
- plan_ids : typing.Sequence[str]
+ ordered_plans : typing.Sequence[OrderedPlansInGroup]
custom_plan_config : typing.Optional[CustomPlanConfig]
@@ -638,7 +669,7 @@ async def update_plan_group(
--------
import asyncio
- from schematic import AsyncSchematic
+ from schematic import AsyncSchematic, OrderedPlansInGroup
client = AsyncSchematic(
api_key="YOUR_API_KEY",
@@ -649,7 +680,11 @@ async def main() -> None:
await client.plangroups.update_plan_group(
plan_group_id="plan_group_id",
add_on_ids=["add_on_ids"],
- plan_ids=["plan_ids"],
+ ordered_plans=[
+ OrderedPlansInGroup(
+ plan_id="plan_id",
+ )
+ ],
)
@@ -661,11 +696,17 @@ async def main() -> None:
json={
"add_on_ids": add_on_ids,
"custom_plan_config": convert_and_respect_annotation_metadata(
- object_=custom_plan_config, annotation=CustomPlanConfig, direction="write"
+ object_=custom_plan_config,
+ annotation=CustomPlanConfig,
+ direction="write",
),
"custom_plan_id": custom_plan_id,
"default_plan_id": default_plan_id,
- "plan_ids": plan_ids,
+ "ordered_plans": convert_and_respect_annotation_metadata(
+ object_=ordered_plans,
+ annotation=typing.Sequence[OrderedPlansInGroup],
+ direction="write",
+ ),
"trial_days": trial_days,
"trial_payment_method_required": trial_payment_method_required,
},
diff --git a/src/schematic/plans/client.py b/src/schematic/plans/client.py
index 3861550..3554859 100644
--- a/src/schematic/plans/client.py
+++ b/src/schematic/plans/client.py
@@ -15,8 +15,12 @@
from json.decoder import JSONDecodeError
from ..core.api_error import ApiError as core_api_error_ApiError
from .types.get_audience_response import GetAudienceResponse
-from ..types.create_or_update_condition_group_request_body import CreateOrUpdateConditionGroupRequestBody
-from ..types.create_or_update_condition_request_body import CreateOrUpdateConditionRequestBody
+from ..types.create_or_update_condition_group_request_body import (
+ CreateOrUpdateConditionGroupRequestBody,
+)
+from ..types.create_or_update_condition_request_body import (
+ CreateOrUpdateConditionRequestBody,
+)
from .types.update_audience_response import UpdateAudienceResponse
from ..core.serialization import convert_and_respect_annotation_metadata
from .types.delete_audience_response import DeleteAudienceResponse
@@ -156,7 +160,10 @@ def update_company_plans(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_audience(
- self, plan_audience_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ plan_audience_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetAudienceResponse:
"""
Parameters
@@ -387,7 +394,10 @@ def update_audience(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_audience(
- self, plan_audience_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ plan_audience_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteAudienceResponse:
"""
Parameters
@@ -1401,7 +1411,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_audience(
- self, plan_audience_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ plan_audience_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetAudienceResponse:
"""
Parameters
@@ -1648,7 +1661,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_audience(
- self, plan_audience_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ plan_audience_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteAudienceResponse:
"""
Parameters
diff --git a/src/schematic/types/__init__.py b/src/schematic/types/__init__.py
index 47b5c17..4b8c7c3 100644
--- a/src/schematic/types/__init__.py
+++ b/src/schematic/types/__init__.py
@@ -18,6 +18,7 @@
from .billing_product_plan_response_data import BillingProductPlanResponseData
from .billing_product_price_response_data import BillingProductPriceResponseData
from .billing_product_pricing import BillingProductPricing
+from .billing_product_pricing_usage_type import BillingProductPricingUsageType
from .billing_product_response_data import BillingProductResponseData
from .billing_subscription_discount import BillingSubscriptionDiscount
from .billing_subscription_discount_view import BillingSubscriptionDiscountView
@@ -45,6 +46,7 @@
from .component_response_data import ComponentResponseData
from .count_response import CountResponse
from .coupon_request_body import CouponRequestBody
+from .create_billing_price_tier_request_body import CreateBillingPriceTierRequestBody
from .create_entitlement_req_common import CreateEntitlementReqCommon
from .create_entitlement_req_common_metric_period import CreateEntitlementReqCommonMetricPeriod
from .create_entitlement_req_common_metric_period_month_reset import CreateEntitlementReqCommonMetricPeriodMonthReset
@@ -71,6 +73,7 @@
from .custom_plan_view_config_response_data import CustomPlanViewConfigResponseData
from .decimal import Decimal
from .delete_response import DeleteResponse
+from .entitlements_in_plan import EntitlementsInPlan
from .entity_key_definition_response_data import EntityKeyDefinitionResponseData
from .entity_key_detail_response_data import EntityKeyDetailResponseData
from .entity_key_response_data import EntityKeyResponseData
@@ -105,6 +108,7 @@
from .issue_temporary_access_token_response_data import IssueTemporaryAccessTokenResponseData
from .keys_request_body import KeysRequestBody
from .meter_request_body import MeterRequestBody
+from .ordered_plans_in_group import OrderedPlansInGroup
from .pagination_filter import PaginationFilter
from .payment_method_request_body import PaymentMethodRequestBody
from .payment_method_response_data import PaymentMethodResponseData
@@ -112,8 +116,10 @@
from .plan_audience_response_data import PlanAudienceResponseData
from .plan_detail_response_data import PlanDetailResponseData
from .plan_entitlement_response_data import PlanEntitlementResponseData
+from .plan_entitlements_order import PlanEntitlementsOrder
from .plan_group_detail_response_data import PlanGroupDetailResponseData
from .plan_group_plan_detail_response_data import PlanGroupPlanDetailResponseData
+from .plan_group_plan_entitlements_order import PlanGroupPlanEntitlementsOrder
from .plan_group_response_data import PlanGroupResponseData
from .plan_response_data import PlanResponseData
from .preview_object import PreviewObject
@@ -169,6 +175,7 @@
"BillingProductPlanResponseData",
"BillingProductPriceResponseData",
"BillingProductPricing",
+ "BillingProductPricingUsageType",
"BillingProductResponseData",
"BillingSubscriptionDiscount",
"BillingSubscriptionDiscountView",
@@ -196,6 +203,7 @@
"ComponentResponseData",
"CountResponse",
"CouponRequestBody",
+ "CreateBillingPriceTierRequestBody",
"CreateEntitlementReqCommon",
"CreateEntitlementReqCommonMetricPeriod",
"CreateEntitlementReqCommonMetricPeriodMonthReset",
@@ -220,6 +228,7 @@
"CustomPlanViewConfigResponseData",
"Decimal",
"DeleteResponse",
+ "EntitlementsInPlan",
"EntityKeyDefinitionResponseData",
"EntityKeyDetailResponseData",
"EntityKeyResponseData",
@@ -254,6 +263,7 @@
"IssueTemporaryAccessTokenResponseData",
"KeysRequestBody",
"MeterRequestBody",
+ "OrderedPlansInGroup",
"PaginationFilter",
"PaymentMethodRequestBody",
"PaymentMethodResponseData",
@@ -261,8 +271,10 @@
"PlanAudienceResponseData",
"PlanDetailResponseData",
"PlanEntitlementResponseData",
+ "PlanEntitlementsOrder",
"PlanGroupDetailResponseData",
"PlanGroupPlanDetailResponseData",
+ "PlanGroupPlanEntitlementsOrder",
"PlanGroupResponseData",
"PlanResponseData",
"PreviewObject",
diff --git a/src/schematic/types/audience_request_body.py b/src/schematic/types/audience_request_body.py
index 05f3c37..99e3ab6 100644
--- a/src/schematic/types/audience_request_body.py
+++ b/src/schematic/types/audience_request_body.py
@@ -2,7 +2,9 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .create_or_update_condition_group_request_body import CreateOrUpdateConditionGroupRequestBody
+from .create_or_update_condition_group_request_body import (
+ CreateOrUpdateConditionGroupRequestBody,
+)
from .create_or_update_condition_request_body import CreateOrUpdateConditionRequestBody
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/types/billing_product_detail_response_data.py b/src/schematic/types/billing_product_detail_response_data.py
index 0cbfad1..91068cb 100644
--- a/src/schematic/types/billing_product_detail_response_data.py
+++ b/src/schematic/types/billing_product_detail_response_data.py
@@ -19,6 +19,7 @@ class BillingProductDetailResponseData(UniversalBaseModel):
prices: typing.List[BillingPriceResponseData]
product_id: str
quantity: float
+ subscription_count: int
updated_at: dt.datetime
if IS_PYDANTIC_V2:
diff --git a/src/schematic/types/billing_product_pricing.py b/src/schematic/types/billing_product_pricing.py
index 17810f9..6106864 100644
--- a/src/schematic/types/billing_product_pricing.py
+++ b/src/schematic/types/billing_product_pricing.py
@@ -2,6 +2,7 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .billing_product_pricing_usage_type import BillingProductPricingUsageType
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
@@ -14,7 +15,7 @@ class BillingProductPricing(UniversalBaseModel):
price_external_id: str
product_external_id: str
quantity: int
- usage_type: str
+ usage_type: BillingProductPricingUsageType
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/schematic/types/billing_product_pricing_usage_type.py b/src/schematic/types/billing_product_pricing_usage_type.py
new file mode 100644
index 0000000..b8ddd6b
--- /dev/null
+++ b/src/schematic/types/billing_product_pricing_usage_type.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+BillingProductPricingUsageType = typing.Union[typing.Literal["licensed", "metered"], typing.Any]
diff --git a/src/schematic/types/billing_subscription_response_data.py b/src/schematic/types/billing_subscription_response_data.py
index 1959417..8b2551f 100644
--- a/src/schematic/types/billing_subscription_response_data.py
+++ b/src/schematic/types/billing_subscription_response_data.py
@@ -8,10 +8,13 @@
class BillingSubscriptionResponseData(UniversalBaseModel):
+ cancel_at: typing.Optional[int] = None
+ cancel_at_period_end: bool
company_id: typing.Optional[str] = None
created_at: dt.datetime
currency: str
customer_external_id: str
+ default_payment_method_id: typing.Optional[str] = None
expired_at: typing.Optional[dt.datetime] = None
id: str
interval: str
diff --git a/src/schematic/types/billing_subscription_view.py b/src/schematic/types/billing_subscription_view.py
index 8ecbf73..8817f4b 100644
--- a/src/schematic/types/billing_subscription_view.py
+++ b/src/schematic/types/billing_subscription_view.py
@@ -6,7 +6,9 @@
from .billing_subscription_discount_view import BillingSubscriptionDiscountView
from .invoice_response_data import InvoiceResponseData
from .payment_method_response_data import PaymentMethodResponseData
-from .billing_product_for_subscription_response_data import BillingProductForSubscriptionResponseData
+from .billing_product_for_subscription_response_data import (
+ BillingProductForSubscriptionResponseData,
+)
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
@@ -16,10 +18,13 @@ class BillingSubscriptionView(UniversalBaseModel):
The updated resource
"""
+ cancel_at: typing.Optional[int] = None
+ cancel_at_period_end: bool
company_id: typing.Optional[str] = None
created_at: dt.datetime
currency: str
customer_external_id: str
+ default_payment_method_id: typing.Optional[str] = None
discounts: typing.List[BillingSubscriptionDiscountView]
expired_at: typing.Optional[dt.datetime] = None
id: str
diff --git a/src/schematic/types/company_detail_response_data.py b/src/schematic/types/company_detail_response_data.py
index f4abdca..2dc3694 100644
--- a/src/schematic/types/company_detail_response_data.py
+++ b/src/schematic/types/company_detail_response_data.py
@@ -7,7 +7,10 @@
import datetime as dt
from .entity_trait_detail_response_data import EntityTraitDetailResponseData
from .entity_key_detail_response_data import EntityKeyDetailResponseData
-from .company_event_period_metrics_response_data import CompanyEventPeriodMetricsResponseData
+from .company_event_period_metrics_response_data import (
+ CompanyEventPeriodMetricsResponseData,
+)
+from .payment_method_response_data import PaymentMethodResponseData
from .generic_preview_object import GenericPreviewObject
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -26,6 +29,7 @@ class CompanyDetailResponseData(UniversalBaseModel):
logo_url: typing.Optional[str] = None
metrics: typing.List[CompanyEventPeriodMetricsResponseData]
name: str
+ payment_methods: typing.List[PaymentMethodResponseData]
plan: typing.Optional[CompanyPlanWithBillingSubView] = None
plans: typing.List[GenericPreviewObject]
traits: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
diff --git a/src/schematic/types/company_subscription_response_data.py b/src/schematic/types/company_subscription_response_data.py
index 3892aa1..39d9bc0 100644
--- a/src/schematic/types/company_subscription_response_data.py
+++ b/src/schematic/types/company_subscription_response_data.py
@@ -2,16 +2,20 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .billing_subscription_discount_view import BillingSubscriptionDiscountView
import datetime as dt
+from .billing_subscription_discount_view import BillingSubscriptionDiscountView
from .invoice_response_data import InvoiceResponseData
from .payment_method_response_data import PaymentMethodResponseData
-from .billing_product_for_subscription_response_data import BillingProductForSubscriptionResponseData
+from .billing_product_for_subscription_response_data import (
+ BillingProductForSubscriptionResponseData,
+)
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
class CompanySubscriptionResponseData(UniversalBaseModel):
+ cancel_at: typing.Optional[dt.datetime] = None
+ cancel_at_period_end: bool
currency: str
customer_external_id: str
discounts: typing.List[BillingSubscriptionDiscountView]
diff --git a/src/schematic/types/component_capabilities.py b/src/schematic/types/component_capabilities.py
index a3011e1..a830c7e 100644
--- a/src/schematic/types/component_capabilities.py
+++ b/src/schematic/types/component_capabilities.py
@@ -7,6 +7,7 @@
class ComponentCapabilities(UniversalBaseModel):
+ badge_visibility: bool
checkout: bool
if IS_PYDANTIC_V2:
diff --git a/src/schematic/types/create_billing_price_tier_request_body.py b/src/schematic/types/create_billing_price_tier_request_body.py
new file mode 100644
index 0000000..484c732
--- /dev/null
+++ b/src/schematic/types/create_billing_price_tier_request_body.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import pydantic
+
+
+class CreateBillingPriceTierRequestBody(UniversalBaseModel):
+ flat_amount: typing.Optional[int] = None
+ per_unit_price: typing.Optional[int] = None
+ price_external_id: str
+ up_to: typing.Optional[int] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/create_entitlement_req_common.py b/src/schematic/types/create_entitlement_req_common.py
index e4699c4..8a7daa3 100644
--- a/src/schematic/types/create_entitlement_req_common.py
+++ b/src/schematic/types/create_entitlement_req_common.py
@@ -2,9 +2,15 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .create_entitlement_req_common_metric_period import CreateEntitlementReqCommonMetricPeriod
-from .create_entitlement_req_common_metric_period_month_reset import CreateEntitlementReqCommonMetricPeriodMonthReset
-from .create_entitlement_req_common_value_type import CreateEntitlementReqCommonValueType
+from .create_entitlement_req_common_metric_period import (
+ CreateEntitlementReqCommonMetricPeriod,
+)
+from .create_entitlement_req_common_metric_period_month_reset import (
+ CreateEntitlementReqCommonMetricPeriodMonthReset,
+)
+from .create_entitlement_req_common_value_type import (
+ CreateEntitlementReqCommonValueType,
+)
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
diff --git a/src/schematic/types/create_entitlement_req_common_metric_period.py b/src/schematic/types/create_entitlement_req_common_metric_period.py
index 87bd1ac..27bb8c1 100644
--- a/src/schematic/types/create_entitlement_req_common_metric_period.py
+++ b/src/schematic/types/create_entitlement_req_common_metric_period.py
@@ -3,5 +3,6 @@
import typing
CreateEntitlementReqCommonMetricPeriod = typing.Union[
- typing.Literal["all_time", "current_month", "current_week", "current_day"], typing.Any
+ typing.Literal["all_time", "current_month", "current_week", "current_day"],
+ typing.Any,
]
diff --git a/src/schematic/types/create_or_update_condition_request_body.py b/src/schematic/types/create_or_update_condition_request_body.py
index f8c58cf..4f0a477 100644
--- a/src/schematic/types/create_or_update_condition_request_body.py
+++ b/src/schematic/types/create_or_update_condition_request_body.py
@@ -3,12 +3,18 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
import pydantic
-from .create_or_update_condition_request_body_condition_type import CreateOrUpdateConditionRequestBodyConditionType
-from .create_or_update_condition_request_body_metric_period import CreateOrUpdateConditionRequestBodyMetricPeriod
+from .create_or_update_condition_request_body_condition_type import (
+ CreateOrUpdateConditionRequestBodyConditionType,
+)
+from .create_or_update_condition_request_body_metric_period import (
+ CreateOrUpdateConditionRequestBodyMetricPeriod,
+)
from .create_or_update_condition_request_body_metric_period_month_reset import (
CreateOrUpdateConditionRequestBodyMetricPeriodMonthReset,
)
-from .create_or_update_condition_request_body_operator import CreateOrUpdateConditionRequestBodyOperator
+from .create_or_update_condition_request_body_operator import (
+ CreateOrUpdateConditionRequestBodyOperator,
+)
from ..core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/types/create_or_update_condition_request_body_condition_type.py b/src/schematic/types/create_or_update_condition_request_body_condition_type.py
index eb620d7..50982bf 100644
--- a/src/schematic/types/create_or_update_condition_request_body_condition_type.py
+++ b/src/schematic/types/create_or_update_condition_request_body_condition_type.py
@@ -3,6 +3,15 @@
import typing
CreateOrUpdateConditionRequestBodyConditionType = typing.Union[
- typing.Literal["company", "metric", "trait", "user", "plan", "billing_product", "crm_product", "base_plan"],
+ typing.Literal[
+ "company",
+ "metric",
+ "trait",
+ "user",
+ "plan",
+ "billing_product",
+ "crm_product",
+ "base_plan",
+ ],
typing.Any,
]
diff --git a/src/schematic/types/create_or_update_condition_request_body_metric_period.py b/src/schematic/types/create_or_update_condition_request_body_metric_period.py
index 622b8c9..1c02831 100644
--- a/src/schematic/types/create_or_update_condition_request_body_metric_period.py
+++ b/src/schematic/types/create_or_update_condition_request_body_metric_period.py
@@ -3,5 +3,6 @@
import typing
CreateOrUpdateConditionRequestBodyMetricPeriod = typing.Union[
- typing.Literal["all_time", "current_month", "current_week", "current_day"], typing.Any
+ typing.Literal["all_time", "current_month", "current_week", "current_day"],
+ typing.Any,
]
diff --git a/src/schematic/types/create_or_update_condition_request_body_operator.py b/src/schematic/types/create_or_update_condition_request_body_operator.py
index 431b5e4..effb969 100644
--- a/src/schematic/types/create_or_update_condition_request_body_operator.py
+++ b/src/schematic/types/create_or_update_condition_request_body_operator.py
@@ -3,5 +3,6 @@
import typing
CreateOrUpdateConditionRequestBodyOperator = typing.Union[
- typing.Literal["eq", "ne", "gt", "gte", "lt", "lte", "is_empty", "not_empty"], typing.Any
+ typing.Literal["eq", "ne", "gt", "gte", "lt", "lte", "is_empty", "not_empty"],
+ typing.Any,
]
diff --git a/src/schematic/types/create_or_update_rule_request_body.py b/src/schematic/types/create_or_update_rule_request_body.py
index 38d6dd4..b6bafe3 100644
--- a/src/schematic/types/create_or_update_rule_request_body.py
+++ b/src/schematic/types/create_or_update_rule_request_body.py
@@ -2,9 +2,13 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .create_or_update_condition_group_request_body import CreateOrUpdateConditionGroupRequestBody
+from .create_or_update_condition_group_request_body import (
+ CreateOrUpdateConditionGroupRequestBody,
+)
from .create_or_update_condition_request_body import CreateOrUpdateConditionRequestBody
-from .create_or_update_rule_request_body_rule_type import CreateOrUpdateRuleRequestBodyRuleType
+from .create_or_update_rule_request_body_rule_type import (
+ CreateOrUpdateRuleRequestBodyRuleType,
+)
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
diff --git a/src/schematic/types/create_or_update_rule_request_body_rule_type.py b/src/schematic/types/create_or_update_rule_request_body_rule_type.py
index 9494daf..dbdb569 100644
--- a/src/schematic/types/create_or_update_rule_request_body_rule_type.py
+++ b/src/schematic/types/create_or_update_rule_request_body_rule_type.py
@@ -3,6 +3,13 @@
import typing
CreateOrUpdateRuleRequestBodyRuleType = typing.Union[
- typing.Literal["global_override", "company_override", "plan_entitlement", "standard", "default", "plan_audience"],
+ typing.Literal[
+ "global_override",
+ "company_override",
+ "plan_entitlement",
+ "standard",
+ "default",
+ "plan_audience",
+ ],
typing.Any,
]
diff --git a/src/schematic/types/entitlements_in_plan.py b/src/schematic/types/entitlements_in_plan.py
new file mode 100644
index 0000000..25ee9a6
--- /dev/null
+++ b/src/schematic/types/entitlements_in_plan.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import pydantic
+
+
+class EntitlementsInPlan(UniversalBaseModel):
+ entitlement_id: str
+ visible: typing.Optional[bool] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/feature_company_response_data.py b/src/schematic/types/feature_company_response_data.py
index c052214..5ec2d54 100644
--- a/src/schematic/types/feature_company_response_data.py
+++ b/src/schematic/types/feature_company_response_data.py
@@ -3,7 +3,9 @@
from ..core.pydantic_utilities import UniversalBaseModel
import pydantic
import typing
-from .feature_company_response_data_allocation_type import FeatureCompanyResponseDataAllocationType
+from .feature_company_response_data_allocation_type import (
+ FeatureCompanyResponseDataAllocationType,
+)
from .company_detail_response_data import CompanyDetailResponseData
import datetime as dt
from .feature_detail_response_data import FeatureDetailResponseData
diff --git a/src/schematic/types/feature_company_user_response_data.py b/src/schematic/types/feature_company_user_response_data.py
index df34a59..65f5ff6 100644
--- a/src/schematic/types/feature_company_user_response_data.py
+++ b/src/schematic/types/feature_company_user_response_data.py
@@ -3,7 +3,9 @@
from ..core.pydantic_utilities import UniversalBaseModel
import pydantic
import typing
-from .feature_company_user_response_data_allocation_type import FeatureCompanyUserResponseDataAllocationType
+from .feature_company_user_response_data_allocation_type import (
+ FeatureCompanyUserResponseDataAllocationType,
+)
from .company_detail_response_data import CompanyDetailResponseData
from .feature_detail_response_data import FeatureDetailResponseData
import datetime as dt
diff --git a/src/schematic/types/feature_detail_response_data.py b/src/schematic/types/feature_detail_response_data.py
index 7ad893a..6c32eb1 100644
--- a/src/schematic/types/feature_detail_response_data.py
+++ b/src/schematic/types/feature_detail_response_data.py
@@ -24,6 +24,8 @@ class FeatureDetailResponseData(UniversalBaseModel):
maintainer_id: typing.Optional[str] = None
name: str
plans: typing.List[PreviewObject]
+ plural_name: typing.Optional[str] = None
+ singular_name: typing.Optional[str] = None
trait: typing.Optional[EntityTraitDefinitionResponseData] = None
trait_id: typing.Optional[str] = None
updated_at: dt.datetime
diff --git a/src/schematic/types/feature_response_data.py b/src/schematic/types/feature_response_data.py
index 6ddfadc..61060c9 100644
--- a/src/schematic/types/feature_response_data.py
+++ b/src/schematic/types/feature_response_data.py
@@ -17,6 +17,8 @@ class FeatureResponseData(UniversalBaseModel):
lifecycle_phase: typing.Optional[str] = None
maintainer_id: typing.Optional[str] = None
name: str
+ plural_name: typing.Optional[str] = None
+ singular_name: typing.Optional[str] = None
trait_id: typing.Optional[str] = None
updated_at: dt.datetime
diff --git a/src/schematic/types/feature_usage_response_data.py b/src/schematic/types/feature_usage_response_data.py
index 59111a5..22bb67e 100644
--- a/src/schematic/types/feature_usage_response_data.py
+++ b/src/schematic/types/feature_usage_response_data.py
@@ -3,7 +3,9 @@
from ..core.pydantic_utilities import UniversalBaseModel
import pydantic
import typing
-from .feature_usage_response_data_allocation_type import FeatureUsageResponseDataAllocationType
+from .feature_usage_response_data_allocation_type import (
+ FeatureUsageResponseDataAllocationType,
+)
import datetime as dt
from .feature_detail_response_data import FeatureDetailResponseData
from .billing_price_view import BillingPriceView
@@ -49,6 +51,11 @@ class FeatureUsageResponseData(UniversalBaseModel):
plan: typing.Optional[PlanResponseData] = None
price_behavior: typing.Optional[str] = None
+ soft_limit: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ The soft limit for the feature usage. Available only for overage price behavior
+ """
+
usage: typing.Optional[int] = pydantic.Field(default=None)
"""
The amount of usage that has been consumed; a null value indicates that usage is not being measured.
diff --git a/src/schematic/types/ordered_plans_in_group.py b/src/schematic/types/ordered_plans_in_group.py
new file mode 100644
index 0000000..f685244
--- /dev/null
+++ b/src/schematic/types/ordered_plans_in_group.py
@@ -0,0 +1,21 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .entitlements_in_plan import EntitlementsInPlan
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import pydantic
+
+
+class OrderedPlansInGroup(UniversalBaseModel):
+ entitlements: typing.Optional[typing.List[EntitlementsInPlan]] = None
+ plan_id: str
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/payment_method_request_body.py b/src/schematic/types/payment_method_request_body.py
index c31fe22..5e464c9 100644
--- a/src/schematic/types/payment_method_request_body.py
+++ b/src/schematic/types/payment_method_request_body.py
@@ -20,7 +20,6 @@ class PaymentMethodRequestBody(UniversalBaseModel):
card_last_4: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="card_last4")] = None
customer_external_id: str
payment_method_type: str
- subscription_external_id: typing.Optional[str] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/schematic/types/payment_method_response_data.py b/src/schematic/types/payment_method_response_data.py
index 32540cf..752ace9 100644
--- a/src/schematic/types/payment_method_response_data.py
+++ b/src/schematic/types/payment_method_response_data.py
@@ -26,7 +26,6 @@ class PaymentMethodResponseData(UniversalBaseModel):
external_id: str
id: str
payment_method_type: str
- subscription_external_id: typing.Optional[str] = None
updated_at: dt.datetime
if IS_PYDANTIC_V2:
diff --git a/src/schematic/types/plan_audience_detail_response_data.py b/src/schematic/types/plan_audience_detail_response_data.py
index d5b60f9..2a373c4 100644
--- a/src/schematic/types/plan_audience_detail_response_data.py
+++ b/src/schematic/types/plan_audience_detail_response_data.py
@@ -2,7 +2,9 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .rule_condition_group_detail_response_data import RuleConditionGroupDetailResponseData
+from .rule_condition_group_detail_response_data import (
+ RuleConditionGroupDetailResponseData,
+)
from .rule_condition_detail_response_data import RuleConditionDetailResponseData
import datetime as dt
from ..core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/types/plan_entitlement_response_data.py b/src/schematic/types/plan_entitlement_response_data.py
index ab0833f..5a49ec8 100644
--- a/src/schematic/types/plan_entitlement_response_data.py
+++ b/src/schematic/types/plan_entitlement_response_data.py
@@ -26,6 +26,7 @@ class PlanEntitlementResponseData(UniversalBaseModel):
price_behavior: typing.Optional[str] = None
rule_id: str
rule_id_usage_exceeded: typing.Optional[str] = None
+ soft_limit: typing.Optional[int] = None
updated_at: dt.datetime
value_bool: typing.Optional[bool] = None
value_numeric: typing.Optional[int] = None
diff --git a/src/schematic/types/plan_entitlements_order.py b/src/schematic/types/plan_entitlements_order.py
new file mode 100644
index 0000000..0189e4a
--- /dev/null
+++ b/src/schematic/types/plan_entitlements_order.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import pydantic
+
+
+class PlanEntitlementsOrder(UniversalBaseModel):
+ plan_entitlement_id: str
+ visible: typing.Optional[bool] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/plan_group_detail_response_data.py b/src/schematic/types/plan_group_detail_response_data.py
index ef7795b..0e44f4d 100644
--- a/src/schematic/types/plan_group_detail_response_data.py
+++ b/src/schematic/types/plan_group_detail_response_data.py
@@ -4,6 +4,7 @@
import typing
from .plan_group_plan_detail_response_data import PlanGroupPlanDetailResponseData
from .custom_plan_view_config_response_data import CustomPlanViewConfigResponseData
+from .plan_group_plan_entitlements_order import PlanGroupPlanEntitlementsOrder
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
@@ -19,6 +20,7 @@ class PlanGroupDetailResponseData(UniversalBaseModel):
default_plan: typing.Optional[PlanGroupPlanDetailResponseData] = None
default_plan_id: typing.Optional[str] = None
id: str
+ ordered_plan_list: typing.List[PlanGroupPlanEntitlementsOrder]
plans: typing.List[PlanGroupPlanDetailResponseData]
trial_days: typing.Optional[int] = None
trial_payment_method_required: typing.Optional[bool] = None
diff --git a/src/schematic/types/plan_group_plan_entitlements_order.py b/src/schematic/types/plan_group_plan_entitlements_order.py
new file mode 100644
index 0000000..84df17c
--- /dev/null
+++ b/src/schematic/types/plan_group_plan_entitlements_order.py
@@ -0,0 +1,21 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.pydantic_utilities import UniversalBaseModel
+import typing
+from .plan_entitlements_order import PlanEntitlementsOrder
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+import pydantic
+
+
+class PlanGroupPlanEntitlementsOrder(UniversalBaseModel):
+ entitlements: typing.Optional[typing.List[PlanEntitlementsOrder]] = None
+ plan_id: str
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/plan_group_response_data.py b/src/schematic/types/plan_group_response_data.py
index 42f74d7..038464c 100644
--- a/src/schematic/types/plan_group_response_data.py
+++ b/src/schematic/types/plan_group_response_data.py
@@ -2,6 +2,7 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
+from .ordered_plans_in_group import OrderedPlansInGroup
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
@@ -14,7 +15,7 @@ class PlanGroupResponseData(UniversalBaseModel):
add_on_ids: typing.List[str]
default_plan_id: typing.Optional[str] = None
id: str
- plan_ids: typing.List[str]
+ plan_ids: typing.List[OrderedPlansInGroup]
trial_days: typing.Optional[int] = None
trial_payment_method_required: typing.Optional[bool] = None
diff --git a/src/schematic/types/rule_detail_response_data.py b/src/schematic/types/rule_detail_response_data.py
index d69b7f5..26b9af9 100644
--- a/src/schematic/types/rule_detail_response_data.py
+++ b/src/schematic/types/rule_detail_response_data.py
@@ -2,7 +2,9 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .rule_condition_group_detail_response_data import RuleConditionGroupDetailResponseData
+from .rule_condition_group_detail_response_data import (
+ RuleConditionGroupDetailResponseData,
+)
from .rule_condition_detail_response_data import RuleConditionDetailResponseData
import datetime as dt
from ..core.pydantic_utilities import IS_PYDANTIC_V2
diff --git a/src/schematic/types/update_entitlement_req_common.py b/src/schematic/types/update_entitlement_req_common.py
index ffda479..4736dd9 100644
--- a/src/schematic/types/update_entitlement_req_common.py
+++ b/src/schematic/types/update_entitlement_req_common.py
@@ -2,9 +2,15 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .update_entitlement_req_common_metric_period import UpdateEntitlementReqCommonMetricPeriod
-from .update_entitlement_req_common_metric_period_month_reset import UpdateEntitlementReqCommonMetricPeriodMonthReset
-from .update_entitlement_req_common_value_type import UpdateEntitlementReqCommonValueType
+from .update_entitlement_req_common_metric_period import (
+ UpdateEntitlementReqCommonMetricPeriod,
+)
+from .update_entitlement_req_common_metric_period_month_reset import (
+ UpdateEntitlementReqCommonMetricPeriodMonthReset,
+)
+from .update_entitlement_req_common_value_type import (
+ UpdateEntitlementReqCommonValueType,
+)
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
diff --git a/src/schematic/types/update_entitlement_req_common_metric_period.py b/src/schematic/types/update_entitlement_req_common_metric_period.py
index 077d04f..e71d851 100644
--- a/src/schematic/types/update_entitlement_req_common_metric_period.py
+++ b/src/schematic/types/update_entitlement_req_common_metric_period.py
@@ -3,5 +3,6 @@
import typing
UpdateEntitlementReqCommonMetricPeriod = typing.Union[
- typing.Literal["all_time", "current_month", "current_week", "current_day"], typing.Any
+ typing.Literal["all_time", "current_month", "current_week", "current_day"],
+ typing.Any,
]
diff --git a/src/schematic/types/update_rule_request_body.py b/src/schematic/types/update_rule_request_body.py
index e904fe2..d6a1698 100644
--- a/src/schematic/types/update_rule_request_body.py
+++ b/src/schematic/types/update_rule_request_body.py
@@ -2,7 +2,9 @@
from ..core.pydantic_utilities import UniversalBaseModel
import typing
-from .create_or_update_condition_group_request_body import CreateOrUpdateConditionGroupRequestBody
+from .create_or_update_condition_group_request_body import (
+ CreateOrUpdateConditionGroupRequestBody,
+)
from .create_or_update_condition_request_body import CreateOrUpdateConditionRequestBody
from ..core.pydantic_utilities import IS_PYDANTIC_V2
import pydantic
diff --git a/src/schematic/types/usage_based_entitlement_request_body.py b/src/schematic/types/usage_based_entitlement_request_body.py
index cc849e2..2b2b34a 100644
--- a/src/schematic/types/usage_based_entitlement_request_body.py
+++ b/src/schematic/types/usage_based_entitlement_request_body.py
@@ -9,6 +9,7 @@
class UsageBasedEntitlementRequestBody(UniversalBaseModel):
monthly_metered_price_id: typing.Optional[str] = None
price_behavior: typing.Optional[str] = None
+ soft_limit: typing.Optional[int] = None
yearly_metered_price_id: typing.Optional[str] = None
if IS_PYDANTIC_V2:
diff --git a/src/schematic/types/webhook_response_data.py b/src/schematic/types/webhook_response_data.py
index f078340..75667d6 100644
--- a/src/schematic/types/webhook_response_data.py
+++ b/src/schematic/types/webhook_response_data.py
@@ -12,6 +12,7 @@ class WebhookResponseData(UniversalBaseModel):
id: str
name: str
request_types: typing.List[str]
+ secret: str
status: str
updated_at: dt.datetime
url: str
diff --git a/src/schematic/webhooks/client.py b/src/schematic/webhooks/client.py
index fe57151..fd2c83e 100644
--- a/src/schematic/webhooks/client.py
+++ b/src/schematic/webhooks/client.py
@@ -17,10 +17,14 @@
from ..errors.not_found_error import NotFoundError
from .types.count_webhook_events_response import CountWebhookEventsResponse
from .types.list_webhooks_response import ListWebhooksResponse
-from .types.create_webhook_request_body_request_types_item import CreateWebhookRequestBodyRequestTypesItem
+from .types.create_webhook_request_body_request_types_item import (
+ CreateWebhookRequestBodyRequestTypesItem,
+)
from .types.create_webhook_response import CreateWebhookResponse
from .types.get_webhook_response import GetWebhookResponse
-from .types.update_webhook_request_body_request_types_item import UpdateWebhookRequestBodyRequestTypesItem
+from .types.update_webhook_request_body_request_types_item import (
+ UpdateWebhookRequestBodyRequestTypesItem,
+)
from .types.update_webhook_request_body_status import UpdateWebhookRequestBodyStatus
from .types.update_webhook_response import UpdateWebhookResponse
from .types.delete_webhook_response import DeleteWebhookResponse
@@ -144,7 +148,10 @@ def list_webhook_events(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_webhook_event(
- self, webhook_event_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ webhook_event_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetWebhookEventResponse:
"""
Parameters
@@ -545,7 +552,10 @@ def create_webhook(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def get_webhook(
- self, webhook_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ webhook_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetWebhookResponse:
"""
Parameters
@@ -754,7 +764,10 @@ def update_webhook(
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
def delete_webhook(
- self, webhook_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ webhook_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteWebhookResponse:
"""
Parameters
@@ -1062,7 +1075,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_webhook_event(
- self, webhook_event_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ webhook_event_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetWebhookEventResponse:
"""
Parameters
@@ -1495,7 +1511,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def get_webhook(
- self, webhook_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ webhook_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetWebhookResponse:
"""
Parameters
@@ -1720,7 +1739,10 @@ async def main() -> None:
raise core_api_error_ApiError(status_code=_response.status_code, body=_response_json)
async def delete_webhook(
- self, webhook_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ webhook_id: str,
+ *,
+ request_options: typing.Optional[RequestOptions] = None,
) -> DeleteWebhookResponse:
"""
Parameters
diff --git a/tests/utils/test_http_client.py b/tests/utils/test_http_client.py
index a2a5554..e879636 100644
--- a/tests/utils/test_http_client.py
+++ b/tests/utils/test_http_client.py
@@ -14,7 +14,10 @@ def test_get_json_request_body() -> None:
assert data_body is None
json_body_extras, data_body_extras = get_request_body(
- json={"goodbye": "world"}, data=None, request_options=get_request_options(), omit=None
+ json={"goodbye": "world"},
+ data=None,
+ request_options=get_request_options(),
+ omit=None,
)
assert json_body_extras == {"goodbye": "world", "see you": "later"}
@@ -27,7 +30,10 @@ def test_get_files_request_body() -> None:
assert json_body is None
json_body_extras, data_body_extras = get_request_body(
- json=None, data={"goodbye": "world"}, request_options=get_request_options(), omit=None
+ json=None,
+ data={"goodbye": "world"},
+ request_options=get_request_options(),
+ omit=None,
)
assert data_body_extras == {"goodbye": "world", "see you": "later"}
diff --git a/tests/utils/test_query_encoding.py b/tests/utils/test_query_encoding.py
index c8ac52d..63e1ed0 100644
--- a/tests/utils/test_query_encoding.py
+++ b/tests/utils/test_query_encoding.py
@@ -15,14 +15,26 @@ def test_query_encoding_deep_objects() -> None:
def test_query_encoding_deep_object_arrays() -> None:
- assert encode_query({"objects": [{"key": "hello", "value": "world"}, {"key": "foo", "value": "bar"}]}) == [
+ assert encode_query(
+ {
+ "objects": [
+ {"key": "hello", "value": "world"},
+ {"key": "foo", "value": "bar"},
+ ]
+ }
+ ) == [
("objects[key]", "hello"),
("objects[value]", "world"),
("objects[key]", "foo"),
("objects[value]", "bar"),
]
assert encode_query(
- {"users": [{"name": "string", "tags": ["string"]}, {"name": "string2", "tags": ["string2", "string3"]}]}
+ {
+ "users": [
+ {"name": "string", "tags": ["string"]},
+ {"name": "string2", "tags": ["string2", "string3"]},
+ ]
+ }
) == [
("users[name]", "string"),
("users[tags]", "string"),
diff --git a/tests/utils/test_serialization.py b/tests/utils/test_serialization.py
index 8cc4d20..8efc1a6 100644
--- a/tests/utils/test_serialization.py
+++ b/tests/utils/test_serialization.py
@@ -21,21 +21,51 @@ def test_convert_and_respect_annotation_metadata() -> None:
converted = convert_and_respect_annotation_metadata(
object_=data, annotation=ObjectWithOptionalFieldParams, direction="write"
)
- assert converted == {"string": "string", "long": 12345, "bool": True, "literal": "lit_one", "any": "any"}
+ assert converted == {
+ "string": "string",
+ "long": 12345,
+ "bool": True,
+ "literal": "lit_one",
+ "any": "any",
+ }
def test_convert_and_respect_annotation_metadata_in_list() -> None:
data: List[ObjectWithOptionalFieldParams] = [
- {"string": "string", "long_": 12345, "bool_": True, "literal": "lit_one", "any": "any"},
- {"string": "another string", "long_": 67890, "list_": [], "literal": "lit_one", "any": "any"},
+ {
+ "string": "string",
+ "long_": 12345,
+ "bool_": True,
+ "literal": "lit_one",
+ "any": "any",
+ },
+ {
+ "string": "another string",
+ "long_": 67890,
+ "list_": [],
+ "literal": "lit_one",
+ "any": "any",
+ },
]
converted = convert_and_respect_annotation_metadata(
object_=data, annotation=List[ObjectWithOptionalFieldParams], direction="write"
)
assert converted == [
- {"string": "string", "long": 12345, "bool": True, "literal": "lit_one", "any": "any"},
- {"string": "another string", "long": 67890, "list": [], "literal": "lit_one", "any": "any"},
+ {
+ "string": "string",
+ "long": 12345,
+ "bool": True,
+ "literal": "lit_one",
+ "any": "any",
+ },
+ {
+ "string": "another string",
+ "long": 67890,
+ "list": [],
+ "literal": "lit_one",
+ "any": "any",
+ },
]