client: regenerate from hanzo-inc/cloud@95d9f810dd (8.5.704)

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
2026-10-09 23:48:10 +00:00
co-authored by Hanzo Dev
parent 527ba6ae03
commit ddab78c22f
5 changed files with 13 additions and 11 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
ref=ffdcf5c42d8fe3f3a56e877ceeaf22bc10cc490e
sha256=b9e684c147b86f15504a86d81f9c382b782a2a6c72b8cc4b5b333100851dd1a2
ref=95d9f810dd5f5e49022c5b370dd4df479b081903
sha256=0fb00a711061e88762c276e8c05d205c85563cee814f04ffd8fbef7e7a4d73da
repo=hanzo-inc/cloud
path=openapi.yaml
+6 -6
View File
@@ -5317,7 +5317,7 @@ class BillingApi:
) -> None:
"""The plan catalog, priced with whatever offer is in force
Answers every plan on sale — its price, what it includes, and the limits it carries — optionally narrowed to one `?category=`. The prices are what the CHECKOUT will charge: any active promotion is applied before they leave the store, so a reader never applies a discount a second time and a quote can never disagree with the sale. It is public and needs no tenant, and it is the catalog of the brand the request's host resolves to — the same brand `/v1/commerce/org` answers there. A brand that publishes no plans answers an empty list.
Answers every plan on sale — its price, what it includes, and the limits it carries — optionally narrowed to one `?category=`. The prices are what the CHECKOUT will charge: any active promotion is applied before they leave the store, so a reader never applies a discount a second time and a quote can never disagree with the sale. `?coupon=` quotes the catalog under a plan coupon code: each paid plan it covers carries `couponCode`, `couponPercent`, `couponFirstCents` (the first month's charge under it) and `couponEnds`; every other row carries `couponError` — `unknown`, `expired`, `exhausted` or `not_applicable`. Nothing is reserved by a quote. Without the parameter the catalog is unchanged. It is public and needs no tenant, and it is the catalog of the brand the request's host resolves to — the same brand `/v1/commerce/org` answers there. A brand that publishes no plans answers an empty list.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
@@ -5379,7 +5379,7 @@ class BillingApi:
) -> ApiResponse[None]:
"""The plan catalog, priced with whatever offer is in force
Answers every plan on sale — its price, what it includes, and the limits it carries — optionally narrowed to one `?category=`. The prices are what the CHECKOUT will charge: any active promotion is applied before they leave the store, so a reader never applies a discount a second time and a quote can never disagree with the sale. It is public and needs no tenant, and it is the catalog of the brand the request's host resolves to — the same brand `/v1/commerce/org` answers there. A brand that publishes no plans answers an empty list.
Answers every plan on sale — its price, what it includes, and the limits it carries — optionally narrowed to one `?category=`. The prices are what the CHECKOUT will charge: any active promotion is applied before they leave the store, so a reader never applies a discount a second time and a quote can never disagree with the sale. `?coupon=` quotes the catalog under a plan coupon code: each paid plan it covers carries `couponCode`, `couponPercent`, `couponFirstCents` (the first month's charge under it) and `couponEnds`; every other row carries `couponError` — `unknown`, `expired`, `exhausted` or `not_applicable`. Nothing is reserved by a quote. Without the parameter the catalog is unchanged. It is public and needs no tenant, and it is the catalog of the brand the request's host resolves to — the same brand `/v1/commerce/org` answers there. A brand that publishes no plans answers an empty list.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
@@ -5441,7 +5441,7 @@ class BillingApi:
) -> RESTResponseType:
"""The plan catalog, priced with whatever offer is in force
Answers every plan on sale — its price, what it includes, and the limits it carries — optionally narrowed to one `?category=`. The prices are what the CHECKOUT will charge: any active promotion is applied before they leave the store, so a reader never applies a discount a second time and a quote can never disagree with the sale. It is public and needs no tenant, and it is the catalog of the brand the request's host resolves to — the same brand `/v1/commerce/org` answers there. A brand that publishes no plans answers an empty list.
Answers every plan on sale — its price, what it includes, and the limits it carries — optionally narrowed to one `?category=`. The prices are what the CHECKOUT will charge: any active promotion is applied before they leave the store, so a reader never applies a discount a second time and a quote can never disagree with the sale. `?coupon=` quotes the catalog under a plan coupon code: each paid plan it covers carries `couponCode`, `couponPercent`, `couponFirstCents` (the first month's charge under it) and `couponEnds`; every other row carries `couponError` — `unknown`, `expired`, `exhausted` or `not_applicable`. Nothing is reserved by a quote. Without the parameter the catalog is unchanged. It is public and needs no tenant, and it is the catalog of the brand the request's host resolves to — the same brand `/v1/commerce/org` answers there. A brand that publishes no plans answers an empty list.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
@@ -10672,7 +10672,7 @@ class BillingApi:
) -> None:
"""Buy a plan with a card
Vaults the card (or reuses one already on file), charges the plan's FIRST period at the catalog price, and opens the subscription — one act, all of it server-side. There is NO AMOUNT in the request. `level` picks which of the plan's published prices to buy at — an index, never a number — so what the card is charged is decided by the catalog and underpaying cannot be expressed. `interval` picks the term: \"month\" (the default) or \"year\", which charges the plan's annual total now and renews yearly. A plan with no annual price refuses \"year\". A fresh sale answers 201 with the receipt. An identical retry answers 200 with the FIRST sale's body, byte for byte, so a client cannot read a replay as a second subscription having been opened. A caller already on a paid plan is 409 rather than charged again.
Vaults the card (or reuses one already on file), charges the plan's FIRST period at the catalog price, and opens the subscription — one act, all of it server-side. There is NO AMOUNT in the request. `level` picks which of the plan's published prices to buy at — an index, never a number — so what the card is charged is decided by the catalog and underpaying cannot be expressed. `interval` picks the term: \"month\" (the default) or \"year\", which charges the plan's annual total now and renews yearly. A plan with no annual price refuses \"year\". `coupon` is a plan coupon code (case-insensitive) for a percent off the FIRST month only; renewals bill the catalog price. It is a code, never an amount. A code that is unknown, expired, used up, not for this plan, or sent with annual billing or prepaid credit is 400, and one this org or this card has already redeemed is 409 — before any card is charged, never a silent full-price sale. The receipt names the coupon and its percent. A fresh sale answers 201 with the receipt. An identical retry answers 200 with the FIRST sale's body, byte for byte, so a client cannot read a replay as a second subscription having been opened. A caller already on a paid plan is 409 rather than charged again.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
@@ -10734,7 +10734,7 @@ class BillingApi:
) -> ApiResponse[None]:
"""Buy a plan with a card
Vaults the card (or reuses one already on file), charges the plan's FIRST period at the catalog price, and opens the subscription — one act, all of it server-side. There is NO AMOUNT in the request. `level` picks which of the plan's published prices to buy at — an index, never a number — so what the card is charged is decided by the catalog and underpaying cannot be expressed. `interval` picks the term: \"month\" (the default) or \"year\", which charges the plan's annual total now and renews yearly. A plan with no annual price refuses \"year\". A fresh sale answers 201 with the receipt. An identical retry answers 200 with the FIRST sale's body, byte for byte, so a client cannot read a replay as a second subscription having been opened. A caller already on a paid plan is 409 rather than charged again.
Vaults the card (or reuses one already on file), charges the plan's FIRST period at the catalog price, and opens the subscription — one act, all of it server-side. There is NO AMOUNT in the request. `level` picks which of the plan's published prices to buy at — an index, never a number — so what the card is charged is decided by the catalog and underpaying cannot be expressed. `interval` picks the term: \"month\" (the default) or \"year\", which charges the plan's annual total now and renews yearly. A plan with no annual price refuses \"year\". `coupon` is a plan coupon code (case-insensitive) for a percent off the FIRST month only; renewals bill the catalog price. It is a code, never an amount. A code that is unknown, expired, used up, not for this plan, or sent with annual billing or prepaid credit is 400, and one this org or this card has already redeemed is 409 — before any card is charged, never a silent full-price sale. The receipt names the coupon and its percent. A fresh sale answers 201 with the receipt. An identical retry answers 200 with the FIRST sale's body, byte for byte, so a client cannot read a replay as a second subscription having been opened. A caller already on a paid plan is 409 rather than charged again.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
@@ -10796,7 +10796,7 @@ class BillingApi:
) -> RESTResponseType:
"""Buy a plan with a card
Vaults the card (or reuses one already on file), charges the plan's FIRST period at the catalog price, and opens the subscription — one act, all of it server-side. There is NO AMOUNT in the request. `level` picks which of the plan's published prices to buy at — an index, never a number — so what the card is charged is decided by the catalog and underpaying cannot be expressed. `interval` picks the term: \"month\" (the default) or \"year\", which charges the plan's annual total now and renews yearly. A plan with no annual price refuses \"year\". A fresh sale answers 201 with the receipt. An identical retry answers 200 with the FIRST sale's body, byte for byte, so a client cannot read a replay as a second subscription having been opened. A caller already on a paid plan is 409 rather than charged again.
Vaults the card (or reuses one already on file), charges the plan's FIRST period at the catalog price, and opens the subscription — one act, all of it server-side. There is NO AMOUNT in the request. `level` picks which of the plan's published prices to buy at — an index, never a number — so what the card is charged is decided by the catalog and underpaying cannot be expressed. `interval` picks the term: \"month\" (the default) or \"year\", which charges the plan's annual total now and renews yearly. A plan with no annual price refuses \"year\". `coupon` is a plan coupon code (case-insensitive) for a percent off the FIRST month only; renewals bill the catalog price. It is a code, never an amount. A code that is unknown, expired, used up, not for this plan, or sent with annual billing or prepaid credit is 400, and one this org or this card has already redeemed is 409 — before any card is charged, never a silent full-price sale. The receipt names the coupon and its percent. A fresh sale answers 201 with the receipt. An identical retry answers 200 with the FIRST sale's body, byte for byte, so a client cannot read a replay as a second subscription having been opened. A caller already on a paid plan is 409 rather than charged again.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
@@ -44,11 +44,12 @@ class BillingSubscription(BaseModel):
seats: Optional[StrictInt] = Field(default=None, description="Seats is the seat count the period in hand was paid for — its paid invoice's quantity, or the quantity recorded with an external period — never the row's live Quantity, which the holder may change. 0 when the period is unpaid.")
settled: Optional[StrictStr] = Field(default=None, description="Settled is how the period in hand was paid: \"card\" (a card paid all of it), \"external:<processor>\" (a payment recorded as collected outside commerce), \"balance\", \"credit\" or \"mixed\" (prepaid money). Empty when unpaid or unknown.")
status: Optional[StrictStr] = Field(default=None, description="Status is trialing, active, past_due, canceled or unpaid. Only active and trialing confer the plan.")
test: Optional[StrictBool] = Field(default=None, description="Test marks a sandbox subscription: sold while its org was in test mode, paid with sandbox money. It is listed and never revenue.")
trial_end: Optional[StrictStr] = Field(default=None, description="TrialEnd is when that trial ends; absent when there was none.", alias="trialEnd")
trial_start: Optional[StrictStr] = Field(default=None, description="TrialStart is when a trial began; absent when there was none.", alias="trialStart")
updated_at: Optional[StrictStr] = Field(default=None, description="UpdatedAt is when the row last changed, RFC 3339.", alias="updatedAt")
user_id: Optional[StrictStr] = Field(default=None, description="UserID is the billing account that holds it: the org slug for an org's own plan, \"<org>/<name>\" for a member's.", alias="userId")
__properties: ClassVar[List[str]] = ["cancelAtPeriodEnd", "canceledAt", "chargedCents", "createdAt", "currentPeriodEnd", "currentPeriodStart", "defaultPaymentMethod", "endedAt", "id", "mrrCents", "plan", "planId", "providerType", "quantity", "seats", "settled", "status", "trialEnd", "trialStart", "updatedAt", "userId"]
__properties: ClassVar[List[str]] = ["cancelAtPeriodEnd", "canceledAt", "chargedCents", "createdAt", "currentPeriodEnd", "currentPeriodStart", "defaultPaymentMethod", "endedAt", "id", "mrrCents", "plan", "planId", "providerType", "quantity", "seats", "settled", "status", "test", "trialEnd", "trialStart", "updatedAt", "userId"]
model_config = ConfigDict(
populate_by_name=True,
@@ -121,6 +122,7 @@ class BillingSubscription(BaseModel):
"seats": obj.get("seats"),
"settled": obj.get("settled"),
"status": obj.get("status"),
"test": obj.get("test"),
"trialEnd": obj.get("trialEnd"),
"trialStart": obj.get("trialStart"),
"updatedAt": obj.get("updatedAt"),
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "hanzoai"
version = "8.5.699"
version = "8.5.704"
description = "The official Python library for the Hanzo API"
dynamic = ["readme"]
license = "Apache-2.0"
Generated
+1 -1
View File
@@ -2252,7 +2252,7 @@ wheels = [
[[package]]
name = "hanzoai"
version = "8.5.655"
version = "8.5.699"
source = { editable = "." }
dependencies = [
{ name = "pydantic" },