Skip to content

Commit 0eaba5f

Browse files
stainless-app[bot]stainless-bot
authored andcommitted
feat(api): add methods to prices and invoices (#321)
1 parent 6dc313b commit 0eaba5f

19 files changed

+1427
-5
lines changed

.stats.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
configured_endpoints: 90
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb-3c64831407a4e2d742e93f5ebf78391c83a2ec833e3026518c91515240294e0b.yml
1+
configured_endpoints: 93
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb-36672419987ce3762474f5fe41ded634068ca8780d7e2a835943ff294a88d031.yml

api.md

+3
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ from orb.types import Invoice, InvoiceFetchUpcomingResponse
227227
Methods:
228228

229229
- <code title="post /invoices">client.invoices.<a href="./src/orb/resources/invoices.py">create</a>(\*\*<a href="src/orb/types/invoice_create_params.py">params</a>) -> <a href="./src/orb/types/invoice.py">Invoice</a></code>
230+
- <code title="put /invoices/{invoice_id}">client.invoices.<a href="./src/orb/resources/invoices.py">update</a>(invoice_id, \*\*<a href="src/orb/types/invoice_update_params.py">params</a>) -> <a href="./src/orb/types/invoice.py">Invoice</a></code>
230231
- <code title="get /invoices">client.invoices.<a href="./src/orb/resources/invoices.py">list</a>(\*\*<a href="src/orb/types/invoice_list_params.py">params</a>) -> <a href="./src/orb/types/invoice.py">SyncPage[Invoice]</a></code>
231232
- <code title="get /invoices/{invoice_id}">client.invoices.<a href="./src/orb/resources/invoices.py">fetch</a>(invoice_id) -> <a href="./src/orb/types/invoice.py">Invoice</a></code>
232233
- <code title="get /invoices/upcoming">client.invoices.<a href="./src/orb/resources/invoices.py">fetch_upcoming</a>(\*\*<a href="src/orb/types/invoice_fetch_upcoming_params.py">params</a>) -> <a href="./src/orb/types/invoice_fetch_upcoming_response.py">InvoiceFetchUpcomingResponse</a></code>
@@ -296,6 +297,7 @@ from orb.types import EvaluatePriceGroup, Price, PriceEvaluateResponse
296297
Methods:
297298

298299
- <code title="post /prices">client.prices.<a href="./src/orb/resources/prices/prices.py">create</a>(\*\*<a href="src/orb/types/price_create_params.py">params</a>) -> <a href="./src/orb/types/price.py">Price</a></code>
300+
- <code title="put /prices/{price_id}">client.prices.<a href="./src/orb/resources/prices/prices.py">update</a>(price_id, \*\*<a href="src/orb/types/price_update_params.py">params</a>) -> <a href="./src/orb/types/price.py">Price</a></code>
299301
- <code title="get /prices">client.prices.<a href="./src/orb/resources/prices/prices.py">list</a>(\*\*<a href="src/orb/types/price_list_params.py">params</a>) -> <a href="./src/orb/types/price.py">SyncPage[Price]</a></code>
300302
- <code title="post /prices/{price_id}/evaluate">client.prices.<a href="./src/orb/resources/prices/prices.py">evaluate</a>(price_id, \*\*<a href="src/orb/types/price_evaluate_params.py">params</a>) -> <a href="./src/orb/types/price_evaluate_response.py">PriceEvaluateResponse</a></code>
301303
- <code title="get /prices/{price_id}">client.prices.<a href="./src/orb/resources/prices/prices.py">fetch</a>(price_id) -> <a href="./src/orb/types/price.py">Price</a></code>
@@ -304,6 +306,7 @@ Methods:
304306

305307
Methods:
306308

309+
- <code title="put /prices/external_price_id/{external_price_id}">client.prices.external_price_id.<a href="./src/orb/resources/prices/external_price_id.py">update</a>(external_price_id, \*\*<a href="src/orb/types/prices/external_price_id_update_params.py">params</a>) -> <a href="./src/orb/types/price.py">Price</a></code>
307310
- <code title="get /prices/external_price_id/{external_price_id}">client.prices.external_price_id.<a href="./src/orb/resources/prices/external_price_id.py">fetch</a>(external_price_id) -> <a href="./src/orb/types/price.py">Price</a></code>
308311

309312
# Subscriptions

src/orb/resources/invoices.py

+115
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
shared_params,
1414
invoice_list_params,
1515
invoice_create_params,
16+
invoice_update_params,
1617
invoice_mark_paid_params,
1718
invoice_fetch_upcoming_params,
1819
)
@@ -131,6 +132,57 @@ def create(
131132
cast_to=Invoice,
132133
)
133134

