payi 0.1.0a13__py3-none-any.whl → 0.1.0a14__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of payi might be problematic. Click here for more details.

@@ -0,0 +1,450 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Union
6
+ from datetime import datetime
7
+
8
+ import httpx
9
+
10
+ from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
11
+ from ..._utils import (
12
+ maybe_transform,
13
+ async_maybe_transform,
14
+ )
15
+ from ..._compat import cached_property
16
+ from ..._resource import SyncAPIResource, AsyncAPIResource
17
+ from ..._response import (
18
+ to_raw_response_wrapper,
19
+ to_streamed_response_wrapper,
20
+ async_to_raw_response_wrapper,
21
+ async_to_streamed_response_wrapper,
22
+ )
23
+ from ..._base_client import make_request_options
24
+ from ...types.categories import resource_create_params
25
+ from ...types.category_resource_response import CategoryResourceResponse
26
+ from ...types.categories.resource_list_response import ResourceListResponse
27
+
28
+ __all__ = ["ResourcesResource", "AsyncResourcesResource"]
29
+
30
+
31
+ class ResourcesResource(SyncAPIResource):
32
+ @cached_property
33
+ def with_raw_response(self) -> ResourcesResourceWithRawResponse:
34
+ return ResourcesResourceWithRawResponse(self)
35
+
36
+ @cached_property
37
+ def with_streaming_response(self) -> ResourcesResourceWithStreamingResponse:
38
+ return ResourcesResourceWithStreamingResponse(self)
39
+
40
+ def create(
41
+ self,
42
+ resource: str,
43
+ *,
44
+ category: str,
45
+ start_timestamp: Union[str, datetime],
46
+ input_price: float | NotGiven = NOT_GIVEN,
47
+ max_input_units: int | NotGiven = NOT_GIVEN,
48
+ max_output_units: int | NotGiven = NOT_GIVEN,
49
+ output_price: float | NotGiven = NOT_GIVEN,
50
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
51
+ # The extra values given here take precedence over values defined on the client or passed to this method.
52
+ extra_headers: Headers | None = None,
53
+ extra_query: Query | None = None,
54
+ extra_body: Body | None = None,
55
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
56
+ ) -> CategoryResourceResponse:
57
+ """
58
+ Create a Resource
59
+
60
+ Args:
61
+ extra_headers: Send extra headers
62
+
63
+ extra_query: Add additional query parameters to the request
64
+
65
+ extra_body: Add additional JSON properties to the request
66
+
67
+ timeout: Override the client-level default timeout for this request, in seconds
68
+ """
69
+ if not category:
70
+ raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
71
+ if not resource:
72
+ raise ValueError(f"Expected a non-empty value for `resource` but received {resource!r}")
73
+ return self._post(
74
+ f"/api/v1/categories/{category}/resources/{resource}",
75
+ body=maybe_transform(
76
+ {
77
+ "start_timestamp": start_timestamp,
78
+ "input_price": input_price,
79
+ "max_input_units": max_input_units,
80
+ "max_output_units": max_output_units,
81
+ "output_price": output_price,
82
+ },
83
+ resource_create_params.ResourceCreateParams,
84
+ ),
85
+ options=make_request_options(
86
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
87
+ ),
88
+ cast_to=CategoryResourceResponse,
89
+ )
90
+
91
+ def retrieve(
92
+ self,
93
+ start_timestamp: Union[str, datetime],
94
+ *,
95
+ category: str,
96
+ resource: str,
97
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
98
+ # The extra values given here take precedence over values defined on the client or passed to this method.
99
+ extra_headers: Headers | None = None,
100
+ extra_query: Query | None = None,
101
+ extra_body: Body | None = None,
102
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
103
+ ) -> CategoryResourceResponse:
104
+ """
105
+ Get a Resource's version details
106
+
107
+ Args:
108
+ extra_headers: Send extra headers
109
+
110
+ extra_query: Add additional query parameters to the request
111
+
112
+ extra_body: Add additional JSON properties to the request
113
+
114
+ timeout: Override the client-level default timeout for this request, in seconds
115
+ """
116
+ if not category:
117
+ raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
118
+ if not resource:
119
+ raise ValueError(f"Expected a non-empty value for `resource` but received {resource!r}")
120
+ if not start_timestamp:
121
+ raise ValueError(f"Expected a non-empty value for `start_timestamp` but received {start_timestamp!r}")
122
+ return self._get(
123
+ f"/api/v1/categories/{category}/resources/{resource}/{start_timestamp}",
124
+ options=make_request_options(
125
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
126
+ ),
127
+ cast_to=CategoryResourceResponse,
128
+ )
129
+
130
+ def list(
131
+ self,
132
+ resource: str,
133
+ *,
134
+ category: str,
135
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
136
+ # The extra values given here take precedence over values defined on the client or passed to this method.
137
+ extra_headers: Headers | None = None,
138
+ extra_query: Query | None = None,
139
+ extra_body: Body | None = None,
140
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
141
+ ) -> ResourceListResponse:
142
+ """
143
+ Get a list of versions of a Resource
144
+
145
+ Args:
146
+ extra_headers: Send extra headers
147
+
148
+ extra_query: Add additional query parameters to the request
149
+
150
+ extra_body: Add additional JSON properties to the request
151
+
152
+ timeout: Override the client-level default timeout for this request, in seconds
153
+ """
154
+ if not category:
155
+ raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
156
+ if not resource:
157
+ raise ValueError(f"Expected a non-empty value for `resource` but received {resource!r}")
158
+ return self._get(
159
+ f"/api/v1/categories/{category}/resources/{resource}",
160
+ options=make_request_options(
161
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
162
+ ),
163
+ cast_to=ResourceListResponse,
164
+ )
165
+
166
+ def delete(
167
+ self,
168
+ start_timestamp: Union[str, datetime],
169
+ *,
170
+ category: str,
171
+ resource: str,
172
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
173
+ # The extra values given here take precedence over values defined on the client or passed to this method.
174
+ extra_headers: Headers | None = None,
175
+ extra_query: Query | None = None,
176
+ extra_body: Body | None = None,
177
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
178
+ ) -> CategoryResourceResponse:
179
+ """
180
+ Delete a version of the Resource
181
+
182
+ Args:
183
+ extra_headers: Send extra headers
184
+
185
+ extra_query: Add additional query parameters to the request
186
+
187
+ extra_body: Add additional JSON properties to the request
188
+
189
+ timeout: Override the client-level default timeout for this request, in seconds
190
+ """
191
+ if not category:
192
+ raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
193
+ if not resource:
194
+ raise ValueError(f"Expected a non-empty value for `resource` but received {resource!r}")
195
+ if not start_timestamp:
196
+ raise ValueError(f"Expected a non-empty value for `start_timestamp` but received {start_timestamp!r}")
197
+ return self._delete(
198
+ f"/api/v1/categories/{category}/resources/{resource}/{start_timestamp}",
199
+ options=make_request_options(
200
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
201
+ ),
202
+ cast_to=CategoryResourceResponse,
203
+ )
204
+
205
+
206
+ class AsyncResourcesResource(AsyncAPIResource):
207
+ @cached_property
208
+ def with_raw_response(self) -> AsyncResourcesResourceWithRawResponse:
209
+ return AsyncResourcesResourceWithRawResponse(self)
210
+
211
+ @cached_property
212
+ def with_streaming_response(self) -> AsyncResourcesResourceWithStreamingResponse:
213
+ return AsyncResourcesResourceWithStreamingResponse(self)
214
+
215
+ async def create(
216
+ self,
217
+ resource: str,
218
+ *,
219
+ category: str,
220
+ start_timestamp: Union[str, datetime],
221
+ input_price: float | NotGiven = NOT_GIVEN,
222
+ max_input_units: int | NotGiven = NOT_GIVEN,
223
+ max_output_units: int | NotGiven = NOT_GIVEN,
224
+ output_price: float | NotGiven = NOT_GIVEN,
225
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
226
+ # The extra values given here take precedence over values defined on the client or passed to this method.
227
+ extra_headers: Headers | None = None,
228
+ extra_query: Query | None = None,
229
+ extra_body: Body | None = None,
230
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
231
+ ) -> CategoryResourceResponse:
232
+ """
233
+ Create a Resource
234
+
235
+ Args:
236
+ extra_headers: Send extra headers
237
+
238
+ extra_query: Add additional query parameters to the request
239
+
240
+ extra_body: Add additional JSON properties to the request
241
+
242
+ timeout: Override the client-level default timeout for this request, in seconds
243
+ """
244
+ if not category:
245
+ raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
246
+ if not resource:
247
+ raise ValueError(f"Expected a non-empty value for `resource` but received {resource!r}")
248
+ return await self._post(
249
+ f"/api/v1/categories/{category}/resources/{resource}",
250
+ body=await async_maybe_transform(
251
+ {
252
+ "start_timestamp": start_timestamp,
253
+ "input_price": input_price,
254
+ "max_input_units": max_input_units,
255
+ "max_output_units": max_output_units,
256
+ "output_price": output_price,
257
+ },
258
+ resource_create_params.ResourceCreateParams,
259
+ ),
260
+ options=make_request_options(
261
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
262
+ ),
263
+ cast_to=CategoryResourceResponse,
264
+ )
265
+
266
+ async def retrieve(
267
+ self,
268
+ start_timestamp: Union[str, datetime],
269
+ *,
270
+ category: str,
271
+ resource: str,
272
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
273
+ # The extra values given here take precedence over values defined on the client or passed to this method.
274
+ extra_headers: Headers | None = None,
275
+ extra_query: Query | None = None,
276
+ extra_body: Body | None = None,
277
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
278
+ ) -> CategoryResourceResponse:
279
+ """
280
+ Get a Resource's version details
281
+
282
+ Args:
283
+ extra_headers: Send extra headers
284
+
285
+ extra_query: Add additional query parameters to the request
286
+
287
+ extra_body: Add additional JSON properties to the request
288
+
289
+ timeout: Override the client-level default timeout for this request, in seconds
290
+ """
291
+ if not category:
292
+ raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
293
+ if not resource:
294
+ raise ValueError(f"Expected a non-empty value for `resource` but received {resource!r}")
295
+ if not start_timestamp:
296
+ raise ValueError(f"Expected a non-empty value for `start_timestamp` but received {start_timestamp!r}")
297
+ return await self._get(
298
+ f"/api/v1/categories/{category}/resources/{resource}/{start_timestamp}",
299
+ options=make_request_options(
300
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
301
+ ),
302
+ cast_to=CategoryResourceResponse,
303
+ )
304
+
305
+ async def list(
306
+ self,
307
+ resource: str,
308
+ *,
309
+ category: str,
310
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
311
+ # The extra values given here take precedence over values defined on the client or passed to this method.
312
+ extra_headers: Headers | None = None,
313
+ extra_query: Query | None = None,
314
+ extra_body: Body | None = None,
315
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
316
+ ) -> ResourceListResponse:
317
+ """
318
+ Get a list of versions of a Resource
319
+
320
+ Args:
321
+ extra_headers: Send extra headers
322
+
323
+ extra_query: Add additional query parameters to the request
324
+
325
+ extra_body: Add additional JSON properties to the request
326
+
327
+ timeout: Override the client-level default timeout for this request, in seconds
328
+ """
329
+ if not category:
330
+ raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
331
+ if not resource:
332
+ raise ValueError(f"Expected a non-empty value for `resource` but received {resource!r}")
333
+ return await self._get(
334
+ f"/api/v1/categories/{category}/resources/{resource}",
335
+ options=make_request_options(
336
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
337
+ ),
338
+ cast_to=ResourceListResponse,
339
+ )
340
+
341
+ async def delete(
342
+ self,
343
+ start_timestamp: Union[str, datetime],
344
+ *,
345
+ category: str,
346
+ resource: str,
347
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
348
+ # The extra values given here take precedence over values defined on the client or passed to this method.
349
+ extra_headers: Headers | None = None,
350
+ extra_query: Query | None = None,
351
+ extra_body: Body | None = None,
352
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
353
+ ) -> CategoryResourceResponse:
354
+ """
355
+ Delete a version of the Resource
356
+
357
+ Args:
358
+ extra_headers: Send extra headers
359
+
360
+ extra_query: Add additional query parameters to the request
361
+
362
+ extra_body: Add additional JSON properties to the request
363
+
364
+ timeout: Override the client-level default timeout for this request, in seconds
365
+ """
366
+ if not category:
367
+ raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
368
+ if not resource:
369
+ raise ValueError(f"Expected a non-empty value for `resource` but received {resource!r}")
370
+ if not start_timestamp:
371
+ raise ValueError(f"Expected a non-empty value for `start_timestamp` but received {start_timestamp!r}")
372
+ return await self._delete(
373
+ f"/api/v1/categories/{category}/resources/{resource}/{start_timestamp}",
374
+ options=make_request_options(
375
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
376
+ ),
377
+ cast_to=CategoryResourceResponse,
378
+ )
379
+
380
+
381
+ class ResourcesResourceWithRawResponse:
382
+ def __init__(self, resources: ResourcesResource) -> None:
383
+ self._resources = resources
384
+
385
+ self.create = to_raw_response_wrapper(
386
+ resources.create,
387
+ )
388
+ self.retrieve = to_raw_response_wrapper(
389
+ resources.retrieve,
390
+ )
391
+ self.list = to_raw_response_wrapper(
392
+ resources.list,
393
+ )
394
+ self.delete = to_raw_response_wrapper(
395
+ resources.delete,
396
+ )
397
+
398
+
399
+ class AsyncResourcesResourceWithRawResponse:
400
+ def __init__(self, resources: AsyncResourcesResource) -> None:
401
+ self._resources = resources
402
+
403
+ self.create = async_to_raw_response_wrapper(
404
+ resources.create,
405
+ )
406
+ self.retrieve = async_to_raw_response_wrapper(
407
+ resources.retrieve,
408
+ )
409
+ self.list = async_to_raw_response_wrapper(
410
+ resources.list,
411
+ )
412
+ self.delete = async_to_raw_response_wrapper(
413
+ resources.delete,
414
+ )
415
+
416
+
417
+ class ResourcesResourceWithStreamingResponse:
418
+ def __init__(self, resources: ResourcesResource) -> None:
419
+ self._resources = resources
420
+
421
+ self.create = to_streamed_response_wrapper(
422
+ resources.create,
423
+ )
424
+ self.retrieve = to_streamed_response_wrapper(
425
+ resources.retrieve,
426
+ )
427
+ self.list = to_streamed_response_wrapper(
428
+ resources.list,
429
+ )
430
+ self.delete = to_streamed_response_wrapper(
431
+ resources.delete,
432
+ )
433
+
434
+
435
+ class AsyncResourcesResourceWithStreamingResponse:
436
+ def __init__(self, resources: AsyncResourcesResource) -> None:
437
+ self._resources = resources
438
+
439
+ self.create = async_to_streamed_response_wrapper(
440
+ resources.create,
441
+ )
442
+ self.retrieve = async_to_streamed_response_wrapper(
443
+ resources.retrieve,
444
+ )
445
+ self.list = async_to_streamed_response_wrapper(
446
+ resources.list,
447
+ )
448
+ self.delete = async_to_streamed_response_wrapper(
449
+ resources.delete,
450
+ )
payi/resources/ingest.py CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from typing import Union
6
+ from datetime import datetime
7
+
5
8
  import httpx
