diff --git a/.fern/metadata.json b/.fern/metadata.json
index d336f8a..f64bd97 100644
--- a/.fern/metadata.json
+++ b/.fern/metadata.json
@@ -23,6 +23,6 @@
}
]
},
- "originGitCommit": "b3ecd0dc127f986fbcb1084dc6be23c66b78ff3f",
- "sdkVersion": "1.2.7"
+ "originGitCommit": "73dfd3abce414c6aab288b3bc0e265f30c14f821",
+ "sdkVersion": "1.2.8"
}
\ No newline at end of file
diff --git a/.fern/replay.lock b/.fern/replay.lock
index a91fd63..7435f5a 100644
--- a/.fern/replay.lock
+++ b/.fern/replay.lock
@@ -6,5 +6,11 @@ generations:
timestamp: 2026-06-16T14:54:21.146Z
cli_version: unknown
generator_versions: {}
-current_generation: 08aaebfda20179ccf2831d30f65f8182f2f74c08
+ - commit_sha: 35cd99d8ce4b3a7e348b322eccec390797b1d9d2
+ tree_hash: 595ce9c0c589b4a2e55581fa72a619ba6b0551d2
+ timestamp: 2026-07-13T17:53:47.698Z
+ cli_version: unknown
+ generator_versions:
+ fernapi/fern-python-sdk: 4.64.1
+current_generation: 35cd99d8ce4b3a7e348b322eccec390797b1d9d2
patches: []
diff --git a/pyproject.toml b/pyproject.toml
index af74797..f26ef18 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ dynamic = ["version"]
[tool.poetry]
name = "schematichq"
-version = "1.2.7"
+version = "1.2.8"
description = ""
readme = "README.md"
authors = []
diff --git a/reference.md b/reference.md
index d129252..615235c 100644
--- a/reference.md
+++ b/reference.md
@@ -12805,6 +12805,14 @@ client.entitlements.create_plan_entitlement(
-
+**warning_tiers:** `typing.Optional[typing.List[WarningTierRequestBody]]`
+
+
+
+
+
+-
+
**yearly_metered_price_id:** `typing.Optional[str]`
@@ -13164,6 +13172,14 @@ client.entitlements.update_plan_entitlement(
-
+**warning_tiers:** `typing.Optional[typing.List[WarningTierRequestBody]]`
+
+
+
+
+
+-
+
**yearly_metered_price_id:** `typing.Optional[str]`
@@ -13558,6 +13574,14 @@ client.entitlements.upsert_plan_entitlement_for_billing_product(
-
+**warning_tiers:** `typing.Optional[typing.List[WarningTierRequestBody]]`
+
+
+
+
+
+-
+
**yearly_metered_price_id:** `typing.Optional[str]`
@@ -16248,14 +16272,6 @@ client.planbundle.create_plan_bundle(
-
-**traits:** `typing.Optional[typing.List[UpdatePlanTraitTraitRequestBody]]`
-
-
-
-
-
--
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -16360,14 +16376,6 @@ client.planbundle.update_plan_bundle(
-
-**traits:** `typing.Optional[typing.List[UpdatePlanTraitTraitRequestBody]]`
-
-
-
-
-
--
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
diff --git a/src/schematic/__init__.py b/src/schematic/__init__.py
index b8adb42..2eea406 100644
--- a/src/schematic/__init__.py
+++ b/src/schematic/__init__.py
@@ -199,6 +199,7 @@
EventBodyFlagCheck,
EventBodyIdentify,
EventBodyIdentifyCompany,
+ EventBodyInference,
EventBodyTrack,
EventDetailResponseData,
EventResponseData,
@@ -384,6 +385,8 @@
UsageTimeSeriesPointResponseData,
UserDetailResponseData,
UserResponseData,
+ WarningTierRequestBody,
+ WarningTierResponseData,
WebFeatureUsageWebhookOutput,
WebScheduledDowngradeWebhookOutput,
WebhookEventDetailResponseData,
@@ -1089,6 +1092,7 @@
"EventBodyFlagCheck": ".types",
"EventBodyIdentify": ".types",
"EventBodyIdentifyCompany": ".types",
+ "EventBodyInference": ".types",
"EventBodyTrack": ".types",
"EventDetailResponseData": ".types",
"EventResponseData": ".types",
@@ -1493,6 +1497,8 @@
"UsageTimeSeriesPointResponseData": ".types",
"UserDetailResponseData": ".types",
"UserResponseData": ".types",
+ "WarningTierRequestBody": ".types",
+ "WarningTierResponseData": ".types",
"WebFeatureUsageWebhookOutput": ".types",
"WebScheduledDowngradeWebhookOutput": ".types",
"WebhookEventDetailResponseData": ".types",
@@ -1863,6 +1869,7 @@ def __dir__():
"EventBodyFlagCheck",
"EventBodyIdentify",
"EventBodyIdentifyCompany",
+ "EventBodyInference",
"EventBodyTrack",
"EventDetailResponseData",
"EventResponseData",
@@ -2267,6 +2274,8 @@ def __dir__():
"UsageTimeSeriesPointResponseData",
"UserDetailResponseData",
"UserResponseData",
+ "WarningTierRequestBody",
+ "WarningTierResponseData",
"WebFeatureUsageWebhookOutput",
"WebScheduledDowngradeWebhookOutput",
"WebhookEventDetailResponseData",
diff --git a/src/schematic/core/client_wrapper.py b/src/schematic/core/client_wrapper.py
index 6b64373..beba213 100644
--- a/src/schematic/core/client_wrapper.py
+++ b/src/schematic/core/client_wrapper.py
@@ -27,12 +27,12 @@ def get_headers(self) -> typing.Dict[str, str]:
import platform
headers: typing.Dict[str, str] = {
- "User-Agent": "schematichq/1.2.7",
+ "User-Agent": "schematichq/1.2.8",
"X-Fern-Language": "Python",
"X-Fern-Runtime": f"python/{platform.python_version()}",
"X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}",
"X-Fern-SDK-Name": "schematichq",
- "X-Fern-SDK-Version": "1.2.7",
+ "X-Fern-SDK-Version": "1.2.8",
**(self.get_custom_headers() or {}),
}
headers["X-Schematic-Api-Key"] = self.api_key
diff --git a/src/schematic/entitlements/client.py b/src/schematic/entitlements/client.py
index 6ebaac7..7a118de 100644
--- a/src/schematic/entitlements/client.py
+++ b/src/schematic/entitlements/client.py
@@ -14,6 +14,7 @@
from ..types.metric_period import MetricPeriod
from ..types.metric_period_month_reset import MetricPeriodMonthReset
from ..types.time_series_granularity import TimeSeriesGranularity
+from ..types.warning_tier_request_body import WarningTierRequestBody
from .raw_client import AsyncRawEntitlementsClient, RawEntitlementsClient
from .types.count_company_overrides_response import CountCompanyOverridesResponse
from .types.count_feature_companies_response import CountFeatureCompaniesResponse
@@ -994,6 +995,7 @@ def create_plan_entitlement(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -1063,6 +1065,8 @@ def create_plan_entitlement(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -1122,6 +1126,7 @@ def create_plan_entitlement(
value_credit_id=value_credit_id,
value_numeric=value_numeric,
value_trait_id=value_trait_id,
+ warning_tiers=warning_tiers,
yearly_metered_price_id=yearly_metered_price_id,
yearly_price_tiers=yearly_price_tiers,
yearly_unit_price=yearly_unit_price,
@@ -1191,6 +1196,7 @@ def update_plan_entitlement(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -1257,6 +1263,8 @@ def update_plan_entitlement(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -1313,6 +1321,7 @@ def update_plan_entitlement(
value_credit_id=value_credit_id,
value_numeric=value_numeric,
value_trait_id=value_trait_id,
+ warning_tiers=warning_tiers,
yearly_metered_price_id=yearly_metered_price_id,
yearly_price_tiers=yearly_price_tiers,
yearly_unit_price=yearly_unit_price,
@@ -1386,6 +1395,7 @@ def upsert_plan_entitlement_for_billing_product(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -1459,6 +1469,8 @@ def upsert_plan_entitlement_for_billing_product(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -1522,6 +1534,7 @@ def upsert_plan_entitlement_for_billing_product(
value_credit_id=value_credit_id,
value_numeric=value_numeric,
value_trait_id=value_trait_id,
+ warning_tiers=warning_tiers,
yearly_metered_price_id=yearly_metered_price_id,
yearly_price_tiers=yearly_price_tiers,
yearly_unit_price=yearly_unit_price,
@@ -2757,6 +2770,7 @@ async def create_plan_entitlement(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -2826,6 +2840,8 @@ async def create_plan_entitlement(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -2893,6 +2909,7 @@ async def main() -> None:
value_credit_id=value_credit_id,
value_numeric=value_numeric,
value_trait_id=value_trait_id,
+ warning_tiers=warning_tiers,
yearly_metered_price_id=yearly_metered_price_id,
yearly_price_tiers=yearly_price_tiers,
yearly_unit_price=yearly_unit_price,
@@ -2970,6 +2987,7 @@ async def update_plan_entitlement(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -3036,6 +3054,8 @@ async def update_plan_entitlement(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -3100,6 +3120,7 @@ async def main() -> None:
value_credit_id=value_credit_id,
value_numeric=value_numeric,
value_trait_id=value_trait_id,
+ warning_tiers=warning_tiers,
yearly_metered_price_id=yearly_metered_price_id,
yearly_price_tiers=yearly_price_tiers,
yearly_unit_price=yearly_unit_price,
@@ -3181,6 +3202,7 @@ async def upsert_plan_entitlement_for_billing_product(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -3254,6 +3276,8 @@ async def upsert_plan_entitlement_for_billing_product(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -3325,6 +3349,7 @@ async def main() -> None:
value_credit_id=value_credit_id,
value_numeric=value_numeric,
value_trait_id=value_trait_id,
+ warning_tiers=warning_tiers,
yearly_metered_price_id=yearly_metered_price_id,
yearly_price_tiers=yearly_price_tiers,
yearly_unit_price=yearly_unit_price,
diff --git a/src/schematic/entitlements/raw_client.py b/src/schematic/entitlements/raw_client.py
index 4c3fe11..67fade7 100644
--- a/src/schematic/entitlements/raw_client.py
+++ b/src/schematic/entitlements/raw_client.py
@@ -28,6 +28,7 @@
from ..types.metric_period import MetricPeriod
from ..types.metric_period_month_reset import MetricPeriodMonthReset
from ..types.time_series_granularity import TimeSeriesGranularity
+from ..types.warning_tier_request_body import WarningTierRequestBody
from .types.count_company_overrides_response import CountCompanyOverridesResponse
from .types.count_feature_companies_response import CountFeatureCompaniesResponse
from .types.count_feature_usage_response import CountFeatureUsageResponse
@@ -1899,6 +1900,7 @@ def create_plan_entitlement(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -1968,6 +1970,8 @@ def create_plan_entitlement(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -2029,6 +2033,9 @@ def create_plan_entitlement(
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
"value_type": value_type,
+ "warning_tiers": convert_and_respect_annotation_metadata(
+ object_=warning_tiers, annotation=typing.Sequence[WarningTierRequestBody], direction="write"
+ ),
"yearly_metered_price_id": yearly_metered_price_id,
"yearly_price_tiers": convert_and_respect_annotation_metadata(
object_=yearly_price_tiers,
@@ -2241,6 +2248,7 @@ def update_plan_entitlement(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -2307,6 +2315,8 @@ def update_plan_entitlement(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -2365,6 +2375,9 @@ def update_plan_entitlement(
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
"value_type": value_type,
+ "warning_tiers": convert_and_respect_annotation_metadata(
+ object_=warning_tiers, annotation=typing.Sequence[WarningTierRequestBody], direction="write"
+ ),
"yearly_metered_price_id": yearly_metered_price_id,
"yearly_price_tiers": convert_and_respect_annotation_metadata(
object_=yearly_price_tiers,
@@ -2592,6 +2605,7 @@ def upsert_plan_entitlement_for_billing_product(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -2665,6 +2679,8 @@ def upsert_plan_entitlement_for_billing_product(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -2728,6 +2744,9 @@ def upsert_plan_entitlement_for_billing_product(
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
"value_type": value_type,
+ "warning_tiers": convert_and_respect_annotation_metadata(
+ object_=warning_tiers, annotation=typing.Sequence[WarningTierRequestBody], direction="write"
+ ),
"yearly_metered_price_id": yearly_metered_price_id,
"yearly_price_tiers": convert_and_respect_annotation_metadata(
object_=yearly_price_tiers,
@@ -5022,6 +5041,7 @@ async def create_plan_entitlement(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -5091,6 +5111,8 @@ async def create_plan_entitlement(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -5152,6 +5174,9 @@ async def create_plan_entitlement(
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
"value_type": value_type,
+ "warning_tiers": convert_and_respect_annotation_metadata(
+ object_=warning_tiers, annotation=typing.Sequence[WarningTierRequestBody], direction="write"
+ ),
"yearly_metered_price_id": yearly_metered_price_id,
"yearly_price_tiers": convert_and_respect_annotation_metadata(
object_=yearly_price_tiers,
@@ -5364,6 +5389,7 @@ async def update_plan_entitlement(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -5430,6 +5456,8 @@ async def update_plan_entitlement(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -5488,6 +5516,9 @@ async def update_plan_entitlement(
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
"value_type": value_type,
+ "warning_tiers": convert_and_respect_annotation_metadata(
+ object_=warning_tiers, annotation=typing.Sequence[WarningTierRequestBody], direction="write"
+ ),
"yearly_metered_price_id": yearly_metered_price_id,
"yearly_price_tiers": convert_and_respect_annotation_metadata(
object_=yearly_price_tiers,
@@ -5715,6 +5746,7 @@ async def upsert_plan_entitlement_for_billing_product(
value_credit_id: typing.Optional[str] = OMIT,
value_numeric: typing.Optional[int] = OMIT,
value_trait_id: typing.Optional[str] = OMIT,
+ warning_tiers: typing.Optional[typing.Sequence[WarningTierRequestBody]] = OMIT,
yearly_metered_price_id: typing.Optional[str] = OMIT,
yearly_price_tiers: typing.Optional[typing.Sequence[CreatePriceTierRequestBody]] = OMIT,
yearly_unit_price: typing.Optional[int] = OMIT,
@@ -5788,6 +5820,8 @@ async def upsert_plan_entitlement_for_billing_product(
value_trait_id : typing.Optional[str]
+ warning_tiers : typing.Optional[typing.Sequence[WarningTierRequestBody]]
+
yearly_metered_price_id : typing.Optional[str]
yearly_price_tiers : typing.Optional[typing.Sequence[CreatePriceTierRequestBody]]
@@ -5851,6 +5885,9 @@ async def upsert_plan_entitlement_for_billing_product(
"value_numeric": value_numeric,
"value_trait_id": value_trait_id,
"value_type": value_type,
+ "warning_tiers": convert_and_respect_annotation_metadata(
+ object_=warning_tiers, annotation=typing.Sequence[WarningTierRequestBody], direction="write"
+ ),
"yearly_metered_price_id": yearly_metered_price_id,
"yearly_price_tiers": convert_and_respect_annotation_metadata(
object_=yearly_price_tiers,
diff --git a/src/schematic/planbundle/client.py b/src/schematic/planbundle/client.py
index d525cb7..aa84b40 100644
--- a/src/schematic/planbundle/client.py
+++ b/src/schematic/planbundle/client.py
@@ -9,7 +9,6 @@
from ..types.plan_bundle_credit_grant_request_body import PlanBundleCreditGrantRequestBody
from ..types.plan_bundle_entitlement_request_body import PlanBundleEntitlementRequestBody
from ..types.update_plan_request_body import UpdatePlanRequestBody
-from ..types.update_plan_trait_trait_request_body import UpdatePlanTraitTraitRequestBody
from ..types.upsert_billing_product_request_body import UpsertBillingProductRequestBody
from .raw_client import AsyncRawPlanbundleClient, RawPlanbundleClient
from .types.create_custom_plan_bundle_response import CreateCustomPlanBundleResponse
@@ -87,7 +86,6 @@ def create_plan_bundle(
billing_product: typing.Optional[UpsertBillingProductRequestBody] = OMIT,
credit_grants: typing.Optional[typing.Sequence[PlanBundleCreditGrantRequestBody]] = OMIT,
plan: typing.Optional[CreatePlanRequestBody] = OMIT,
- traits: typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> CreatePlanBundleResponse:
"""
@@ -101,8 +99,6 @@ def create_plan_bundle(
plan : typing.Optional[CreatePlanRequestBody]
- traits : typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -131,7 +127,6 @@ def create_plan_bundle(
billing_product=billing_product,
credit_grants=credit_grants,
plan=plan,
- traits=traits,
request_options=request_options,
)
return _response.data
@@ -145,7 +140,6 @@ def update_plan_bundle(
credit_grants: typing.Optional[typing.Sequence[PlanBundleCreditGrantRequestBody]] = OMIT,
plan: typing.Optional[UpdatePlanRequestBody] = OMIT,
plan_version_id: typing.Optional[str] = OMIT,
- traits: typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpdatePlanBundleResponse:
"""
@@ -164,8 +158,6 @@ def update_plan_bundle(
plan_version_id : typing.Optional[str]
- traits : typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -197,7 +189,6 @@ def update_plan_bundle(
credit_grants=credit_grants,
plan=plan,
plan_version_id=plan_version_id,
- traits=traits,
request_options=request_options,
)
return _response.data
@@ -278,7 +269,6 @@ async def create_plan_bundle(
billing_product: typing.Optional[UpsertBillingProductRequestBody] = OMIT,
credit_grants: typing.Optional[typing.Sequence[PlanBundleCreditGrantRequestBody]] = OMIT,
plan: typing.Optional[CreatePlanRequestBody] = OMIT,
- traits: typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> CreatePlanBundleResponse:
"""
@@ -292,8 +282,6 @@ async def create_plan_bundle(
plan : typing.Optional[CreatePlanRequestBody]
- traits : typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -330,7 +318,6 @@ async def main() -> None:
billing_product=billing_product,
credit_grants=credit_grants,
plan=plan,
- traits=traits,
request_options=request_options,
)
return _response.data
@@ -344,7 +331,6 @@ async def update_plan_bundle(
credit_grants: typing.Optional[typing.Sequence[PlanBundleCreditGrantRequestBody]] = OMIT,
plan: typing.Optional[UpdatePlanRequestBody] = OMIT,
plan_version_id: typing.Optional[str] = OMIT,
- traits: typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpdatePlanBundleResponse:
"""
@@ -363,8 +349,6 @@ async def update_plan_bundle(
plan_version_id : typing.Optional[str]
- traits : typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -404,7 +388,6 @@ async def main() -> None:
credit_grants=credit_grants,
plan=plan,
plan_version_id=plan_version_id,
- traits=traits,
request_options=request_options,
)
return _response.data
diff --git a/src/schematic/planbundle/raw_client.py b/src/schematic/planbundle/raw_client.py
index df71df9..356ab1c 100644
--- a/src/schematic/planbundle/raw_client.py
+++ b/src/schematic/planbundle/raw_client.py
@@ -22,7 +22,6 @@
from ..types.plan_bundle_credit_grant_request_body import PlanBundleCreditGrantRequestBody
from ..types.plan_bundle_entitlement_request_body import PlanBundleEntitlementRequestBody
from ..types.update_plan_request_body import UpdatePlanRequestBody
-from ..types.update_plan_trait_trait_request_body import UpdatePlanTraitTraitRequestBody
from ..types.upsert_billing_product_request_body import UpsertBillingProductRequestBody
from .types.create_custom_plan_bundle_response import CreateCustomPlanBundleResponse
from .types.create_plan_bundle_response import CreatePlanBundleResponse
@@ -169,7 +168,6 @@ def create_plan_bundle(
billing_product: typing.Optional[UpsertBillingProductRequestBody] = OMIT,
credit_grants: typing.Optional[typing.Sequence[PlanBundleCreditGrantRequestBody]] = OMIT,
plan: typing.Optional[CreatePlanRequestBody] = OMIT,
- traits: typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[CreatePlanBundleResponse]:
"""
@@ -183,8 +181,6 @@ def create_plan_bundle(
plan : typing.Optional[CreatePlanRequestBody]
- traits : typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -213,9 +209,6 @@ def create_plan_bundle(
"plan": convert_and_respect_annotation_metadata(
object_=plan, annotation=CreatePlanRequestBody, direction="write"
),
- "traits": convert_and_respect_annotation_metadata(
- object_=traits, annotation=typing.Sequence[UpdatePlanTraitTraitRequestBody], direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -310,7 +303,6 @@ def update_plan_bundle(
credit_grants: typing.Optional[typing.Sequence[PlanBundleCreditGrantRequestBody]] = OMIT,
plan: typing.Optional[UpdatePlanRequestBody] = OMIT,
plan_version_id: typing.Optional[str] = OMIT,
- traits: typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[UpdatePlanBundleResponse]:
"""
@@ -329,8 +321,6 @@ def update_plan_bundle(
plan_version_id : typing.Optional[str]
- traits : typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -360,9 +350,6 @@ def update_plan_bundle(
object_=plan, annotation=UpdatePlanRequestBody, direction="write"
),
"plan_version_id": plan_version_id,
- "traits": convert_and_respect_annotation_metadata(
- object_=traits, annotation=typing.Sequence[UpdatePlanTraitTraitRequestBody], direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -585,7 +572,6 @@ async def create_plan_bundle(
billing_product: typing.Optional[UpsertBillingProductRequestBody] = OMIT,
credit_grants: typing.Optional[typing.Sequence[PlanBundleCreditGrantRequestBody]] = OMIT,
plan: typing.Optional[CreatePlanRequestBody] = OMIT,
- traits: typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[CreatePlanBundleResponse]:
"""
@@ -599,8 +585,6 @@ async def create_plan_bundle(
plan : typing.Optional[CreatePlanRequestBody]
- traits : typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -629,9 +613,6 @@ async def create_plan_bundle(
"plan": convert_and_respect_annotation_metadata(
object_=plan, annotation=CreatePlanRequestBody, direction="write"
),
- "traits": convert_and_respect_annotation_metadata(
- object_=traits, annotation=typing.Sequence[UpdatePlanTraitTraitRequestBody], direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -726,7 +707,6 @@ async def update_plan_bundle(
credit_grants: typing.Optional[typing.Sequence[PlanBundleCreditGrantRequestBody]] = OMIT,
plan: typing.Optional[UpdatePlanRequestBody] = OMIT,
plan_version_id: typing.Optional[str] = OMIT,
- traits: typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[UpdatePlanBundleResponse]:
"""
@@ -745,8 +725,6 @@ async def update_plan_bundle(
plan_version_id : typing.Optional[str]
- traits : typing.Optional[typing.Sequence[UpdatePlanTraitTraitRequestBody]]
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -776,9 +754,6 @@ async def update_plan_bundle(
object_=plan, annotation=UpdatePlanRequestBody, direction="write"
),
"plan_version_id": plan_version_id,
- "traits": convert_and_respect_annotation_metadata(
- object_=traits, annotation=typing.Sequence[UpdatePlanTraitTraitRequestBody], direction="write"
- ),
},
headers={
"content-type": "application/json",
diff --git a/src/schematic/types/__init__.py b/src/schematic/types/__init__.py
index 21b3f0f..50b508c 100644
--- a/src/schematic/types/__init__.py
+++ b/src/schematic/types/__init__.py
@@ -198,6 +198,7 @@
from .event_body_flag_check import EventBodyFlagCheck
from .event_body_identify import EventBodyIdentify
from .event_body_identify_company import EventBodyIdentifyCompany
+ from .event_body_inference import EventBodyInference
from .event_body_track import EventBodyTrack
from .event_detail_response_data import EventDetailResponseData
from .event_response_data import EventResponseData
@@ -385,6 +386,8 @@
from .usage_time_series_point_response_data import UsageTimeSeriesPointResponseData
from .user_detail_response_data import UserDetailResponseData
from .user_response_data import UserResponseData
+ from .warning_tier_request_body import WarningTierRequestBody
+ from .warning_tier_response_data import WarningTierResponseData
from .web_feature_usage_webhook_output import WebFeatureUsageWebhookOutput
from .web_scheduled_downgrade_webhook_output import WebScheduledDowngradeWebhookOutput
from .webhook_event_detail_response_data import WebhookEventDetailResponseData
@@ -589,6 +592,7 @@
"EventBodyFlagCheck": ".event_body_flag_check",
"EventBodyIdentify": ".event_body_identify",
"EventBodyIdentifyCompany": ".event_body_identify_company",
+ "EventBodyInference": ".event_body_inference",
"EventBodyTrack": ".event_body_track",
"EventDetailResponseData": ".event_detail_response_data",
"EventResponseData": ".event_response_data",
@@ -774,6 +778,8 @@
"UsageTimeSeriesPointResponseData": ".usage_time_series_point_response_data",
"UserDetailResponseData": ".user_detail_response_data",
"UserResponseData": ".user_response_data",
+ "WarningTierRequestBody": ".warning_tier_request_body",
+ "WarningTierResponseData": ".warning_tier_response_data",
"WebFeatureUsageWebhookOutput": ".web_feature_usage_webhook_output",
"WebScheduledDowngradeWebhookOutput": ".web_scheduled_downgrade_webhook_output",
"WebhookEventDetailResponseData": ".webhook_event_detail_response_data",
@@ -1002,6 +1008,7 @@ def __dir__():
"EventBodyFlagCheck",
"EventBodyIdentify",
"EventBodyIdentifyCompany",
+ "EventBodyInference",
"EventBodyTrack",
"EventDetailResponseData",
"EventResponseData",
@@ -1187,6 +1194,8 @@ def __dir__():
"UsageTimeSeriesPointResponseData",
"UserDetailResponseData",
"UserResponseData",
+ "WarningTierRequestBody",
+ "WarningTierResponseData",
"WebFeatureUsageWebhookOutput",
"WebScheduledDowngradeWebhookOutput",
"WebhookEventDetailResponseData",
diff --git a/src/schematic/types/account_member_permission.py b/src/schematic/types/account_member_permission.py
index 693e716..7661c72 100644
--- a/src/schematic/types/account_member_permission.py
+++ b/src/schematic/types/account_member_permission.py
@@ -7,6 +7,7 @@
"companies_edit",
"company_users_edit",
"components_edit",
+ "custom_plans_edit",
"data_exports_edit",
"features_edit",
"flag_rules_edit",
diff --git a/src/schematic/types/billing_credit_grant_zeroed_out_reason.py b/src/schematic/types/billing_credit_grant_zeroed_out_reason.py
index 6f5860d..9f3e384 100644
--- a/src/schematic/types/billing_credit_grant_zeroed_out_reason.py
+++ b/src/schematic/types/billing_credit_grant_zeroed_out_reason.py
@@ -3,6 +3,14 @@
import typing
BillingCreditGrantZeroedOutReason = typing.Union[
- typing.Literal["expired", "integration_uninstalled", "manual", "plan_change", "plan_period_reset", "reconciled"],
+ typing.Literal[
+ "customer_archived",
+ "expired",
+ "integration_uninstalled",
+ "manual",
+ "plan_change",
+ "plan_period_reset",
+ "reconciled",
+ ],
typing.Any,
]
diff --git a/src/schematic/types/billing_plan_credit_grant_reset_cadence.py b/src/schematic/types/billing_plan_credit_grant_reset_cadence.py
index 6a72401..f60956a 100644
--- a/src/schematic/types/billing_plan_credit_grant_reset_cadence.py
+++ b/src/schematic/types/billing_plan_credit_grant_reset_cadence.py
@@ -2,4 +2,6 @@
import typing
-BillingPlanCreditGrantResetCadence = typing.Union[typing.Literal["daily", "monthly", "weekly", "yearly"], typing.Any]
+BillingPlanCreditGrantResetCadence = typing.Union[
+ typing.Literal["daily", "every_6_months", "monthly", "quarterly", "weekly", "yearly"], typing.Any
+]
diff --git a/src/schematic/types/event_body.py b/src/schematic/types/event_body.py
index f202a9e..b80612d 100644
--- a/src/schematic/types/event_body.py
+++ b/src/schematic/types/event_body.py
@@ -4,6 +4,7 @@
from .event_body_flag_check import EventBodyFlagCheck
from .event_body_identify import EventBodyIdentify
+from .event_body_inference import EventBodyInference
from .event_body_track import EventBodyTrack
-EventBody = typing.Union[EventBodyTrack, EventBodyFlagCheck, EventBodyIdentify]
+EventBody = typing.Union[EventBodyTrack, EventBodyFlagCheck, EventBodyIdentify, EventBodyInference]
diff --git a/src/schematic/types/event_body_inference.py b/src/schematic/types/event_body_inference.py
new file mode 100644
index 0000000..124518c
--- /dev/null
+++ b/src/schematic/types/event_body_inference.py
@@ -0,0 +1,87 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class EventBodyInference(UniversalBaseModel):
+ cached_input_tokens: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Number of input tokens served from cache
+ """
+
+ company: typing.Dict[str, str] = pydantic.Field()
+ """
+ Key-value pairs to identify the company associated with the inference event
+ """
+
+ cost: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Provided cost of the inference request as a decimal string; derived from model pricing when omitted
+ """
+
+ currency: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ ISO 4217 currency code for the provided cost; defaults to 'usd'
+ """
+
+ event: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Optional track event name to fan out for usage-based billing
+ """
+
+ input_tokens: int = pydantic.Field()
+ """
+ Number of input tokens for the inference request
+ """
+
+ operation: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ The inference operation; defaults to 'chat'
+ """
+
+ output_tokens: int = pydantic.Field()
+ """
+ Number of output tokens for the inference request
+ """
+
+ provider: str = pydantic.Field()
+ """
+ The inference provider (e.g. 'anthropic', 'openai')
+ """
+
+ reasoning_tokens: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Number of reasoning tokens for the inference request
+ """
+
+ request_model: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ The model requested for the inference request
+ """
+
+ requests: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Number of requests represented by this event; defaults to 1
+ """
+
+ response_model: str = pydantic.Field()
+ """
+ The model that served the inference response
+ """
+
+ user: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
+ """
+ Key-value pairs to identify the user associated with the inference event
+ """
+
+ 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/event_type.py b/src/schematic/types/event_type.py
index f82e7b1..c398826 100644
--- a/src/schematic/types/event_type.py
+++ b/src/schematic/types/event_type.py
@@ -2,4 +2,4 @@
import typing
-EventType = typing.Union[typing.Literal["flag_check", "identify", "track"], typing.Any]
+EventType = typing.Union[typing.Literal["flag_check", "identify", "inference", "track"], typing.Any]
diff --git a/src/schematic/types/plan_bundle_response_data.py b/src/schematic/types/plan_bundle_response_data.py
index 1b06e35..550453e 100644
--- a/src/schematic/types/plan_bundle_response_data.py
+++ b/src/schematic/types/plan_bundle_response_data.py
@@ -8,7 +8,6 @@
from .billing_product_plan_response_data import BillingProductPlanResponseData
from .plan_entitlement_response_data import PlanEntitlementResponseData
from .plan_response_data import PlanResponseData
-from .plan_trait_response_data import PlanTraitResponseData
class PlanBundleResponseData(UniversalBaseModel):
@@ -16,7 +15,6 @@ class PlanBundleResponseData(UniversalBaseModel):
credit_grants: typing.Optional[typing.List[BillingPlanCreditGrantResponseData]] = None
entitlements: typing.Optional[typing.List[PlanEntitlementResponseData]] = None
plan: typing.Optional[PlanResponseData] = None
- traits: typing.Optional[typing.List[PlanTraitResponseData]] = 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/plan_entitlement_response_data.py b/src/schematic/types/plan_entitlement_response_data.py
index dc24b51..c9245b0 100644
--- a/src/schematic/types/plan_entitlement_response_data.py
+++ b/src/schematic/types/plan_entitlement_response_data.py
@@ -17,6 +17,7 @@
from .metric_period import MetricPeriod
from .metric_period_month_reset import MetricPeriodMonthReset
from .plan_response_data import PlanResponseData
+from .warning_tier_response_data import WarningTierResponseData
class PlanEntitlementResponseData(UniversalBaseModel):
@@ -53,6 +54,7 @@ class PlanEntitlementResponseData(UniversalBaseModel):
value_trait: typing.Optional[EntityTraitDefinitionResponseData] = None
value_trait_id: typing.Optional[str] = None
value_type: EntitlementValueType
+ warning_tiers: typing.List[WarningTierResponseData]
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/warning_tier_request_body.py b/src/schematic/types/warning_tier_request_body.py
new file mode 100644
index 0000000..3a38d63
--- /dev/null
+++ b/src/schematic/types/warning_tier_request_body.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class WarningTierRequestBody(UniversalBaseModel):
+ key: str
+ value: int
+
+ 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/warning_tier_response_data.py b/src/schematic/types/warning_tier_response_data.py
new file mode 100644
index 0000000..6ea36e5
--- /dev/null
+++ b/src/schematic/types/warning_tier_response_data.py
@@ -0,0 +1,21 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class WarningTierResponseData(UniversalBaseModel):
+ id: str
+ key: str
+ value: int
+
+ 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