135+
def update(
136+
self,
137+
invoice_id: str,
138+
*,
139+
metadata: Optional[Dict[str, Optional[str]]] | NotGiven = NOT_GIVEN,
140+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
141+
# The extra values given here take precedence over values defined on the client or passed to this method.
142+
extra_headers: Headers | None = None,
143+
extra_query: Query | None = None,
144+
extra_body: Body | None = None,
145+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
146+
idempotency_key: str | None = None,
147+
) -> Invoice:
148+
"""This endpoint allows you to update the `metadata` property on an invoice.
149+
150+
If you
151+
pass null for the metadata value, it will clear any existing metadata for that
152+
invoice.
153+
154+
`metadata` can be modified regardless of invoice state.
155+
156+
Args:
157+
metadata: User-specified key/value pairs for the resource. Individual keys can be removed
158+
by setting the value to `null`, and the entire metadata mapping can be cleared
159+
by setting `metadata` to `null`.
160+
161+
extra_headers: Send extra headers
162+
163+
extra_query: Add additional query parameters to the request
164+
165+
extra_body: Add additional JSON properties to the request
166+
167+
timeout: Override the client-level default timeout for this request, in seconds
168+
169+
idempotency_key: Specify a custom idempotency key for this request
170+
"""
171+
if not invoice_id:
172+
raise ValueError(f"Expected a non-empty value for `invoice_id` but received {invoice_id!r}")
173+
return self._put(
174+
f"/invoices/{invoice_id}",
175+
body=maybe_transform({"metadata": metadata}, invoice_update_params.InvoiceUpdateParams),
176+
options=make_request_options(
177+
extra_headers=extra_headers,
178+
extra_query=extra_query,
179+
extra_body=extra_body,
180+
timeout=timeout,
181+
idempotency_key=idempotency_key,
182+
),
183+
cast_to=Invoice,
184+
)
185+
134186
def list(
135187
self,
136188
*,
@@ -546,6 +598,57 @@ async def create(
546598
cast_to=Invoice,
547599
)
548600

601+
async def update(
602+
self,
603+
invoice_id: str,
604+
*,
605+
metadata: Optional[Dict[str, Optional[str]]] | NotGiven = NOT_GIVEN,
606+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
607+
# The extra values given here take precedence over values defined on the client or passed to this method.
608+
extra_headers: Headers | None = None,
609+
extra_query: Query | None = None,
610+
extra_body: Body | None = None,
611+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
612+
idempotency_key: str | None = None,
613+
) -> Invoice:
614+
"""This endpoint allows you to update the `metadata` property on an invoice.
615+
616+
If you
617+
pass null for the metadata value, it will clear any existing metadata for that
618+
invoice.
619+
620+
`metadata` can be modified regardless of invoice state.
621+
622+
Args:
623+
metadata: User-specified key/value pairs for the resource. Individual keys can be removed
624+
by setting the value to `null`, and the entire metadata mapping can be cleared
625+
by setting `metadata` to `null`.
626+
627+
extra_headers: Send extra headers
628+
629+
extra_query: Add additional query parameters to the request
630+
631+
extra_body: Add additional JSON properties to the request
632+
633+
timeout: Override the client-level default timeout for this request, in seconds
634+
635+
idempotency_key: Specify a custom idempotency key for this request
636+
"""
637+
if not invoice_id:
638+
raise ValueError(f"Expected a non-empty value for `invoice_id` but received {invoice_id!r}")
639+
return await self._put(
640+
f"/invoices/{invoice_id}",
641+
body=await async_maybe_transform({"metadata": metadata}, invoice_update_params.InvoiceUpdateParams),
642+
options=make_request_options(
643+
extra_headers=extra_headers,
644+
extra_query=extra_query,
645+
extra_body=extra_body,
646+
timeout=timeout,
647+
idempotency_key=idempotency_key,
648+
),
649+
cast_to=Invoice,
650+
)
651+
549652
def list(
550653
self,
551654
*,
@@ -869,6 +972,9 @@ def __init__(self, invoices: Invoices) -> None:
869972
self.create = _legacy_response.to_raw_response_wrapper(
870973
invoices.create,
871974
)
975+
self.update = _legacy_response.to_raw_response_wrapper(
976+
invoices.update,
977+
)
872978
self.list = _legacy_response.to_raw_response_wrapper(
873979
invoices.list,
874980
)
@@ -896,6 +1002,9 @@ def __init__(self, invoices: AsyncInvoices) -> None:
8961002
self.create = _legacy_response.async_to_raw_response_wrapper(
8971003
invoices.create,
8981004
)
1005+
self.update = _legacy_response.async_to_raw_response_wrapper(
1006+
invoices.update,
1007+
)
8991008
self.list = _legacy_response.async_to_raw_response_wrapper(
9001009
invoices.list,
9011010
)
@@ -923,6 +1032,9 @@ def __init__(self, invoices: Invoices) -> None:
9231032
self.create = to_streamed_response_wrapper(
9241033
invoices.create,
9251034
)
1035+
self.update = to_streamed_response_wrapper(
1036+
invoices.update,
1037+
)
9261038
self.list = to_streamed_response_wrapper(
9271039
invoices.list,
9281040
)
@@ -950,6 +1062,9 @@ def __init__(self, invoices: AsyncInvoices) -> None:
9501062
self.create = async_to_streamed_response_wrapper(
9511063
invoices.create,
9521064
)
1065+
self.update = async_to_streamed_response_wrapper(
1066+
invoices.update,
1067+
)
9531068
self.list = async_to_streamed_response_wrapper(
9541069
invoices.list,
9551070
)

src/orb/resources/prices/external_price_id.py

+126-1
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,22 @@
22

33
from __future__ import annotations
44

5-
from typing import Any, cast
5+
from typing import Any, Dict, Optional, cast
66

77
import httpx
88

99
from ... import _legacy_response
1010
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
11+
from ..._utils import (
12+
maybe_transform,
13+
async_maybe_transform,
14+
)
1115
from ..._compat import cached_property
1216
from ..._resource import SyncAPIResource, AsyncAPIResource
1317
from ..._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
1418
from ...types.price import Price
1519
from ..._base_client import make_request_options
20+
from ...types.prices import external_price_id_update_params
1621

1722
__all__ = ["ExternalPriceID", "AsyncExternalPriceID"]
1823

@@ -26,6 +31,60 @@ def with_raw_response(self) -> ExternalPriceIDWithRawResponse:
2631
def with_streaming_response(self) -> ExternalPriceIDWithStreamingResponse:
2732
return ExternalPriceIDWithStreamingResponse(self)
2833

34+
def update(
35+
self,
36+
external_price_id: str,
37+
*,
38+
metadata: Optional[Dict[str, Optional[str]]] | NotGiven = NOT_GIVEN,
39+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
40+
# The extra values given here take precedence over values defined on the client or passed to this method.
41+
extra_headers: Headers | None = None,
42+
extra_query: Query | None = None,
43+
extra_body: Body | None = None,
44+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
45+
idempotency_key: str | None = None,
46+
) -> Price:
47+
"""This endpoint allows you to update the `metadata` property on a price.
48+
49+
If you
50+
pass null for the metadata value, it will clear any existing metadata for that
51+
price.
52+
53+
Args:
54+
metadata: User-specified key/value pairs for the resource. Individual keys can be removed
55+
by setting the value to `null`, and the entire metadata mapping can be cleared
56+
by setting `metadata` to `null`.
57+
58+
extra_headers: Send extra headers
59+
60+
extra_query: Add additional query parameters to the request
61+
62+
extra_body: Add additional JSON properties to the request
63+
64+
timeout: Override the client-level default timeout for this request, in seconds
65+
66+
idempotency_key: Specify a custom idempotency key for this request
67+
"""
68+
if not external_price_id:
69+
raise ValueError(f"Expected a non-empty value for `external_price_id` but received {external_price_id!r}")
70+
return cast(
71+
Price,
72+
self._put(
73+
f"/prices/external_price_id/{external_price_id}",
74+
body=maybe_transform(
75+
{"metadata": metadata}, external_price_id_update_params.ExternalPriceIDUpdateParams
76+
),
77+
options=make_request_options(
78+
extra_headers=extra_headers,
79+
extra_query=extra_query,
80+
extra_body=extra_body,
81+
timeout=timeout,
82+
idempotency_key=idempotency_key,
83+
),
84+
cast_to=cast(Any, Price), # Union types cannot be passed in as arguments in the type system
85+
),
86+
)
87+
2988
def fetch(
3089
self,
3190
external_price_id: str,
@@ -75,6 +134,60 @@ def with_raw_response(self) -> AsyncExternalPriceIDWithRawResponse:
75134
def with_streaming_response(self) -> AsyncExternalPriceIDWithStreamingResponse:
76135
return AsyncExternalPriceIDWithStreamingResponse(self)
77136

137+
async def update(
138+
self,
139+
external_price_id: str,
140+
*,
141+
metadata: Optional[Dict[str, Optional[str]]] | NotGiven = NOT_GIVEN,
142+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
143+
# The extra values given here take precedence over values defined on the client or passed to this method.
144+
extra_headers: Headers | None = None,
145+
extra_query: Query | None = None,
146+
extra_body: Body | None = None,
147+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
148+
idempotency_key: str | None = None,
149+
) -> Price:
150+
"""This endpoint allows you to update the `metadata` property on a price.
151+
152+
If you
153+
pass null for the metadata value, it will clear any existing metadata for that
154+
price.
155+
156+
Args:
157+
metadata: User-specified key/value pairs for the resource. Individual keys can be removed
158+
by setting the value to `null`, and the entire metadata mapping can be cleared
159+
by setting `metadata` to `null`.
160+
161+
extra_headers: Send extra headers
162+
163+
extra_query: Add additional query parameters to the request
164+
165+
extra_body: Add additional JSON properties to the request
166+
167+
timeout: Override the client-level default timeout for this request, in seconds
168+
169+
idempotency_key: Specify a custom idempotency key for this request
170+
"""
171+
if not external_price_id:
172+
raise ValueError(f"Expected a non-empty value for `external_price_id` but received {external_price_id!r}")
173+
return cast(
174+
Price,
175+
await self._put(
176+
f"/prices/external_price_id/{external_price_id}",
177+
body=await async_maybe_transform(
178+
{"metadata": metadata}, external_price_id_update_params.ExternalPriceIDUpdateParams
179+
),
180+
options=make_request_options(
181+
extra_headers=extra_headers,
182+
extra_query=extra_query,
183+
extra_body=extra_body,
184+
timeout=timeout,
185+
idempotency_key=idempotency_key,
186+
),
187+
cast_to=cast(Any, Price), # Union types cannot be passed in as arguments in the type system
188+
),
189+
)
190+
78191
async def fetch(
79192
self,
80193
external_price_id: str,
@@ -119,6 +232,9 @@ class ExternalPriceIDWithRawResponse:
119232
def __init__(self, external_price_id: ExternalPriceID) -> None:
120233
self._external_price_id = external_price_id
121234

235+
self.update = _legacy_response.to_raw_response_wrapper(
236+
external_price_id.update,
237+
)
122238
self.fetch = _legacy_response.to_raw_response_wrapper(
123239
external_price_id.fetch,
124240
)
@@ -128,6 +244,9 @@ class AsyncExternalPriceIDWithRawResponse:
128244
def __init__(self, external_price_id: AsyncExternalPriceID) -> None:
129245
self._external_price_id = external_price_id
130246

247+
self.update = _legacy_response.async_to_raw_response_wrapper(
248+
external_price_id.update,
249+
)
131250
self.fetch = _legacy_response.async_to_raw_response_wrapper(
132251
external_price_id.fetch,
133252
)
@@ -137,6 +256,9 @@ class ExternalPriceIDWithStreamingResponse:
137256
def __init__(self, external_price_id: ExternalPriceID) -> None:
138257
self._external_price_id = external_price_id
139258

259+
self.update = to_streamed_response_wrapper(
260+
external_price_id.update,
261+
)
140262
self.fetch = to_streamed_response_wrapper(
141263
external_price_id.fetch,
142264
)
@@ -146,6 +268,9 @@ class AsyncExternalPriceIDWithStreamingResponse:
146268
def __init__(self, external_price_id: AsyncExternalPriceID) -> None:
147269
self._external_price_id = external_price_id
148270

271+
self.update = async_to_streamed_response_wrapper(
272+
external_price_id.update,
273+
)
149274
self.fetch = async_to_streamed_response_wrapper(
150275
external_price_id.fetch,
151276
)

0 commit comments

Comments
 (0)