6
9
 
7
10
  from ..types import ingest_units_params
@@ -41,8 +44,9 @@ class IngestResource(SyncAPIResource):
41
44
  input: int,
42
45
  output: int,
43
46
  resource: str,
44
- budget_ids: list[str] | NotGiven = NOT_GIVEN,
45
- request_tags: list[str] | NotGiven = NOT_GIVEN,
47
+ event_timestamp: Union[str, datetime, None] | NotGiven = NOT_GIVEN,
48
+ budget_ids: Union[list[str], None] | NotGiven = NOT_GIVEN,
49
+ request_tags: Union[list[str], None] | NotGiven = NOT_GIVEN,
46
50
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
47
51
  # The extra values given here take precedence over values defined on the client or passed to this method.
48
52
  extra_headers: Headers | None = None,
@@ -55,20 +59,31 @@ class IngestResource(SyncAPIResource):
55
59
 
56
60
  Args:
57
61
  category (str): The name of the category
58
- resource (str): The name of the resource.
62
+
63
+ resource (str): The name of the resource
64
+
59
65
  input (int): The number of input units
66
+
60
67
  output (int): The number of output units
68
+
69
+ event_timestamp: (datetime, None): The timestamp of the event. Defaults to None.
70
+
61
71
  budget_ids (list[str], optional): The budget IDs to associate with the request. Defaults to None.
