payi 0.1.0a58__py3-none-any.whl → 0.1.0a60__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.
- payi/_version.py +1 -1
- payi/lib/instrument.py +128 -18
- payi/pagination.py +50 -0
- payi/resources/categories/categories.py +108 -23
- payi/resources/categories/resources.py +42 -12
- payi/resources/experiences/types/types.py +37 -17
- payi/resources/limits/limits.py +21 -30
- payi/resources/use_cases/__init__.py +14 -0
- payi/resources/use_cases/definitions/__init__.py +14 -0
- payi/resources/use_cases/definitions/definitions.py +68 -18
- payi/resources/use_cases/definitions/kpis.py +584 -0
- payi/resources/use_cases/kpis.py +469 -0
- payi/resources/use_cases/use_cases.py +32 -0
- payi/types/__init__.py +3 -3
- payi/types/categories/__init__.py +1 -1
- payi/types/categories/resource_list_params.py +17 -0
- payi/types/category_list_params.py +15 -0
- payi/types/category_list_resources_params.py +15 -0
- payi/types/category_response.py +0 -5
- payi/types/experiences/__init__.py +0 -1
- payi/types/experiences/type_list_params.py +6 -1
- payi/types/limit_list_params.py +4 -13
- payi/types/limit_list_response.py +30 -0
- payi/types/use_cases/__init__.py +4 -1
- payi/types/use_cases/definition_list_params.py +6 -1
- payi/types/use_cases/definitions/__init__.py +8 -0
- payi/types/use_cases/definitions/kpi_create_params.py +17 -0
- payi/types/use_cases/definitions/kpi_create_response.py +20 -0
- payi/types/use_cases/definitions/kpi_delete_response.py +20 -0
- payi/types/use_cases/definitions/kpi_list_params.py +17 -0
- payi/types/use_cases/definitions/kpi_list_response.py +20 -0
- payi/types/use_cases/definitions/kpi_retrieve_response.py +20 -0
- payi/types/use_cases/definitions/kpi_update_params.py +16 -0
- payi/types/use_cases/definitions/kpi_update_response.py +20 -0
- payi/types/use_cases/kpi_create_params.py +13 -0
- payi/types/use_cases/kpi_list_params.py +17 -0
- payi/types/use_cases/kpi_list_response.py +21 -0
- payi/types/use_cases/kpi_update_params.py +13 -0
- {payi-0.1.0a58.dist-info → payi-0.1.0a60.dist-info}/METADATA +91 -28
- {payi-0.1.0a58.dist-info → payi-0.1.0a60.dist-info}/RECORD +42 -29
- payi/types/categories/resource_list_response.py +0 -10
- payi/types/category_list_resources_response.py +0 -10
- payi/types/category_list_response.py +0 -10
- payi/types/experiences/type_list_response.py +0 -10
- payi/types/paged_limit_list.py +0 -52
- payi/types/use_cases/definition_list_response.py +0 -10
- {payi-0.1.0a58.dist-info → payi-0.1.0a60.dist-info}/WHEEL +0 -0
- {payi-0.1.0a58.dist-info → payi-0.1.0a60.dist-info}/licenses/LICENSE +0 -0
payi/_version.py
CHANGED
payi/lib/instrument.py
CHANGED
|
@@ -25,10 +25,22 @@ class Context(TypedDict, total=False):
|
|
|
25
25
|
proxy: bool
|
|
26
26
|
experience_name: Optional[str]
|
|
27
27
|
experience_id: Optional[str]
|
|
28
|
+
use_case_name: Optional[str]
|
|
29
|
+
use_case_id: Optional[str]
|
|
30
|
+
use_case_version: Optional[int]
|
|
28
31
|
limit_ids: Optional['list[str]']
|
|
29
32
|
request_tags: Optional['list[str]']
|
|
30
33
|
user_id: Optional[str]
|
|
31
34
|
|
|
35
|
+
class ParentState(TypedDict, total=False):
|
|
36
|
+
experience_name: Optional[str]
|
|
37
|
+
experience_id: Optional[str]
|
|
38
|
+
use_case_name: Optional[str]
|
|
39
|
+
use_case_id: Optional[str]
|
|
40
|
+
use_case_version: Optional[int]
|
|
41
|
+
limit_ids: Optional['list[str]']
|
|
42
|
+
request_tags: Optional['list[str]']
|
|
43
|
+
|
|
32
44
|
class IsStreaming(Enum):
|
|
33
45
|
false = 0
|
|
34
46
|
true = 1
|
|
@@ -221,40 +233,51 @@ class PayiInstrumentor:
|
|
|
221
233
|
|
|
222
234
|
def _setup_call_func(
|
|
223
235
|
self
|
|
224
|
-
) -> 'tuple[Context,
|
|
236
|
+
) -> 'tuple[Context, ParentState]':
|
|
225
237
|
context: Context = {}
|
|
238
|
+
parentState: ParentState = {}
|
|
226
239
|
|
|
227
240
|
if len(self._context_stack) > 0:
|
|
228
241
|
# copy current context into the upcoming context
|
|
229
242
|
context = self._context_stack[-1].copy()
|
|
230
243
|
context.pop("proxy")
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
244
|
+
parentState["experience_name"] = context.get("experience_name", None)
|
|
245
|
+
parentState["experience_id"] = context.get("experience_id", None)
|
|
246
|
+
parentState["use_case_name"] = context.get("use_case_name", None)
|
|
247
|
+
parentState["use_case_id"] = context.get("use_case_id", None)
|
|
248
|
+
parentState["use_case_version"] = context.get("use_case_version", None)
|
|
249
|
+
parentState["limit_ids"] = context.get("limit_ids", None)
|
|
250
|
+
parentState["request_tags"] = context.get("request_tags", None)
|
|
251
|
+
|
|
252
|
+
return (context, parentState)
|
|
237
253
|
|
|
238
254
|
def _init_context(
|
|
239
255
|
self,
|
|
240
256
|
context: Context,
|
|
241
|
-
|
|
242
|
-
previous_experience_id: Optional[str],
|
|
257
|
+
parentState: ParentState,
|
|
243
258
|
proxy: bool,
|
|
244
259
|
limit_ids: Optional["list[str]"],
|
|
245
260
|
request_tags: Optional["list[str]"],
|
|
246
261
|
experience_name: Optional[str],
|
|
247
262
|
experience_id: Optional[str],
|
|
263
|
+
use_case_name: Optional[str],
|
|
264
|
+
use_case_id: Optional[str],
|
|
265
|
+
use_case_version: Optional[int],
|
|
248
266
|
user_id: Optional[str],
|
|
249
267
|
) -> None:
|
|
250
268
|
context["proxy"] = proxy
|
|
251
269
|
|
|
270
|
+
# TODO use case what if caller specified epxerience / use_case ID and no name?
|
|
271
|
+
|
|
252
272
|
# Handle experience name and ID logic
|
|
253
273
|
if not experience_name:
|
|
254
274
|
# If no experience_name specified, use previous values
|
|
255
|
-
context["experience_name"] =
|
|
256
|
-
context["experience_id"] =
|
|
275
|
+
context["experience_name"] = parentState.get("experience_name", None)
|
|
276
|
+
context["experience_id"] = parentState.get("experience_id", None)
|
|
257
277
|
else:
|
|
278
|
+
previous_experience_name = parentState.get("experience_name", None)
|
|
279
|
+
previous_experience_id = parentState.get("experience_id", None)
|
|
280
|
+
|
|
258
281
|
# If experience_name is specified
|
|
259
282
|
if experience_name == previous_experience_name:
|
|
260
283
|
# Same experience name, use previous ID unless new one specified
|
|
@@ -265,6 +288,29 @@ class PayiInstrumentor:
|
|
|
265
288
|
context["experience_name"] = experience_name
|
|
266
289
|
context["experience_id"] = experience_id if experience_id else str(uuid.uuid4())
|
|
267
290
|
|
|
291
|
+
# Handle use case name and ID logic
|
|
292
|
+
if not use_case_name: # TODO use case
|
|
293
|
+
# If no use_case_name specified, use previous values
|
|
294
|
+
context["use_case_name"] = parentState.get("use_case_name", None)
|
|
295
|
+
context["use_case_id"] = parentState.get("use_case_id", None)
|
|
296
|
+
context["use_case_version"] = parentState.get("use_case_version", None)
|
|
297
|
+
else:
|
|
298
|
+
previous_use_case_name = parentState.get("use_case_name", None)
|
|
299
|
+
previous_use_case_id = parentState.get("use_case_id", None)
|
|
300
|
+
previous_use_case_version = parentState.get("use_case_version", None)
|
|
301
|
+
|
|
302
|
+
# If use_case_name is specified
|
|
303
|
+
if use_case_name == previous_use_case_name:
|
|
304
|
+
# Same use case name, use previous ID unless new one specified
|
|
305
|
+
context["use_case_name"] = use_case_name
|
|
306
|
+
context["use_case_id"] = use_case_id if use_case_id else previous_use_case_id
|
|
307
|
+
context["use_case_version"] = use_case_version if use_case_version else previous_use_case_version
|
|
308
|
+
else:
|
|
309
|
+
# Different experience name, use specified ID or generate one
|
|
310
|
+
context["use_case_name"] = use_case_name
|
|
311
|
+
context["use_case_id"] = use_case_id if use_case_id else str(uuid.uuid4())
|
|
312
|
+
context["use_case_version"] = use_case_version
|
|
313
|
+
|
|
268
314
|
# set any values explicitly passed by the caller, otherwise use what is already in the context
|
|
269
315
|
if limit_ids:
|
|
270
316
|
context["limit_ids"] = limit_ids
|
|
@@ -283,22 +329,27 @@ class PayiInstrumentor:
|
|
|
283
329
|
request_tags: Optional["list[str]"],
|
|
284
330
|
experience_name: Optional[str],
|
|
285
331
|
experience_id: Optional[str],
|
|
332
|
+
use_case_name: Optional[str],
|
|
333
|
+
use_case_id: Optional[str],
|
|
334
|
+
use_case_version: Optional[int],
|
|
286
335
|
user_id: Optional[str],
|
|
287
336
|
*args: Any,
|
|
288
337
|
**kwargs: Any,
|
|
289
338
|
) -> Any:
|
|
290
|
-
context,
|
|
339
|
+
context, parentState = self._setup_call_func()
|
|
291
340
|
|
|
292
341
|
with self:
|
|
293
342
|
self._init_context(
|
|
294
343
|
context,
|
|
295
|
-
|
|
296
|
-
previous_experience_id,
|
|
344
|
+
parentState,
|
|
297
345
|
proxy,
|
|
298
346
|
limit_ids,
|
|
299
347
|
request_tags,
|
|
300
348
|
experience_name,
|
|
301
349
|
experience_id,
|
|
350
|
+
use_case_name,
|
|
351
|
+
use_case_id,
|
|
352
|
+
use_case_version,
|
|
302
353
|
user_id)
|
|
303
354
|
return await func(*args, **kwargs)
|
|
304
355
|
|
|
@@ -310,22 +361,27 @@ class PayiInstrumentor:
|
|
|
310
361
|
request_tags: Optional["list[str]"],
|
|
311
362
|
experience_name: Optional[str],
|
|
312
363
|
experience_id: Optional[str],
|
|
364
|
+
use_case_name: Optional[str],
|
|
365
|
+
use_case_id: Optional[str],
|
|
366
|
+
use_case_version: Optional[int],
|
|
313
367
|
user_id: Optional[str],
|
|
314
368
|
*args: Any,
|
|
315
369
|
**kwargs: Any,
|
|
316
370
|
) -> Any:
|
|
317
|
-
context,
|
|
371
|
+
context, parentState = self._setup_call_func()
|
|
318
372
|
|
|
319
373
|
with self:
|
|
320
374
|
self._init_context(
|
|
321
375
|
context,
|
|
322
|
-
|
|
323
|
-
previous_experience_id,
|
|
376
|
+
parentState,
|
|
324
377
|
proxy,
|
|
325
378
|
limit_ids,
|
|
326
379
|
request_tags,
|
|
327
380
|
experience_name,
|
|
328
381
|
experience_id,
|
|
382
|
+
use_case_name,
|
|
383
|
+
use_case_id,
|
|
384
|
+
use_case_version,
|
|
329
385
|
user_id)
|
|
330
386
|
return func(*args, **kwargs)
|
|
331
387
|
|
|
@@ -348,7 +404,6 @@ class PayiInstrumentor:
|
|
|
348
404
|
# Return the current top of the stack
|
|
349
405
|
return self._context_stack[-1] if self._context_stack else None
|
|
350
406
|
|
|
351
|
-
|
|
352
407
|
def _prepare_ingest(
|
|
353
408
|
self,
|
|
354
409
|
ingest: IngestUnitsParams,
|
|
@@ -359,6 +414,9 @@ class PayiInstrumentor:
|
|
|
359
414
|
request_tags = ingest_extra_headers.pop(PayiHeaderNames.request_tags, None)
|
|
360
415
|
experience_name = ingest_extra_headers.pop(PayiHeaderNames.experience_name, None)
|
|
361
416
|
experience_id = ingest_extra_headers.pop(PayiHeaderNames.experience_id, None)
|
|
417
|
+
use_case_name = ingest_extra_headers.pop(PayiHeaderNames.use_case_name, None)
|
|
418
|
+
use_case_id = ingest_extra_headers.pop(PayiHeaderNames.use_case_id, None)
|
|
419
|
+
use_case_version = ingest_extra_headers.pop(PayiHeaderNames.use_case_version, None)
|
|
362
420
|
user_id = ingest_extra_headers.pop(PayiHeaderNames.user_id, None)
|
|
363
421
|
|
|
364
422
|
if limit_ids:
|
|
@@ -369,6 +427,12 @@ class PayiInstrumentor:
|
|
|
369
427
|
ingest["experience_name"] = experience_name
|
|
370
428
|
if experience_id:
|
|
371
429
|
ingest["experience_id"] = experience_id
|
|
430
|
+
if use_case_name:
|
|
431
|
+
ingest["use_case_name"] = use_case_name
|
|
432
|
+
if use_case_id:
|
|
433
|
+
ingest["use_case_id"] = use_case_id
|
|
434
|
+
if use_case_version:
|
|
435
|
+
ingest["use_case_version"] = int(use_case_version)
|
|
372
436
|
if user_id:
|
|
373
437
|
ingest["user_id"] = user_id
|
|
374
438
|
|
|
@@ -656,6 +720,9 @@ class PayiInstrumentor:
|
|
|
656
720
|
request_tags: Optional[list[str]] = context.get("request_tags")
|
|
657
721
|
experience_name: Optional[str] = context.get("experience_name")
|
|
658
722
|
experience_id: Optional[str] = context.get("experience_id")
|
|
723
|
+
use_case_name: Optional[str] = context.get("use_case_name")
|
|
724
|
+
use_case_id: Optional[str] = context.get("use_case_id")
|
|
725
|
+
use_case_version: Optional[int] = context.get("use_case_version")
|
|
659
726
|
user_id: Optional[str] = context.get("user_id")
|
|
660
727
|
|
|
661
728
|
# Merge limits from the decorator and extra headers
|
|
@@ -703,6 +770,31 @@ class PayiInstrumentor:
|
|
|
703
770
|
# use the inner experience name and id as-is
|
|
704
771
|
...
|
|
705
772
|
|
|
773
|
+
# inner extra_headers use_casee_name and use_case_id take precedence over outer decorator use_case_name and use_case_id
|
|
774
|
+
# if either inner value is specified, ignore outer decorator values
|
|
775
|
+
if PayiHeaderNames.use_case_name not in extra_headers and PayiHeaderNames.use_case_id not in extra_headers:
|
|
776
|
+
|
|
777
|
+
# use decorator values
|
|
778
|
+
if use_case_name is not None:
|
|
779
|
+
extra_headers[PayiHeaderNames.use_case_name] = use_case_name
|
|
780
|
+
if use_case_id is not None:
|
|
781
|
+
extra_headers[PayiHeaderNames.use_case_id] = use_case_id
|
|
782
|
+
if use_case_version is not None:
|
|
783
|
+
extra_headers[PayiHeaderNames.use_case_version] = str(use_case_version)
|
|
784
|
+
|
|
785
|
+
elif PayiHeaderNames.use_case_id in extra_headers and PayiHeaderNames.use_case_name not in extra_headers:
|
|
786
|
+
# use the decorator experience name and the inner experience id
|
|
787
|
+
if use_case_name is not None:
|
|
788
|
+
extra_headers[PayiHeaderNames.use_case_name] = use_case_name
|
|
789
|
+
|
|
790
|
+
# use the decorator experience version and the inner experience id
|
|
791
|
+
if use_case_version is not None:
|
|
792
|
+
extra_headers[PayiHeaderNames.use_case_version] = str(use_case_version) # TODO use case
|
|
793
|
+
|
|
794
|
+
else:
|
|
795
|
+
# use the inner experience name and id as-is
|
|
796
|
+
...
|
|
797
|
+
|
|
706
798
|
@staticmethod
|
|
707
799
|
def update_for_vision(input: int, units: 'dict[str, Units]') -> int:
|
|
708
800
|
if PayiInstrumentor.estimated_prompt_tokens in units:
|
|
@@ -926,6 +1018,9 @@ def ingest(
|
|
|
926
1018
|
request_tags: Optional["list[str]"] = None,
|
|
927
1019
|
experience_name: Optional[str] = None,
|
|
928
1020
|
experience_id: Optional[str] = None,
|
|
1021
|
+
use_case_name: Optional[str] = None,
|
|
1022
|
+
use_case_id: Optional[str] = None,
|
|
1023
|
+
use_case_version: Optional[int] = None,
|
|
929
1024
|
user_id: Optional[str] = None,
|
|
930
1025
|
) -> Any:
|
|
931
1026
|
def _ingest(func: Any) -> Any:
|
|
@@ -942,6 +1037,9 @@ def ingest(
|
|
|
942
1037
|
request_tags,
|
|
943
1038
|
experience_name,
|
|
944
1039
|
experience_id,
|
|
1040
|
+
use_case_name,
|
|
1041
|
+
use_case_id,
|
|
1042
|
+
use_case_version,
|
|
945
1043
|
user_id,
|
|
946
1044
|
*args,
|
|
947
1045
|
**kwargs,
|
|
@@ -958,6 +1056,9 @@ def ingest(
|
|
|
958
1056
|
request_tags,
|
|
959
1057
|
experience_name,
|
|
960
1058
|
experience_id,
|
|
1059
|
+
use_case_name,
|
|
1060
|
+
use_case_id,
|
|
1061
|
+
use_case_version,
|
|
961
1062
|
user_id,
|
|
962
1063
|
*args,
|
|
963
1064
|
**kwargs,
|
|
@@ -970,6 +1071,9 @@ def proxy(
|
|
|
970
1071
|
request_tags: Optional["list[str]"] = None,
|
|
971
1072
|
experience_name: Optional[str] = None,
|
|
972
1073
|
experience_id: Optional[str] = None,
|
|
1074
|
+
use_case_id: Optional[str] = None,
|
|
1075
|
+
use_case_name: Optional[str] = None,
|
|
1076
|
+
use_case_version: Optional[int] = None,
|
|
973
1077
|
user_id: Optional[str] = None,
|
|
974
1078
|
) -> Any:
|
|
975
1079
|
def _proxy(func: Any) -> Any:
|
|
@@ -985,6 +1089,9 @@ def proxy(
|
|
|
985
1089
|
request_tags,
|
|
986
1090
|
experience_name,
|
|
987
1091
|
experience_id,
|
|
1092
|
+
use_case_name,
|
|
1093
|
+
use_case_id,
|
|
1094
|
+
use_case_version,
|
|
988
1095
|
user_id,
|
|
989
1096
|
*args,
|
|
990
1097
|
**kwargs
|
|
@@ -1002,6 +1109,9 @@ def proxy(
|
|
|
1002
1109
|
request_tags,
|
|
1003
1110
|
experience_name,
|
|
1004
1111
|
experience_id,
|
|
1112
|
+
use_case_name,
|
|
1113
|
+
use_case_id,
|
|
1114
|
+
use_case_version,
|
|
1005
1115
|
user_id,
|
|
1006
1116
|
*args,
|
|
1007
1117
|
**kwargs
|
payi/pagination.py
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Generic, TypeVar, Optional
|
|
4
|
+
from typing_extensions import override
|
|
5
|
+
|
|
6
|
+
from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
|
|
7
|
+
|
|
8
|
+
__all__ = ["SyncCursorPage", "AsyncCursorPage"]
|
|
9
|
+
|
|
10
|
+
_T = TypeVar("_T")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class SyncCursorPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
|
|
14
|
+
items: List[_T]
|
|
15
|
+
cursor: Optional[str] = None
|
|
16
|
+
|
|
17
|
+
@override
|
|
18
|
+
def _get_page_items(self) -> List[_T]:
|
|
19
|
+
items = self.items
|
|
20
|
+
if not items:
|
|
21
|
+
return []
|
|
22
|
+
return items
|
|
23
|
+
|
|
24
|
+
@override
|
|
25
|
+
def next_page_info(self) -> Optional[PageInfo]:
|
|
26
|
+
cursor = self.cursor
|
|
27
|
+
if not cursor:
|
|
28
|
+
return None
|
|
29
|
+
|
|
30
|
+
return PageInfo(params={"cursor": cursor})
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class AsyncCursorPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
|
|
34
|
+
items: List[_T]
|
|
35
|
+
cursor: Optional[str] = None
|
|
36
|
+
|
|
37
|
+
@override
|
|
38
|
+
def _get_page_items(self) -> List[_T]:
|
|
39
|
+
items = self.items
|
|
40
|
+
if not items:
|
|
41
|
+
return []
|
|
42
|
+
return items
|
|
43
|
+
|
|
44
|
+
@override
|
|
45
|
+
def next_page_info(self) -> Optional[PageInfo]:
|
|
46
|
+
cursor = self.cursor
|
|
47
|
+
if not cursor:
|
|
48
|
+
return None
|
|
49
|
+
|
|
50
|
+
return PageInfo(params={"cursor": cursor})
|
|
@@ -4,7 +4,9 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import httpx
|
|
6
6
|
|
|
7
|
+
from ...types import category_list_params, category_list_resources_params
|
|
7
8
|
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
|
|
9
|
+
from ..._utils import maybe_transform
|
|
8
10
|
from ..._compat import cached_property
|
|
9
11
|
from .resources import (
|
|
10
12
|
ResourcesResource,
|
|
@@ -21,10 +23,11 @@ from ..._response import (
|
|
|
21
23
|
async_to_raw_response_wrapper,
|
|
22
24
|
async_to_streamed_response_wrapper,
|
|
23
25
|
)
|
|
24
|
-
from ...
|
|
25
|
-
from ...
|
|
26
|
+
from ...pagination import SyncCursorPage, AsyncCursorPage
|
|
27
|
+
from ..._base_client import AsyncPaginator, make_request_options
|
|
28
|
+
from ...types.category_response import CategoryResponse
|
|
26
29
|
from ...types.category_delete_response import CategoryDeleteResponse
|
|
27
|
-
from ...types.
|
|
30
|
+
from ...types.category_resource_response import CategoryResourceResponse
|
|
28
31
|
from ...types.category_delete_resource_response import CategoryDeleteResourceResponse
|
|
29
32
|
|
|
30
33
|
__all__ = ["CategoriesResource", "AsyncCategoriesResource"]
|
|
@@ -57,20 +60,46 @@ class CategoriesResource(SyncAPIResource):
|
|
|
57
60
|
def list(
|
|
58
61
|
self,
|
|
59
62
|
*,
|
|
63
|
+
cursor: str | NotGiven = NOT_GIVEN,
|
|
64
|
+
limit: int | NotGiven = NOT_GIVEN,
|
|
65
|
+
sort_ascending: bool | NotGiven = NOT_GIVEN,
|
|
60
66
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
61
67
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
62
68
|
extra_headers: Headers | None = None,
|
|
63
69
|
extra_query: Query | None = None,
|
|
64
70
|
extra_body: Body | None = None,
|
|
65
71
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
66
|
-
) ->
|
|
67
|
-
"""
|
|
68
|
-
|
|
72
|
+
) -> SyncCursorPage[CategoryResponse]:
|
|
73
|
+
"""
|
|
74
|
+
Get all Categories
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
extra_headers: Send extra headers
|
|
78
|
+
|
|
79
|
+
extra_query: Add additional query parameters to the request
|
|
80
|
+
|
|
81
|
+
extra_body: Add additional JSON properties to the request
|
|
82
|
+
|
|
83
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
84
|
+
"""
|
|
85
|
+
return self._get_api_list(
|
|
69
86
|
"/api/v1/categories",
|
|
87
|
+
page=SyncCursorPage[CategoryResponse],
|
|
70
88
|
options=make_request_options(
|
|
71
|
-
extra_headers=extra_headers,
|
|
89
|
+
extra_headers=extra_headers,
|
|
90
|
+
extra_query=extra_query,
|
|
91
|
+
extra_body=extra_body,
|
|
92
|
+
timeout=timeout,
|
|
93
|
+
query=maybe_transform(
|
|
94
|
+
{
|
|
95
|
+
"cursor": cursor,
|
|
96
|
+
"limit": limit,
|
|
97
|
+
"sort_ascending": sort_ascending,
|
|
98
|
+
},
|
|
99
|
+
category_list_params.CategoryListParams,
|
|
100
|
+
),
|
|
72
101
|
),
|
|
73
|
-
|
|
102
|
+
model=CategoryResponse,
|
|
74
103
|
)
|
|
75
104
|
|
|
76
105
|
def delete(
|
|
@@ -146,13 +175,16 @@ class CategoriesResource(SyncAPIResource):
|
|
|
146
175
|
self,
|
|
147
176
|
category: str,
|
|
148
177
|
*,
|
|
178
|
+
cursor: str | NotGiven = NOT_GIVEN,
|
|
179
|
+
limit: int | NotGiven = NOT_GIVEN,
|
|
180
|
+
sort_ascending: bool | NotGiven = NOT_GIVEN,
|
|
149
181
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
150
182
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
151
183
|
extra_headers: Headers | None = None,
|
|
152
184
|
extra_query: Query | None = None,
|
|
153
185
|
extra_body: Body | None = None,
|
|
154
186
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
155
|
-
) ->
|
|
187
|
+
) -> SyncCursorPage[CategoryResourceResponse]:
|
|
156
188
|
"""
|
|
157
189
|
Get all Resources for a Category
|
|
158
190
|
|
|
@@ -167,12 +199,24 @@ class CategoriesResource(SyncAPIResource):
|
|
|
167
199
|
"""
|
|
168
200
|
if not category:
|
|
169
201
|
raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
|
|
170
|
-
return self.
|
|
202
|
+
return self._get_api_list(
|
|
171
203
|
f"/api/v1/categories/{category}/resources",
|
|
204
|
+
page=SyncCursorPage[CategoryResourceResponse],
|
|
172
205
|
options=make_request_options(
|
|
173
|
-
extra_headers=extra_headers,
|
|
206
|
+
extra_headers=extra_headers,
|
|
207
|
+
extra_query=extra_query,
|
|
208
|
+
extra_body=extra_body,
|
|
209
|
+
timeout=timeout,
|
|
210
|
+
query=maybe_transform(
|
|
211
|
+
{
|
|
212
|
+
"cursor": cursor,
|
|
213
|
+
"limit": limit,
|
|
214
|
+
"sort_ascending": sort_ascending,
|
|
215
|
+
},
|
|
216
|
+
category_list_resources_params.CategoryListResourcesParams,
|
|
217
|
+
),
|
|
174
218
|
),
|
|
175
|
-
|
|
219
|
+
model=CategoryResourceResponse,
|
|
176
220
|
)
|
|
177
221
|
|
|
178
222
|
|
|
@@ -200,23 +244,49 @@ class AsyncCategoriesResource(AsyncAPIResource):
|
|
|
200
244
|
"""
|
|
201
245
|
return AsyncCategoriesResourceWithStreamingResponse(self)
|
|
202
246
|
|
|
203
|
-
|
|
247
|
+
def list(
|
|
204
248
|
self,
|
|
205
249
|
*,
|
|
250
|
+
cursor: str | NotGiven = NOT_GIVEN,
|
|
251
|
+
limit: int | NotGiven = NOT_GIVEN,
|
|
252
|
+
sort_ascending: bool | NotGiven = NOT_GIVEN,
|
|
206
253
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
207
254
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
208
255
|
extra_headers: Headers | None = None,
|
|
209
256
|
extra_query: Query | None = None,
|
|
210
257
|
extra_body: Body | None = None,
|
|
211
258
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
212
|
-
) ->
|
|
213
|
-
"""
|
|
214
|
-
|
|
259
|
+
) -> AsyncPaginator[CategoryResponse, AsyncCursorPage[CategoryResponse]]:
|
|
260
|
+
"""
|
|
261
|
+
Get all Categories
|
|
262
|
+
|
|
263
|
+
Args:
|
|
264
|
+
extra_headers: Send extra headers
|
|
265
|
+
|
|
266
|
+
extra_query: Add additional query parameters to the request
|
|
267
|
+
|
|
268
|
+
extra_body: Add additional JSON properties to the request
|
|
269
|
+
|
|
270
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
271
|
+
"""
|
|
272
|
+
return self._get_api_list(
|
|
215
273
|
"/api/v1/categories",
|
|
274
|
+
page=AsyncCursorPage[CategoryResponse],
|
|
216
275
|
options=make_request_options(
|
|
217
|
-
extra_headers=extra_headers,
|
|
276
|
+
extra_headers=extra_headers,
|
|
277
|
+
extra_query=extra_query,
|
|
278
|
+
extra_body=extra_body,
|
|
279
|
+
timeout=timeout,
|
|
280
|
+
query=maybe_transform(
|
|
281
|
+
{
|
|
282
|
+
"cursor": cursor,
|
|
283
|
+
"limit": limit,
|
|
284
|
+
"sort_ascending": sort_ascending,
|
|
285
|
+
},
|
|
286
|
+
category_list_params.CategoryListParams,
|
|
287
|
+
),
|
|
218
288
|
),
|
|
219
|
-
|
|
289
|
+
model=CategoryResponse,
|
|
220
290
|
)
|
|
221
291
|
|
|
222
292
|
async def delete(
|
|
@@ -288,17 +358,20 @@ class AsyncCategoriesResource(AsyncAPIResource):
|
|
|
288
358
|
cast_to=CategoryDeleteResourceResponse,
|
|
289
359
|
)
|
|
290
360
|
|
|
291
|
-
|
|
361
|
+
def list_resources(
|
|
292
362
|
self,
|
|
293
363
|
category: str,
|
|
294
364
|
*,
|
|
365
|
+
cursor: str | NotGiven = NOT_GIVEN,
|
|
366
|
+
limit: int | NotGiven = NOT_GIVEN,
|
|
367
|
+
sort_ascending: bool | NotGiven = NOT_GIVEN,
|
|
295
368
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
296
369
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
297
370
|
extra_headers: Headers | None = None,
|
|
298
371
|
extra_query: Query | None = None,
|
|
299
372
|
extra_body: Body | None = None,
|
|
300
373
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
301
|
-
) ->
|
|
374
|
+
) -> AsyncPaginator[CategoryResourceResponse, AsyncCursorPage[CategoryResourceResponse]]:
|
|
302
375
|
"""
|
|
303
376
|
Get all Resources for a Category
|
|
304
377
|
|
|
@@ -313,12 +386,24 @@ class AsyncCategoriesResource(AsyncAPIResource):
|
|
|
313
386
|
"""
|
|
314
387
|
if not category:
|
|
315
388
|
raise ValueError(f"Expected a non-empty value for `category` but received {category!r}")
|
|
316
|
-
return
|
|
389
|
+
return self._get_api_list(
|
|
317
390
|
f"/api/v1/categories/{category}/resources",
|
|
391
|
+
page=AsyncCursorPage[CategoryResourceResponse],
|
|
318
392
|
options=make_request_options(
|
|
319
|
-
extra_headers=extra_headers,
|
|
393
|
+
extra_headers=extra_headers,
|
|
394
|
+
extra_query=extra_query,
|
|
395
|
+
extra_body=extra_body,
|
|
396
|
+
timeout=timeout,
|
|
397
|
+
query=maybe_transform(
|
|
398
|
+
{
|
|
399
|
+
"cursor": cursor,
|
|
400
|
+
"limit": limit,
|
|
401
|
+
"sort_ascending": sort_ascending,
|
|
402
|
+
},
|
|
403
|
+
category_list_resources_params.CategoryListResourcesParams,
|
|
404
|
+
),
|
|
320
405
|
),
|
|
321
|
-
|
|
406
|
+
model=CategoryResourceResponse,
|
|
322
407
|
)
|
|
323
408
|
|
|
324
409
|
|