72
+
62
73
  request_tags (list[str], optional): The request tags to associate with the request. Defaults to None.
74
+
63
75
  extra_headers (Dict[str, str], optional): Additional headers for the request. Defaults to None.
76
+
64
77
  extra_query (Dict[str, str], optional): Additional query parameters. Defaults to None.
78
+
65
79
  extra_body (Dict[str, Any], optional): Additional body parameters. Defaults to None.
80
+
66
81
  timeout (Union[float, None], optional): The timeout for the request in seconds. Defaults to None.
67
82
  """
68
83
  valid_ids_str: str | NotGiven = NOT_GIVEN
69
84
  valid_tags_str: str | NotGiven = NOT_GIVEN
70
85
 
71
- if isinstance(budget_ids, NotGiven):
86
+ if budget_ids is None or isinstance(budget_ids, NotGiven):
72
87
  valid_ids_str = NOT_GIVEN
73
88
  elif not isinstance(budget_ids, list): # type: ignore
74
89
  raise TypeError("budget_ids must be a list")
@@ -77,7 +92,7 @@ class IngestResource(SyncAPIResource):
77
92
  valid_ids = [id.strip() for id in budget_ids if id.strip()]
78
93
  valid_ids_str = ",".join(valid_ids) if valid_ids else NOT_GIVEN
79
94
 
80
- if isinstance(request_tags, NotGiven):
95
+ if request_tags is None or isinstance(request_tags, NotGiven):
81
96
  valid_tags_str = NOT_GIVEN
82
97
  elif not isinstance(request_tags, list): # type: ignore
83
98
  raise TypeError("request_tags must be a list")
@@ -103,6 +118,7 @@ class IngestResource(SyncAPIResource):
103
118
  "input": input,
104
119
  "output": output,
105
120
  "resource": resource,
121
+ "event_timestamp": event_timestamp,
106
122
  },
107
123
  ingest_units_params.IngestUnitsParams,
108
124
  ),
@@ -129,8 +145,9 @@ class AsyncIngestResource(AsyncAPIResource):
129
145
  input: int,
130
146
  output: int,
131
147
  resource: str,
132
- budget_ids: list[str] | NotGiven = NOT_GIVEN,
133
- request_tags: list[str] | NotGiven = NOT_GIVEN,
148
+ event_timestamp: Union[str, datetime, None] | NotGiven = NOT_GIVEN,
149
+ budget_ids: Union[list[str], None] | NotGiven = NOT_GIVEN,
150
+ request_tags: Union[list[str], None] | NotGiven = NOT_GIVEN,
134
151
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
135
152
  # The extra values given here take precedence over values defined on the client or passed to this method.
136
153
  extra_headers: Headers | None = None,
@@ -142,25 +159,44 @@ class AsyncIngestResource(AsyncAPIResource):
142
159
  Ingest a request
143
160
 
144
161
  Args:
145
- extra_headers: Send extra headers
146
-
147
- extra_query: Add additional query parameters to the request
148
-
149
- extra_body: Add additional JSON properties to the request
162
+ category (str): The name of the category
150
163
 
151
- timeout: Override the client-level default timeout for this request, in seconds
164
+ resource (str): The name of the resource
165
+
166
+ input (int): The number of input units
167
+
168
+ output (int): The number of output units
169
+
170
+ event_timestamp: (datetime, None): The timestamp of the event. Defaults to None.
171
+
172
+ budget_ids (list[str], optional): The budget IDs to associate with the request. Defaults to None.
173
+
174
+ request_tags (list[str], optional): The request tags to associate with the request. Defaults to None.
175
+
176
+ extra_headers (Dict[str, str], optional): Additional headers for the request. Defaults to None.
177
+
178
+ extra_query (Dict[str, str], optional): Additional query parameters. Defaults to None.
179
+
180
+ extra_body (Dict[str, Any], optional): Additional body parameters. Defaults to None.
181
+
182
+ timeout (Union[float, None], optional): The timeout for the request in seconds. Defaults to None.
152
183
  """
153
184
  valid_ids_str: str | NotGiven = NOT_GIVEN
154
185
  valid_tags_str: str | NotGiven = NOT_GIVEN
155
186
 
156
- if isinstance(budget_ids, NotGiven):
187
+ if budget_ids is None or isinstance(budget_ids, NotGiven):
157
188
  valid_ids_str = NOT_GIVEN
189
+ elif not isinstance(budget_ids, list): # type: ignore
190
+ raise TypeError("budget_ids must be a list")
158
191
  else:
159
192
  # Proceed with the list comprehension if budget_ids is not NotGiven
160
193
  valid_ids = [id.strip() for id in budget_ids if id.strip()]
161
194
  valid_ids_str = ",".join(valid_ids) if valid_ids else NOT_GIVEN
162
- if isinstance(request_tags, NotGiven):
195
+
196
+ if request_tags is None or isinstance(request_tags, NotGiven):
163
197
  valid_tags_str = NOT_GIVEN
198
+ elif not isinstance(request_tags, list): # type: ignore
199
+ raise TypeError("request_tags must be a list")
164
200
  else:
165
201
  # Proceed with the list comprehension if budget_ids is not NotGiven
166
202
  valid_tags = [tag.strip() for tag in request_tags if tag.strip()]
@@ -183,6 +219,7 @@ class AsyncIngestResource(AsyncAPIResource):
183
219
  "input": input,
184
220
  "output": output,
185
221
  "resource": resource,
222
+ "event_timestamp": event_timestamp,
186
223
  },
187
224
  ingest_units_params.IngestUnitsParams,
188
225
  ),
payi/types/__init__.py CHANGED
@@ -8,9 +8,15 @@ from .proxy_result import ProxyResult as ProxyResult
8
8
  from .requests_data import RequestsData as RequestsData
9
9
  from .budget_response import BudgetResponse as BudgetResponse
10
10
  from .default_response import DefaultResponse as DefaultResponse
11
+ from .category_response import CategoryResponse as CategoryResponse
11
12
  from .paged_budget_list import PagedBudgetList as PagedBudgetList
12
13
  from .budget_list_params import BudgetListParams as BudgetListParams
13
14
  from .ingest_units_params import IngestUnitsParams as IngestUnitsParams
14
15
  from .budget_create_params import BudgetCreateParams as BudgetCreateParams
15
16
  from .budget_update_params import BudgetUpdateParams as BudgetUpdateParams
17
+ from .category_list_response import CategoryListResponse as CategoryListResponse
16
18
  from .budget_history_response import BudgetHistoryResponse as BudgetHistoryResponse
19
+ from .category_delete_response import CategoryDeleteResponse as CategoryDeleteResponse
20
+ from .category_resource_response import CategoryResourceResponse as CategoryResourceResponse
21
+ from .category_list_resources_response import CategoryListResourcesResponse as CategoryListResourcesResponse
22
+ from .category_delete_resource_response import CategoryDeleteResourceResponse as CategoryDeleteResourceResponse
@@ -15,10 +15,14 @@ class BudgetCreateParams(TypedDict, total=False):
15
15
 
16
16
  base_cost_estimate: Literal["max"]
17
17
 
18
+ billing_model_id: Optional[int]
19
+
18
20
  budget_response_type: Literal["block", "allow"]
19
21
 
20
22
  budget_tags: Optional[List[str]]
21
23
 
22
24
  budget_type: Literal["conservative", "liberal"]
23
25
 
26
+ cost_basis: Literal["base", "billed"]
27
+
24
28
  currency: Literal["usd"]