payi 0.1.0a106__py3-none-any.whl → 0.1.0a108__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/_base_client.py CHANGED
@@ -532,7 +532,10 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
532
532
  is_body_allowed = options.method.lower() != "get"
533
533
 
534
534
  if is_body_allowed:
535
- kwargs["json"] = json_data if is_given(json_data) else None
535
+ if isinstance(json_data, bytes):
536
+ kwargs["content"] = json_data
537
+ else:
538
+ kwargs["json"] = json_data if is_given(json_data) else None
536
539
  kwargs["files"] = files
537
540
  else:
538
541
  headers.pop("Content-Type", None)
payi/_files.py CHANGED
@@ -69,12 +69,12 @@ def _transform_file(file: FileTypes) -> HttpxFileTypes:
69
69
  return file
70
70
 
71
71
  if is_tuple_t(file):
72
- return (file[0], _read_file_content(file[1]), *file[2:])
72
+ return (file[0], read_file_content(file[1]), *file[2:])
73
73
 
74
74
  raise TypeError(f"Expected file types input to be a FileContent type or to be a tuple")
75
75
 
76
76
 
77
- def _read_file_content(file: FileContent) -> HttpxFileContent:
77
+ def read_file_content(file: FileContent) -> HttpxFileContent:
78
78
  if isinstance(file, os.PathLike):
79
79
  return pathlib.Path(file).read_bytes()
80
80
  return file
@@ -111,12 +111,12 @@ async def _async_transform_file(file: FileTypes) -> HttpxFileTypes:
111
111
  return file
112
112
 
113
113
  if is_tuple_t(file):
114
- return (file[0], await _async_read_file_content(file[1]), *file[2:])
114
+ return (file[0], await async_read_file_content(file[1]), *file[2:])
115
115
 
116
116
  raise TypeError(f"Expected file types input to be a FileContent type or to be a tuple")
117
117
 
118
118
 
119
- async def _async_read_file_content(file: FileContent) -> HttpxFileContent:
119
+ async def async_read_file_content(file: FileContent) -> HttpxFileContent:
120
120
  if isinstance(file, os.PathLike):
121
121
  return await anyio.Path(file).read_bytes()
122
122
 
payi/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "payi"
4
- __version__ = "0.1.0-alpha.106" # x-release-please-version
4
+ __version__ = "0.1.0-alpha.108" # x-release-please-version
payi/lib/helpers.py CHANGED
@@ -11,6 +11,7 @@ class PayiHeaderNames:
11
11
  use_case_version:str = "xProxy-UseCase-Version"
12
12
  use_case_step:str = "xProxy-UseCase-Step"
13
13
  user_id:str = "xProxy-User-ID"
14
+ account_name:str = "xProxy-Account-Name"
14
15
  price_as_category:str = "xProxy-PriceAs-Category"
15
16
  price_as_resource:str = "xProxy-PriceAs-Resource"
16
17
  provider_base_uri = "xProxy-Provider-BaseUri"
@@ -24,7 +25,7 @@ class PayiCategories:
24
25
  aws_bedrock:str = "system.aws.bedrock"
25
26
  google_vertex:str = "system.google.vertex"
26
27
 
27
- def create_limit_header_from_ids(limit_ids: List[str]) -> Dict[str, str]:
28
+ def create_limit_header_from_ids(*, limit_ids: List[str]) -> Dict[str, str]:
28
29
  if not isinstance(limit_ids, list): # type: ignore
29
30
  raise TypeError("limit_ids must be a list")
30
31
 
@@ -32,7 +33,7 @@ def create_limit_header_from_ids(limit_ids: List[str]) -> Dict[str, str]:
32
33
 
33
34
  return { PayiHeaderNames.limit_ids: ",".join(valid_ids) } if valid_ids else {}
34
35
 
35
- def create_request_header_from_tags(request_tags: List[str]) -> Dict[str, str]:
36
+ def create_request_header_from_tags(*, request_tags: List[str]) -> Dict[str, str]:
36
37
  if not isinstance(request_tags, list): # type: ignore
37
38
  raise TypeError("request_tags must be a list")
38
39
 
@@ -41,9 +42,11 @@ def create_request_header_from_tags(request_tags: List[str]) -> Dict[str, str]:
41
42
  return { PayiHeaderNames.request_tags: ",".join(valid_tags) } if valid_tags else {}
42
43
 
43
44
  def create_headers(
45
+ *,
44
46
  limit_ids: Union[List[str], None] = None,
45
47
  request_tags: Union[List[str], None] = None,
46
48
  user_id: Union[str, None] = None,
49
+ account_name: Union[str, None] = None,
47
50
  use_case_id: Union[str, None] = None,
48
51
  use_case_name: Union[str, None] = None,
49
52
  use_case_version: Union[int, None] = None,
@@ -55,11 +58,13 @@ def create_headers(
55
58
  headers: Dict[str, str] = {}
56
59
 
57
60
  if limit_ids:
58
- headers.update(create_limit_header_from_ids(limit_ids))
61
+ headers.update(create_limit_header_from_ids(limit_ids=limit_ids))
59
62
  if request_tags:
60
- headers.update(create_request_header_from_tags(request_tags))
63
+ headers.update(create_request_header_from_tags(request_tags=request_tags))
61
64
  if user_id:
62
65
  headers.update({ PayiHeaderNames.user_id: user_id})
66
+ if account_name:
67
+ headers.update({ PayiHeaderNames.account_name: account_name})
63
68
  if use_case_id:
64
69
  headers.update({ PayiHeaderNames.use_case_id: use_case_id})
65
70
  if use_case_name:
payi/lib/instrument.py CHANGED
@@ -157,6 +157,7 @@ class PayiInstrumentConfig(TypedDict, total=False):
157
157
  use_case_version: Optional[int]
158
158
  use_case_properties: Optional["dict[str, str]"]
159
159
  user_id: Optional[str]
160
+ account_name: Optional[str]
160
161
  request_tags: Optional["list[str]"]
161
162
  request_properties: Optional["dict[str, str]"]
162
163
 
@@ -168,6 +169,7 @@ class PayiContext(TypedDict, total=False):
168
169
  use_case_properties: Optional["dict[str, str]"]
169
170
  limit_ids: Optional['list[str]']
170
171
  user_id: Optional[str]
172
+ account_name: Optional[str]
171
173
  request_tags: Optional["list[str]"]
172
174
  request_properties: Optional["dict[str, str]"]
173
175
  price_as_category: Optional[str]
@@ -184,6 +186,7 @@ class _Context(TypedDict, total=False):
184
186
  use_case_properties: Optional["dict[str, str]"]
185
187
  limit_ids: Optional['list[str]']
186
188
  user_id: Optional[str]
189
+ account_name: Optional[str]
187
190
  request_tags: Optional["list[str]"]
188
191
  request_properties: Optional["dict[str, str]"]
189
192
  price_as_category: Optional[str]
@@ -655,6 +658,7 @@ class _PayiInstrumentor:
655
658
  use_case_version: Optional[int]= None,
656
659
  use_case_step: Optional[str]= None,
657
660
  user_id: Optional[str]= None,
661
+ account_name: Optional[str]= None,
658
662
  request_tags: Optional["list[str]"] = None,
659
663
  request_properties: Optional["dict[str, str]"] = None,
660
664
  use_case_properties: Optional["dict[str, str]"] = None,
@@ -747,6 +751,16 @@ class _PayiInstrumentor:
747
751
  else:
748
752
  context["user_id"] = user_id
749
753
 
754
+ parent_account_name = parent_context.get("account_name", None)
755
+ if account_name is None:
756
+ # use the parent account_name if it exists
757
+ context["account_name"] = parent_account_name
758
+ elif len(account_name) == 0:
759
+ # caller passing an empty string explicitly blocks inheriting from the parent state
760
+ context["account_name"] = None
761
+ else:
762
+ context["account_name"] = account_name
763
+
750
764
  parent_request_tags = parent_context.get("request_tags", None)
751
765
  if request_tags is not None:
752
766
  if len(request_tags) == 0:
@@ -795,6 +809,7 @@ class _PayiInstrumentor:
795
809
  use_case_id: Optional[str],
796
810
  use_case_version: Optional[int],
797
811
  user_id: Optional[str],
812
+ account_name: Optional[str],
798
813
  request_tags: Optional["list[str]"] = None,
799
814
  request_properties: Optional["dict[str, str]"] = None,
800
815
  use_case_properties: Optional["dict[str, str]"] = None,
@@ -809,6 +824,7 @@ class _PayiInstrumentor:
809
824
  use_case_id=use_case_id,
810
825
  use_case_version=use_case_version,
811
826
  user_id=user_id,
827
+ account_name=account_name,
812
828
  request_tags=request_tags,
813
829
  request_properties=request_properties,
814
830
  use_case_properties=use_case_properties
@@ -824,6 +840,7 @@ class _PayiInstrumentor:
824
840
  use_case_id: Optional[str],
825
841
  use_case_version: Optional[int],
826
842
  user_id: Optional[str],
843
+ account_name: Optional[str],
827
844
  request_tags: Optional["list[str]"] = None,
828
845
  request_properties: Optional["dict[str, str]"] = None,
829
846
  use_case_properties: Optional["dict[str, str]"] = None,
@@ -838,6 +855,7 @@ class _PayiInstrumentor:
838
855
  use_case_id=use_case_id,
839
856
  use_case_version=use_case_version,
840
857
  user_id=user_id,
858
+ account_name=account_name,
841
859
  request_tags=request_tags,
842
860
  request_properties=request_properties,
843
861
  use_case_properties=use_case_properties)
@@ -879,6 +897,7 @@ class _PayiInstrumentor:
879
897
  use_case_step = ingest_extra_headers.pop(PayiHeaderNames.use_case_step, None)
880
898
 
881
899
  user_id = ingest_extra_headers.pop(PayiHeaderNames.user_id, None)
900
+ account_name = ingest_extra_headers.pop(PayiHeaderNames.account_name, None)
882
901
 
883
902
  if limit_ids:
884
903
  request._ingest["limit_ids"] = limit_ids.split(",")
@@ -894,6 +913,8 @@ class _PayiInstrumentor:
894
913
  request._ingest["use_case_step"] = use_case_step
895
914
  if user_id:
896
915
  request._ingest["user_id"] = user_id
916
+ if account_name:
917
+ request._ingest["account_name"] = account_name
897
918
 
898
919
  request_properties = context.get("request_properties", None)
899
920
  if request_properties:
@@ -1207,6 +1228,7 @@ class _PayiInstrumentor:
1207
1228
  context_use_case_step: Optional[str] = context.get("use_case_step")
1208
1229
 
1209
1230
  context_user_id: Optional[str] = context.get("user_id")
1231
+ context_account_name: Optional[str] = context.get("account_name")
1210
1232
  context_request_tags: Optional[list[str]] = context.get("request_tags")
1211
1233
 
1212
1234
  context_price_as_category: Optional[str] = context.get("price_as_category")
@@ -1239,6 +1261,17 @@ class _PayiInstrumentor:
1239
1261
  elif context_user_id:
1240
1262
  extra_headers[PayiHeaderNames.user_id] = context_user_id
1241
1263
 
1264
+ if PayiHeaderNames.account_name in extra_headers:
1265
+ headers_account_name = extra_headers.get(PayiHeaderNames.account_name, None)
1266
+ if headers_account_name is None or len(headers_account_name) == 0:
1267
+ # headers_account_name is empty, remove it from extra_headers
1268
+ extra_headers.pop(PayiHeaderNames.account_name, None)
1269
+ else:
1270
+ # leave the value in extra_headers
1271
+ ...
1272
+ elif context_account_name:
1273
+ extra_headers[PayiHeaderNames.account_name] = context_account_name
1274
+
1242
1275
  if PayiHeaderNames.use_case_name in extra_headers:
1243
1276
  headers_use_case_name = extra_headers.get(PayiHeaderNames.use_case_name, None)
1244
1277
  if headers_use_case_name is None or len(headers_use_case_name) == 0:
@@ -1711,6 +1744,7 @@ def track(
1711
1744
  use_case_id: Optional[str] = None,
1712
1745
  use_case_version: Optional[int] = None,
1713
1746
  user_id: Optional[str] = None,
1747
+ account_name: Optional[str] = None,
1714
1748
  request_tags: Optional["list[str]"] = None,
1715
1749
  request_properties: Optional["dict[str, str]"] = None,
1716
1750
  use_case_properties: Optional["dict[str, str]"] = None,
@@ -1735,6 +1769,7 @@ def track(
1735
1769
  use_case_id,
1736
1770
  use_case_version,
1737
1771
  user_id,
1772
+ account_name,
1738
1773
  request_tags,
1739
1774
  request_properties,
1740
1775
  use_case_properties,
@@ -1748,7 +1783,7 @@ def track(
1748
1783
  _g_logger.debug(f"track: no instrumentor!")
1749
1784
  return func(*args, **kwargs)
1750
1785
 
1751
- _instrumentor._logger.debug(f"track: call sync function (proxy={proxy}, limit_ids={limit_ids}, use_case_name={use_case_name}, use_case_id={use_case_id}, use_case_version={use_case_version}, user_id={user_id})")
1786
+ _instrumentor._logger.debug(f"track: call sync function (proxy={proxy}, limit_ids={limit_ids}, use_case_name={use_case_name}, use_case_id={use_case_id}, use_case_version={use_case_version}, user_id={user_id}, account_name={account_name})")
1752
1787
 
1753
1788
  return _instrumentor._call_func(
1754
1789
  func,
@@ -1758,6 +1793,7 @@ def track(
1758
1793
  use_case_id,
1759
1794
  use_case_version,
1760
1795
  user_id,
1796
+ account_name,
1761
1797
  request_tags,
1762
1798
  request_properties,
1763
1799
  use_case_properties,
@@ -1775,6 +1811,7 @@ def track_context(
1775
1811
  use_case_version: Optional[int] = None,
1776
1812
  use_case_step: Optional[str] = None,
1777
1813
  user_id: Optional[str] = None,
1814
+ account_name: Optional[str] = None,
1778
1815
  request_tags: Optional["list[str]"] = None,
1779
1816
  request_properties: Optional["dict[str, str]"] = None,
1780
1817
  use_case_properties: Optional["dict[str, str]"] = None,
@@ -1796,6 +1833,7 @@ def track_context(
1796
1833
  context["use_case_step"] = use_case_step
1797
1834
 
1798
1835
  context["user_id"] = user_id
1836
+ context["account_name"] = account_name
1799
1837
  context["request_tags"] = request_tags
1800
1838
 
1801
1839
  context["price_as_category"] = price_as_category
payi/resources/ingest.py CHANGED
@@ -86,7 +86,6 @@ class IngestResource(SyncAPIResource):
86
86
  self,
87
87
  *,
88
88
  category: str,
89
- resource: str,
90
89
  units: Dict[str, IngestUnits],
91
90
  end_to_end_latency_ms: Optional[int] | NotGiven = NOT_GIVEN,
92
91
  event_timestamp: Union[str, datetime, None] | NotGiven = NOT_GIVEN,
@@ -101,6 +100,7 @@ class IngestResource(SyncAPIResource):
101
100
  provider_response_id: Optional[str] | NotGiven = NOT_GIVEN,
102
101
  provider_response_json: Union[str, List[str], None] | NotGiven = NOT_GIVEN,
103
102
  provider_uri: Optional[str] | NotGiven = NOT_GIVEN,
103
+ resource: Optional[str] | NotGiven = NOT_GIVEN,
104
104
  time_to_first_completion_token_ms: Optional[int] | NotGiven = NOT_GIVEN,
105
105
  time_to_first_token_ms: Optional[int] | NotGiven = NOT_GIVEN,
106
106
  use_case_properties: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
@@ -233,7 +233,6 @@ class IngestResource(SyncAPIResource):
233
233
  body=maybe_transform(
234
234
  {
235
235
  "category": category,
236
- "resource": resource,
237
236
  "units": units,
238
237
  "end_to_end_latency_ms": end_to_end_latency_ms,
239
238
  "event_timestamp": event_timestamp,
@@ -247,6 +246,7 @@ class IngestResource(SyncAPIResource):
247
246
  "provider_response_id": provider_response_id,
248
247
  "provider_response_json": provider_response_json,
249
248
  "provider_uri": provider_uri,
249
+ "resource": resource,
250
250
  "time_to_first_completion_token_ms": time_to_first_completion_token_ms,
251
251
  "time_to_first_token_ms": time_to_first_token_ms,
252
252
  "use_case_properties": use_case_properties,
@@ -316,7 +316,6 @@ class AsyncIngestResource(AsyncAPIResource):
316
316
  self,
317
317
  *,
318
318
  category: str,
319
- resource: str,
320
319
  units: Dict[str, IngestUnits],
321
320
  end_to_end_latency_ms: Optional[int] | NotGiven = NOT_GIVEN,
322
321
  event_timestamp: Union[str, datetime, None] | NotGiven = NOT_GIVEN,
@@ -331,6 +330,7 @@ class AsyncIngestResource(AsyncAPIResource):
331
330
  provider_response_id: Optional[str] | NotGiven = NOT_GIVEN,
332
331
  provider_response_json: Union[str, List[str], None] | NotGiven = NOT_GIVEN,
333
332
  provider_uri: Optional[str] | NotGiven = NOT_GIVEN,
333
+ resource: Optional[str] | NotGiven = NOT_GIVEN,
334
334
  time_to_first_completion_token_ms: Optional[int] | NotGiven = NOT_GIVEN,
335
335
  time_to_first_token_ms: Optional[int] | NotGiven = NOT_GIVEN,
336
336
  use_case_properties: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
@@ -461,7 +461,6 @@ class AsyncIngestResource(AsyncAPIResource):
461
461
  body=await async_maybe_transform(
462
462
  {
463
463
  "category": category,
464
- "resource": resource,
465
464
  "units": units,
466
465
  "end_to_end_latency_ms": end_to_end_latency_ms,
467
466
  "event_timestamp": event_timestamp,
@@ -475,6 +474,7 @@ class AsyncIngestResource(AsyncAPIResource):
475
474
  "provider_response_id": provider_response_id,
476
475
  "provider_response_json": provider_response_json,
477
476
  "provider_uri": provider_uri,
477
+ "resource": resource,
478
478
  "time_to_first_completion_token_ms": time_to_first_completion_token_ms,
479
479
  "time_to_first_token_ms": time_to_first_token_ms,
480
480
  "use_case_properties": use_case_properties,
@@ -66,8 +66,6 @@ class LimitsResource(SyncAPIResource):
66
66
  *,
67
67
  limit_name: str,
68
68
  max: float,
69
- billing_model_id: Optional[str] | NotGiven = NOT_GIVEN,
70
- limit_basis: Literal["base", "billed"] | NotGiven = NOT_GIVEN,
71
69
  limit_id: Optional[str] | NotGiven = NOT_GIVEN,
72
70
  limit_tags: Optional[List[str]] | NotGiven = NOT_GIVEN,
73
71
  limit_type: Literal["block", "allow"] | NotGiven = NOT_GIVEN,
@@ -97,8 +95,6 @@ class LimitsResource(SyncAPIResource):
97
95
  {
98
96
  "limit_name": limit_name,
99
97
  "max": max,
100
- "billing_model_id": billing_model_id,
101
- "limit_basis": limit_basis,
102
98
  "limit_id": limit_id,
103
99
  "limit_tags": limit_tags,
104
100
  "limit_type": limit_type,
@@ -337,8 +333,6 @@ class AsyncLimitsResource(AsyncAPIResource):
337
333
  *,
338
334
  limit_name: str,
339
335
  max: float,
340
- billing_model_id: Optional[str] | NotGiven = NOT_GIVEN,
341
- limit_basis: Literal["base", "billed"] | NotGiven = NOT_GIVEN,
342
336
  limit_id: Optional[str] | NotGiven = NOT_GIVEN,
343
337
  limit_tags: Optional[List[str]] | NotGiven = NOT_GIVEN,
344
338
  limit_type: Literal["block", "allow"] | NotGiven = NOT_GIVEN,
@@ -368,8 +362,6 @@ class AsyncLimitsResource(AsyncAPIResource):
368
362
  {
369
363
  "limit_name": limit_name,
370
364
  "max": max,
371
- "billing_model_id": billing_model_id,
372
- "limit_basis": limit_basis,
373
365
  "limit_id": limit_id,
374
366
  "limit_tags": limit_tags,
375
367
  "limit_type": limit_type,
@@ -54,9 +54,9 @@ class KpisResource(SyncAPIResource):
54
54
  use_case_name: str,
55
55
  *,
56
56
  description: str,
57
+ goal: float,
58
+ kpi_type: Literal["boolean", "number", "percentage", "likert5", "likert7", "likert10"],
57
59
  name: str,
58
- goal: float | NotGiven = NOT_GIVEN,
59
- kpi_type: Literal["boolean", "number", "percentage", "likert5", "likert7", "likert10"] | NotGiven = NOT_GIVEN,
60
60
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
61
61
  # The extra values given here take precedence over values defined on the client or passed to this method.
62
62
  extra_headers: Headers | None = None,
@@ -65,7 +65,7 @@ class KpisResource(SyncAPIResource):
65
65
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
66
66
  ) -> KpiCreateResponse:
67
67
  """
68
- Create a new Use Case KPI definition
68
+ Create a new KPI definition for a Use Case
69
69
 
70
70
  Args:
71
71
  extra_headers: Send extra headers
@@ -83,9 +83,9 @@ class KpisResource(SyncAPIResource):
83
83
  body=maybe_transform(
84
84
  {
85
85
  "description": description,
86
- "name": name,
87
86
  "goal": goal,
88
87
  "kpi_type": kpi_type,
88
+ "name": name,
89
89
  },
90
90
  kpi_create_params.KpiCreateParams,
91
91
  ),
@@ -146,7 +146,7 @@ class KpisResource(SyncAPIResource):
146
146
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
147
147
  ) -> KpiUpdateResponse:
148
148
  """
149
- Update a Use Case KPI definition
149
+ Update a KPI definition for a Use Case
150
150
 
151
151
  Args:
152
152
  extra_headers: Send extra headers
@@ -239,7 +239,7 @@ class KpisResource(SyncAPIResource):
239
239
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
240
240
  ) -> KpiDeleteResponse:
241
241
  """
242
- Delete a Use Case KPI definition
242
+ Delete a KPI definition for a Use Case
243
243
 
244
244
  Args:
245
245
  extra_headers: Send extra headers
@@ -288,9 +288,9 @@ class AsyncKpisResource(AsyncAPIResource):
288
288
  use_case_name: str,
289
289
  *,
290
290
  description: str,
291
+ goal: float,
292
+ kpi_type: Literal["boolean", "number", "percentage", "likert5", "likert7", "likert10"],
291
293
  name: str,
292
- goal: float | NotGiven = NOT_GIVEN,
293
- kpi_type: Literal["boolean", "number", "percentage", "likert5", "likert7", "likert10"] | NotGiven = NOT_GIVEN,
294
294
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
295
295
  # The extra values given here take precedence over values defined on the client or passed to this method.
296
296
  extra_headers: Headers | None = None,
@@ -299,7 +299,7 @@ class AsyncKpisResource(AsyncAPIResource):
299
299
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
300
300
  ) -> KpiCreateResponse:
301
301
  """
302
- Create a new Use Case KPI definition
302
+ Create a new KPI definition for a Use Case
303
303
 
304
304
  Args:
305
305
  extra_headers: Send extra headers
@@ -317,9 +317,9 @@ class AsyncKpisResource(AsyncAPIResource):
317
317
  body=await async_maybe_transform(
318
318
  {
319
319
  "description": description,
320
- "name": name,
321
320
  "goal": goal,
322
321
  "kpi_type": kpi_type,
322
+ "name": name,
323
323
  },
324
324
  kpi_create_params.KpiCreateParams,
325
325
  ),
@@ -380,7 +380,7 @@ class AsyncKpisResource(AsyncAPIResource):
380
380
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
381
381
  ) -> KpiUpdateResponse:
382
382
  """
383
- Update a Use Case KPI definition
383
+ Update a KPI definition for a Use Case
384
384
 
385
385
  Args:
386
386
  extra_headers: Send extra headers
@@ -473,7 +473,7 @@ class AsyncKpisResource(AsyncAPIResource):
473
473
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
474
474
  ) -> KpiDeleteResponse:
475
475
  """
476
- Delete a Use Case KPI definition
476
+ Delete a KPI definition for a Use Case
477
477
 
478
478
  Args:
479
479
  extra_headers: Send extra headers
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from typing import Union
6
+
5
7
  import httpx
6
8
 
7
9
  from ..._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
@@ -47,7 +49,7 @@ class KpisResource(SyncAPIResource):
47
49
  kpi_name: str,
48
50
  *,
49
51
  use_case_id: str,
50
- score: float | NotGiven = NOT_GIVEN,
52
+ score: Union[bool, float, None] | NotGiven = NOT_GIVEN,
51
53
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
52
54
  # The extra values given here take precedence over values defined on the client or passed to this method.
53
55
  extra_headers: Headers | None = None,
@@ -157,7 +159,7 @@ class AsyncKpisResource(AsyncAPIResource):
157
159
  kpi_name: str,
158
160
  *,
159
161
  use_case_id: str,
160
- score: float | NotGiven = NOT_GIVEN,
162
+ score: Union[bool, float, None] | NotGiven = NOT_GIVEN,
161
163
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
162
164
  # The extra values given here take precedence over values defined on the client or passed to this method.
163
165
  extra_headers: Headers | None = None,
@@ -18,7 +18,7 @@ from ..._response import (
18
18
  )
19
19
  from ..._base_client import make_request_options
20
20
  from ...types.use_cases import property_update_params
21
- from ...types.use_cases.property_create_response import PropertyCreateResponse
21
+ from ...types.use_case_instance_response import UseCaseInstanceResponse
22
22
 
23
23
  __all__ = ["PropertiesResource", "AsyncPropertiesResource"]
24
24
 
@@ -54,7 +54,7 @@ class PropertiesResource(SyncAPIResource):
54
54
  extra_query: Query | None = None,
55
55
  extra_body: Body | None = None,
56
56
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
57
- ) -> PropertyCreateResponse:
57
+ ) -> UseCaseInstanceResponse:
58
58
  """
59
59
  Update a Use Case instance properties
60
60
 
@@ -75,7 +75,7 @@ class PropertiesResource(SyncAPIResource):
75
75
  options=make_request_options(
76
76
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
77
77
  ),
78
- cast_to=PropertyCreateResponse,
78
+ cast_to=UseCaseInstanceResponse,
79
79
  )
80
80
 
81
81
 
@@ -110,7 +110,7 @@ class AsyncPropertiesResource(AsyncAPIResource):
110
110
  extra_query: Query | None = None,
111
111
  extra_body: Body | None = None,
112
112
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
113
- ) -> PropertyCreateResponse:
113
+ ) -> UseCaseInstanceResponse:
114
114
  """
115
115
  Update a Use Case instance properties
116
116
 
@@ -131,7 +131,7 @@ class AsyncPropertiesResource(AsyncAPIResource):
131
131
  options=make_request_options(
132
132
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
133
133
  ),
134
- cast_to=PropertyCreateResponse,
134
+ cast_to=UseCaseInstanceResponse,
135
135
  )
136
136
 
137
137
 
@@ -38,9 +38,7 @@ from .definitions.definitions import (
38
38
  DefinitionsResourceWithStreamingResponse,
39
39
  AsyncDefinitionsResourceWithStreamingResponse,
40
40
  )
41
- from ...types.use_case_create_response import UseCaseCreateResponse
42
- from ...types.use_case_delete_response import UseCaseDeleteResponse
43
- from ...types.use_case_retrieve_response import UseCaseRetrieveResponse
41
+ from ...types.use_case_instance_response import UseCaseInstanceResponse
44
42
 
45
43
  __all__ = ["UseCasesResource", "AsyncUseCasesResource"]
46
44
 
@@ -87,7 +85,7 @@ class UseCasesResource(SyncAPIResource):
87
85
  extra_query: Query | None = None,
88
86
  extra_body: Body | None = None,
89
87
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
90
- ) -> UseCaseCreateResponse:
88
+ ) -> UseCaseInstanceResponse:
91
89
  """
92
90
  Create a Use Case instance
93
91
 
@@ -107,7 +105,7 @@ class UseCasesResource(SyncAPIResource):
107
105
  options=make_request_options(
108
106
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
109
107
  ),
110
- cast_to=UseCaseCreateResponse,
108
+ cast_to=UseCaseInstanceResponse,
111
109
  )
112
110
 
113
111
  def retrieve(
@@ -120,7 +118,7 @@ class UseCasesResource(SyncAPIResource):
120
118
  extra_query: Query | None = None,
121
119
  extra_body: Body | None = None,
122
120
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
123
- ) -> UseCaseRetrieveResponse:
121
+ ) -> UseCaseInstanceResponse:
124
122
  """
125
123
  Get a Use Case instance details
126
124
 
@@ -140,7 +138,7 @@ class UseCasesResource(SyncAPIResource):
140
138
  options=make_request_options(
141
139
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
142
140
  ),
143
- cast_to=UseCaseRetrieveResponse,
141
+ cast_to=UseCaseInstanceResponse,
144
142
  )
145
143
 
146
144
  def delete(
@@ -153,7 +151,7 @@ class UseCasesResource(SyncAPIResource):
153
151
  extra_query: Query | None = None,
154
152
  extra_body: Body | None = None,
155
153
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
156
- ) -> UseCaseDeleteResponse:
154
+ ) -> UseCaseInstanceResponse:
157
155
  """
158
156
  Delete a Use Case instance
159
157
 
@@ -173,7 +171,7 @@ class UseCasesResource(SyncAPIResource):
173
171
  options=make_request_options(
174
172
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
175
173
  ),
176
- cast_to=UseCaseDeleteResponse,
174
+ cast_to=UseCaseInstanceResponse,
177
175
  )
178
176
 
179
177
 
@@ -219,7 +217,7 @@ class AsyncUseCasesResource(AsyncAPIResource):
219
217
  extra_query: Query | None = None,
220
218
  extra_body: Body | None = None,
221
219
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
222
- ) -> UseCaseCreateResponse:
220
+ ) -> UseCaseInstanceResponse:
223
221
  """
224
222
  Create a Use Case instance
225
223
 
@@ -239,7 +237,7 @@ class AsyncUseCasesResource(AsyncAPIResource):
239
237
  options=make_request_options(
240
238
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
241
239
  ),
242
- cast_to=UseCaseCreateResponse,
240
+ cast_to=UseCaseInstanceResponse,
243
241
  )
244
242
 
245
243
  async def retrieve(
@@ -252,7 +250,7 @@ class AsyncUseCasesResource(AsyncAPIResource):
252
250
  extra_query: Query | None = None,
253
251
  extra_body: Body | None = None,
254
252
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
255
- ) -> UseCaseRetrieveResponse:
253
+ ) -> UseCaseInstanceResponse:
256
254
  """
257
255
  Get a Use Case instance details
258
256
 
@@ -272,7 +270,7 @@ class AsyncUseCasesResource(AsyncAPIResource):
272
270
  options=make_request_options(
273
271
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
274
272
  ),
275
- cast_to=UseCaseRetrieveResponse,
273
+ cast_to=UseCaseInstanceResponse,
276
274
  )
277
275
 
278
276
  async def delete(
@@ -285,7 +283,7 @@ class AsyncUseCasesResource(AsyncAPIResource):
285
283
  extra_query: Query | None = None,
286
284
  extra_body: Body | None = None,
287
285
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
288
- ) -> UseCaseDeleteResponse:
286
+ ) -> UseCaseInstanceResponse:
289
287
  """
290
288
  Delete a Use Case instance
291
289
 
@@ -305,7 +303,7 @@ class AsyncUseCasesResource(AsyncAPIResource):
305
303
  options=make_request_options(
306
304
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
307
305
  ),
308
- cast_to=UseCaseDeleteResponse,
306
+ cast_to=UseCaseInstanceResponse,
309
307
  )
310
308
 
311
309
 
payi/types/__init__.py CHANGED
@@ -31,10 +31,8 @@ from .bulk_ingest_response import BulkIngestResponse as BulkIngestResponse
31
31
  from .category_list_params import CategoryListParams as CategoryListParams
32
32
  from .limit_history_response import LimitHistoryResponse as LimitHistoryResponse
33
33
  from .category_delete_response import CategoryDeleteResponse as CategoryDeleteResponse
34
- from .use_case_create_response import UseCaseCreateResponse as UseCaseCreateResponse
35
- from .use_case_delete_response import UseCaseDeleteResponse as UseCaseDeleteResponse
36
34
  from .category_resource_response import CategoryResourceResponse as CategoryResourceResponse
37
- from .use_case_retrieve_response import UseCaseRetrieveResponse as UseCaseRetrieveResponse
35
+ from .use_case_instance_response import UseCaseInstanceResponse as UseCaseInstanceResponse
38
36
  from .category_list_resources_params import CategoryListResourcesParams as CategoryListResourcesParams
39
37
  from .category_delete_resource_response import CategoryDeleteResourceResponse as CategoryDeleteResourceResponse
40
38
  from .pay_i_common_models_api_router_header_info_param import (
@@ -27,10 +27,14 @@ class CategoryResourceResponse(BaseModel):
27
27
 
28
28
  units: Dict[str, Units]
29
29
 
30
+ character_billing: Optional[bool] = None
31
+
30
32
  cost_per_hour: Optional[float] = None
31
33
 
32
34
  deprecated_timestamp: Optional[datetime] = None
33
35
 
36
+ large_context_threshold: Optional[int] = None
37
+
34
38
  max_input_units: Optional[int] = None
35
39
 
36
40
  max_output_units: Optional[int] = None
@@ -10,6 +10,4 @@ __all__ = ["CostDetails"]
10
10
  class CostDetails(BaseModel):
11
11
  base: float
12
12
 
13
- overage_base: Optional[float] = None
14
-
15
13
  overrun_base: Optional[float] = None
@@ -22,22 +22,14 @@ class ProviderResponseFunctionCall(TypedDict, total=False):
22
22
  class IngestEventParam(TypedDict, total=False):
23
23
  category: Required[str]
24
24
 
25
- resource: Required[str]
26
-
27
25
  units: Required[Dict[str, IngestUnits]]
28
26
 
27
+ account_name: Optional[str]
28
+
29
29
  end_to_end_latency_ms: Optional[int]
30
30
 
31
31
  event_timestamp: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")]
32
32
 
33
- experience_id: Optional[str]
34
-
35
- experience_name: Optional[str]
36
-
37
- experience_properties: Optional[Dict[str, str]]
38
-
39
- experience_version: Optional[int]
40
-
41
33
  http_status_code: Optional[int]
42
34
 
43
35
  limit_ids: Optional[List[str]]
@@ -62,6 +54,8 @@ class IngestEventParam(TypedDict, total=False):
62
54
 
63
55
  request_tags: Optional[List[str]]
64
56
 
57
+ resource: Optional[str]
58
+
65
59
  time_to_first_completion_token_ms: Optional[int]
66
60
 
67
61
  time_to_first_token_ms: Optional[int]
@@ -16,8 +16,6 @@ __all__ = ["IngestUnitsParams", "ProviderResponseFunctionCall"]
16
16
  class IngestUnitsParams(TypedDict, total=False):
17
17
  category: Required[str]
18
18
 
19
- resource: Required[str]
20
-
21
19
  units: Required[Dict[str, IngestUnits]]
22
20
 
23
21
  end_to_end_latency_ms: Optional[int]
@@ -44,6 +42,8 @@ class IngestUnitsParams(TypedDict, total=False):
44
42
 
45
43
  provider_uri: Optional[str]
46
44
 
45
+ resource: Optional[str]
46
+
47
47
  time_to_first_completion_token_ms: Optional[int]
48
48
 
49
49
  time_to_first_token_ms: Optional[int]
@@ -13,10 +13,6 @@ class LimitCreateParams(TypedDict, total=False):
13
13
 
14
14
  max: Required[float]
15
15
 
16
- billing_model_id: Optional[str]
17
-
18
- limit_basis: Literal["base", "billed"]
19
-
20
16
  limit_id: Optional[str]
21
17
 
22
18
  limit_tags: Optional[List[str]]
@@ -26,12 +26,12 @@ class Limits(BaseModel):
26
26
 
27
27
 
28
28
  class XproxyResult(BaseModel):
29
+ account_name: Optional[str] = None
30
+
29
31
  blocked_limit_ids: Optional[List[str]] = None
30
32
 
31
33
  cost: Optional[Cost] = None
32
34
 
33
- experience_id: Optional[str] = None
34
-
35
35
  limits: Optional[Dict[str, Limits]] = None
36
36
 
37
37
  request_id: Optional[str] = None
@@ -4,10 +4,10 @@ from typing import Optional
4
4
 
5
5
  from .._models import BaseModel
6
6
 
7
- __all__ = ["UseCaseCreateResponse"]
7
+ __all__ = ["UseCaseInstanceResponse"]
8
8
 
9
9
 
10
- class UseCaseCreateResponse(BaseModel):
10
+ class UseCaseInstanceResponse(BaseModel):
11
11
  use_case_id: str
12
12
 
13
13
  limit_id: Optional[str] = None
@@ -10,4 +10,3 @@ from .definition_list_params import DefinitionListParams as DefinitionListParams
10
10
  from .property_update_params import PropertyUpdateParams as PropertyUpdateParams
11
11
  from .definition_create_params import DefinitionCreateParams as DefinitionCreateParams
12
12
  from .definition_update_params import DefinitionUpdateParams as DefinitionUpdateParams
13
- from .property_create_response import PropertyCreateResponse as PropertyCreateResponse
@@ -10,8 +10,8 @@ __all__ = ["KpiCreateParams"]
10
10
  class KpiCreateParams(TypedDict, total=False):
11
11
  description: Required[str]
12
12
 
13
- name: Required[str]
13
+ goal: Required[float]
14
14
 
15
- goal: float
15
+ kpi_type: Required[Literal["boolean", "number", "percentage", "likert5", "likert7", "likert10"]]
16
16
 
17
- kpi_type: Literal["boolean", "number", "percentage", "likert5", "likert7", "likert10"]
17
+ name: Required[str]
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from typing import Union
5
6
  from typing_extensions import Required, TypedDict
6
7
 
7
8
  __all__ = ["KpiUpdateParams"]
@@ -10,4 +11,4 @@ __all__ = ["KpiUpdateParams"]
10
11
  class KpiUpdateParams(TypedDict, total=False):
11
12
  use_case_id: Required[str]
12
13
 
13
- score: float
14
+ score: Union[bool, float, None]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: payi
3
- Version: 0.1.0a106
3
+ Version: 0.1.0a108
4
4
  Summary: The official Python library for the payi API
5
5
  Project-URL: Homepage, https://github.com/Pay-i/pay-i-python
6
6
  Project-URL: Repository, https://github.com/Pay-i/pay-i-python
@@ -1,17 +1,17 @@
1
1
  payi/__init__.py,sha256=D0Hb0f0CuE6t648U7C0qOOKez56wyNcIndIYcNuamlU,2560
2
- payi/_base_client.py,sha256=eehCdtbXc28VdCSMlJWF9uYg1jtWNpmm8KcEL5BSYVU,66920
2
+ payi/_base_client.py,sha256=bbDglAL7W_pbfvcDSMy07UIGWJj9FJddyTCcpKdYJ-4,67033
3
3
  payi/_client.py,sha256=tKKTYVdI7BWHLNUzYDI9t1zqu2OQrDjm0Blm9lkqTUw,17199
4
4
  payi/_compat.py,sha256=VWemUKbj6DDkQ-O4baSpHVLJafotzeXmCQGJugfVTIw,6580
5
5
  payi/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
6
6
  payi/_exceptions.py,sha256=ItygKNrNXIVY0H6LsGVZvFuAHB3Vtm_VZXmWzCnpHy0,3216
7
- payi/_files.py,sha256=mf4dOgL4b0ryyZlbqLhggD3GVgDf6XxdGFAgce01ugE,3549
7
+ payi/_files.py,sha256=KnEzGi_O756MvKyJ4fOCW_u3JhOeWPQ4RsmDvqihDQU,3545
8
8
  payi/_models.py,sha256=KvjsMfb88XZlFUKVoOxr8OyDj47MhoH2OKqWNEbBhk4,30010
9
9
  payi/_qs.py,sha256=AOkSz4rHtK4YI3ZU_kzea-zpwBUgEY8WniGmTPyEimc,4846
10
10
  payi/_resource.py,sha256=j2jIkTr8OIC8sU6-05nxSaCyj4MaFlbZrwlyg4_xJos,1088
11
11
  payi/_response.py,sha256=rh9oJAvCKcPwQFm4iqH_iVrmK8bNx--YP_A2a4kN1OU,28776
12
12
  payi/_streaming.py,sha256=Z_wIyo206T6Jqh2rolFg2VXZgX24PahLmpURp0-NssU,10092
13
13
  payi/_types.py,sha256=7jE5MoQQFVoVxw5vVzvZ2Ao0kcjfNOGsBgyJfLBEnMo,6195
14
- payi/_version.py,sha256=vYEkCTowo73-vb5u_2oub0k-9dRwKbZdPRP4KM3EFoM,166
14
+ payi/_version.py,sha256=AOL6_Y2uHGOJX-kZb-qGKKCHgBP2ikn9mz6ccxBjqxo,166
15
15
  payi/pagination.py,sha256=k2356QGPOUSjRF2vHpwLBdF6P-2vnQzFfRIJQAHGQ7A,1258
16
16
  payi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  payi/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
@@ -32,17 +32,17 @@ payi/lib/OpenAIInstrumentor.py,sha256=_ULwIli11XP1yZK_pMGXuaSmHZ5pozuEt_v5DfhNuG
32
32
  payi/lib/Stopwatch.py,sha256=7OJlxvr2Jyb6Zr1LYCYKczRB7rDVKkIR7gc4YoleNdE,764
33
33
  payi/lib/VertexInstrumentor.py,sha256=OWuMPiW4LdLhj6DSAAy5qZiosVo8DSAuFWGxYpEucoE,7431
34
34
  payi/lib/VertexRequest.py,sha256=edv14HR5QtKaf07gmOqzWdhoJGdWCos85uCZASwsGL4,11710
35
- payi/lib/helpers.py,sha256=FPzNSSHGf9bgD6CanB7yVx_U8t4lm2c0jlZKrsziYlc,4242
36
- payi/lib/instrument.py,sha256=TR4RBx5tlmTkerD4A4QN1Cr9dH_vQ-OZ_NjI5bz-cV0,73551
35
+ payi/lib/helpers.py,sha256=jcMyxsuWmyPymDCYmDbQAb6IgbkmkiiNUaxeEPkCKZs,4457
36
+ payi/lib/instrument.py,sha256=01AVcCT2RRaXlxsz7zd8pappUYpjlFdKovZ8AJanXfE,75349
37
37
  payi/lib/version_helper.py,sha256=v0lC3kuaXn6PBDolE3mkmwJiA8Ot3z4RkVR7wlBuZCs,540
38
38
  payi/resources/__init__.py,sha256=B2bn1ZfCf6TbHlzZvy5TpFPtALnFcBRPYVKQH3S5qfQ,2457
39
- payi/resources/ingest.py,sha256=BPANJKfpRsRdOn8M6xDgc4cIEFyQcXmG52W3woWRgjE,23013
39
+ payi/resources/ingest.py,sha256=7HeaAnIhPmAYdom8tAPPTa1WlbKL8pFCuQdZ2QSFuyE,23079
40
40
  payi/resources/categories/__init__.py,sha256=WeotN_d-0Ri8ohsrNPbve7RyViD9_N0NA9DrV3WYg3w,1701
41
41
  payi/resources/categories/categories.py,sha256=yYCkCxaYPWees9I9cx9CPy_H9wZK2X7jq8tRh-G__v8,20653
42
42
  payi/resources/categories/fixed_cost_resources.py,sha256=tLJlZ06KDIOHpVF4iq8S9IPocGohbOYh9LO0cWGznUA,7824
43
43
  payi/resources/categories/resources.py,sha256=nY5mKJPEy7-6J_UsyXZebNmUs6WK5ONx_qON9z6DwUg,19979
44
44
  payi/resources/limits/__init__.py,sha256=URXh9vglDH-dqbVGk-XcrDa8H5Bg2pgFuVQQecgEtaA,976
45
- payi/resources/limits/limits.py,sha256=ANZvONr9C9IdMKExrghKyHA1fCSfJzxl1cz4eTYkSV4,25678
45
+ payi/resources/limits/limits.py,sha256=kyzyLrgjrK3qgMvSjzHAJGyFTNTFWUnAr7uw4bRpBp4,25196
46
46
  payi/resources/limits/tags.py,sha256=gPW2ds6Zh7-BV7_SwtbRGcMMgj94NciGzcui6FRRQ-o,18964
47
47
  payi/resources/requests/__init__.py,sha256=L86SkNRyb9oySva7oQu6rMwBRUnctb4grtDSRN3T9_g,1571
48
48
  payi/resources/requests/requests.py,sha256=Mkyy-Iv7dZ-uKLMBm4eZdwHwm4ZKdF6O7W9QY53YcTo,4972
@@ -55,30 +55,30 @@ payi/resources/requests/response_id/properties.py,sha256=ei7Z64f1rr1IXJ0WNkZK4MI
55
55
  payi/resources/requests/response_id/response_id.py,sha256=PR2bLNJdMlgt3qjLBtnpyXrydZVd8dFUvRLC3W5WcJk,4942
56
56
  payi/resources/requests/response_id/result.py,sha256=TZadukcmGAVIA1VcCgPMu1fhOc6gJKO-GHsOJKc-rH8,6336
57
57
  payi/resources/use_cases/__init__.py,sha256=ckXPaVoPQmGESfgQF_ySP_eGskI6T4bJjPKoEGyo2gI,2020
58
- payi/resources/use_cases/kpis.py,sha256=y_L-FZdEISqX7cUhyy16oLyL8kyCGFvzzxxptAPd2JE,11057
59
- payi/resources/use_cases/properties.py,sha256=OhX3-w-V5gQpBNtfd6w8z44FZJB2PNqOQqEIe0iES7w,6531
60
- payi/resources/use_cases/use_cases.py,sha256=jv-iJik46W8WQR2q-ejxGwvmZugJ10bp52zPNXztsLE,15702
58
+ payi/resources/use_cases/kpis.py,sha256=d154_8Fdu0JcsVZKAbuQd6ZEqo4_RzemPnkUmOa15FE,11121
59
+ payi/resources/use_cases/properties.py,sha256=sCf0MM-VdxO6uGuyuSma6Ydjf-ghWKwqnS_35DQrxzo,6528
60
+ payi/resources/use_cases/use_cases.py,sha256=rTwgr7EL7UTsot61JsTLvs8hGykxFxjVflwZ99VjE_w,15582
61
61
  payi/resources/use_cases/definitions/__init__.py,sha256=pImtiVUbgsm6PkMJ0NPkrhQj8kEi36db-LF5rJukmMY,2020
62
62
  payi/resources/use_cases/definitions/definitions.py,sha256=aEnHvpULs0oRbDl_Fvr32Dr5Pd_ySX7kmtC5uiqcBKM,24542
63
- payi/resources/use_cases/definitions/kpis.py,sha256=UDvubQ8p1XUnP0nRr7UsdHUKsWpIU7szLsE7v42ATE8,22642
63
+ payi/resources/use_cases/definitions/kpis.py,sha256=3c25hms6laX_9q3an47RcsBJUnS7lcoPpQKsSLbiWmg,22586
64
64
  payi/resources/use_cases/definitions/limit_config.py,sha256=ojUg3Hhc5tGk5qE2Oxf9OlgcvvxY0A7HN3Q0uq1fsVo,10583
65
65
  payi/resources/use_cases/definitions/version.py,sha256=I1mrP_OEyEytMaQJeb06SS5GCJ6JO9K58nVIVdOgZiY,6013
66
- payi/types/__init__.py,sha256=_EBiVCFKocPjC3HgboqUeWJcb3_ZcQVWSl5Dwd6zwZo,2629
66
+ payi/types/__init__.py,sha256=16tyUhSSlJzmqKVog8WuMdJzRQn8U5oZ3u2hK-K9GoI,2459
67
67
  payi/types/bulk_ingest_response.py,sha256=BN6UUzNqICkSzbT0ucu2swznLpErmEN_kgWORCb2rwE,1211
68
68
  payi/types/category_delete_resource_response.py,sha256=PLz4wZA1XMpS9SUYB_j4hEw5EoZ0VVE9Ll-MQ26SAfc,339
69
69
  payi/types/category_delete_response.py,sha256=exq8rNDGoq2-YN528V8osdcmuptJ-k63rmCvPMm6hLA,323
70
70
  payi/types/category_list_params.py,sha256=hHe6LRxl8CGykRj4F4-eW_z5d5PxP3YzY0m7qtiM5jY,307
71
71
  payi/types/category_list_resources_params.py,sha256=Od65gihJCHdJWti1jdjUMp5l0vOvZb1PR50v9IQ4Mkk,325
72
- payi/types/category_resource_response.py,sha256=Kw5wlKG_VLUs_HJ3oLUeMu4rfJ_Ndm73flkXgAfQ-E4,756
72
+ payi/types/category_resource_response.py,sha256=izvwIS0w21PAmxIF5CcOZst1S3JZ9ghvDIbD-NLRT5I,853
73
73
  payi/types/category_response.py,sha256=dlvHaKJlcGm936aduRIMxJXHapPGo4Rfs9ObIYkP4Yc,206
74
74
  payi/types/cost_data.py,sha256=KXGLnqOKxS0q8yT9eRhdQHyGMSAcuukCHWcWZC1A6Fk,487
75
- payi/types/cost_details.py,sha256=w9p79opEG3kcsjkRRP7niaMcUswdfB4Y7HCkVTcQ1zQ,307
75
+ payi/types/cost_details.py,sha256=3ldvnYILAG6Sz9wGWMs1SZvIfdGEbn5i4-CauWEXMPA,265
76
76
  payi/types/default_response.py,sha256=o617LpRsCIZHCZxAc5nVI2JQ3HPGZo4gCDvSDkxkIJ8,270
77
77
  payi/types/ingest_bulk_params.py,sha256=A-IRb39d2tmVzEQqrvhlF_3si-9ufHBKYLlvdXupAHU,362
78
- payi/types/ingest_event_param.py,sha256=Nxf-sRKlks8gXaSM_52s_3TkvG0SJICxsvgkRch_Yxk,2054
78
+ payi/types/ingest_event_param.py,sha256=sPZX3Pdl4zCprCT_B4q3IrzMBrGind5AVy7VYUCOm4U,1925
79
79
  payi/types/ingest_response.py,sha256=JwcZ6OL793uXTuDmZAzkzhGcdtDsSXfSy_ERjzc7MZY,378
80
- payi/types/ingest_units_params.py,sha256=Zj0PcVPbjRAz3lwqJqJ2QS8FXxdRwCMlVD5frEshtbk,2526
81
- payi/types/limit_create_params.py,sha256=NHQHY1eeetGS6lU8aMIcibvVPzYE04mzLcf4Sz06gBs,578
80
+ payi/types/ingest_units_params.py,sha256=UgOVXsSerkVYwbAgDZ5xFZ_p2DcZsESNPF7Kc5RIhDo,2526
81
+ payi/types/limit_create_params.py,sha256=cPUTDLtUqJxCv7xvoB3e3kefN6iZTvnjaw01Y5tHEIo,497
82
82
  payi/types/limit_history_response.py,sha256=vJnVVa5BROfYHRPvpfymcOabjDhcJtFowQF-L-apNgw,770
83
83
  payi/types/limit_list_params.py,sha256=OYlK0anDA5G71FfwrMDzhEX4S5AlASLRiR0tmyD9tTU,322
84
84
  payi/types/limit_list_response.py,sha256=8UMtHrO38HqOkn8qAC9R90N902VVRZrZYp0C7fPEX1g,622
@@ -89,9 +89,7 @@ payi/types/pay_i_common_models_api_router_header_info_param.py,sha256=91djoPLmoa
89
89
  payi/types/request_result.py,sha256=mD0akFmhrAqCFZwo-ampDuBH7cK5Y6GOmQm7vT-WIwE,261
90
90
  payi/types/requests_data.py,sha256=coHpXgOIQv8oKaX354G-uYoJMzbJcjIW1oX1wuQppts,307
91
91
  payi/types/total_cost_data.py,sha256=1xoiInVI0UaKup_8poAHNgcpK8gu09RQnMrdorQtFgQ,301
92
- payi/types/use_case_create_response.py,sha256=Tuq4mzkshfw1bAjo0UsVfj3NeJ6XsS9WOWAiy2acwJU,324
93
- payi/types/use_case_delete_response.py,sha256=eHhHVEDtsWY48CAXmN6sdgbCEaeUWM4sB7pikDkWu9s,324
94
- payi/types/use_case_retrieve_response.py,sha256=yYCTV0CLGUdQTM_yccsedUf8Ia7J6KGXGY88S-53OyA,328
92
+ payi/types/use_case_instance_response.py,sha256=khdcmoU1L8djNVYLu4rSmWkaceZmGwkE9eHLedN1ePU,328
95
93
  payi/types/categories/__init__.py,sha256=mpdvOCRgkzQgIqgcb30nvunzZFqMrDOAoa_N0MJZouE,389
96
94
  payi/types/categories/fixed_cost_resource_create_params.py,sha256=7aCIr-qIGTRkDtYwcnnFgt_iSOIrVbelw23rYYP1IgI,567
97
95
  payi/types/categories/resource_create_params.py,sha256=HVzUWhvmUhVu9h70DmUrBPUcO-g2VUIc5cg0sxbG3fs,745
@@ -118,22 +116,21 @@ payi/types/shared/pay_i_common_models_budget_management_cost_details_base.py,sha
118
116
  payi/types/shared/pay_i_common_models_budget_management_create_limit_base.py,sha256=FDFCOvxG7Dep7oELqQATc_YWrRZ-Uh9WOpL2ZKPDQ6Q,482
119
117
  payi/types/shared/properties_response.py,sha256=HpFNtxl_OjoMCs24xPVZLKe3FwCVcNkcRs0LsQKLrHM,259
120
118
  payi/types/shared/xproxy_error.py,sha256=I8dsEHZF_0dM-1YvZ6_mysRJuNlWJrQIHacs9yRaZCM,274
121
- payi/types/shared/xproxy_result.py,sha256=v3P4gGJrnT6W49nJ88ikvxnQfWOaiwqRRLn91veE1sU,1383
119
+ payi/types/shared/xproxy_result.py,sha256=Q9DfH8vfZ7NU0d9nUKDTFeLWorZ83oICbbdJsKgTsBM,1382
122
120
  payi/types/shared_params/__init__.py,sha256=dRGuNTZWLagRlbQfl5tKc0JMEYNRVXUad5oyl7IFeIU,317
123
121
  payi/types/shared_params/ingest_units.py,sha256=ueGIq14EQRGIDQlIHCCParrDxh1TZ_Hjfx2GP3_19yA,267
124
122
  payi/types/shared_params/pay_i_common_models_budget_management_create_limit_base.py,sha256=8UXPHFrNDZfF5tgEeV0mIqevksNGEWayv2NJV5DY_Rg,497
125
- payi/types/use_cases/__init__.py,sha256=qFS310pxzDjeMzB2r2vMU56090Dnt8DIyc_ekWuwl34,810
123
+ payi/types/use_cases/__init__.py,sha256=etITqrdbGF_cdY2CSF0xq1Be9LFdUeQtZXNg_uJEfeM,723
126
124
  payi/types/use_cases/definition_create_params.py,sha256=8Z48UFbJq0nohT0rG64-3Js9nadWNDMoeVUTXn4PLp4,597
127
125
  payi/types/use_cases/definition_list_params.py,sha256=8lVZQPafxHSAULib1RcjRJh82POL9zKKHMHn2r_l31I,335
128
126
  payi/types/use_cases/definition_update_params.py,sha256=nRhHHVUvEFYr_dtAESZcyxZNU7qpKLF7VajgNZ9FIx8,353
129
127
  payi/types/use_cases/kpi_list_params.py,sha256=lx8rGm1Ri9Qn7EsIhwb07-HLHbV1BWc904sJkmPhodI,316
130
128
  payi/types/use_cases/kpi_list_response.py,sha256=6REE5-V5j2dxAOX6ShDpXTGvYAT6xIl4X1WBAx0apSY,561
131
- payi/types/use_cases/kpi_update_params.py,sha256=c9La5HaxdtQAYt228ZutuXUJ0UbTp8cxVGIQgx_o8Os,302
132
- payi/types/use_cases/property_create_response.py,sha256=4NjhkvCHwX9uh0370NN_J06lrW8VlHmtVkuMdR5Xbkc,327
129
+ payi/types/use_cases/kpi_update_params.py,sha256=TZvwDtS5VtngTnAR0bPPVoy8UD3YxjCVl5CEthPoYqc,346
133
130
  payi/types/use_cases/property_update_params.py,sha256=Um7m9FvIFJXkqIBH3ZMqMLSRnZZkNqA9AUHL8S3Pmo8,328
134
131
  payi/types/use_cases/use_case_definition.py,sha256=R2DMV9t1EZ4pStQhZSul8SFCyfqqQuAUoevlkFOg2Mc,579
135
132
  payi/types/use_cases/definitions/__init__.py,sha256=xro0oPNhbIPOYx-6fvAINvaHL0kaCUMbALzrZmLeuwA,766
136
- payi/types/use_cases/definitions/kpi_create_params.py,sha256=Hvs8nGLXHmAAZLy5RDKstGWX7UTr2WrfcQB-8cqv45M,427
133
+ payi/types/use_cases/definitions/kpi_create_params.py,sha256=09jkxFxXJzguEJ3MxCwaa8X5_WcsUCjnWk3al6OJ_vM,447
137
134
  payi/types/use_cases/definitions/kpi_create_response.py,sha256=ykszUJzVkINzHpVUEJCB7rzVKGZN5P3pb9DeHSus2TU,459
138
135
  payi/types/use_cases/definitions/kpi_delete_response.py,sha256=Oy5rTPavC0rwHyEZKp-XyD_WDWZJkHlT-9-KkDLpjAI,459
139
136
  payi/types/use_cases/definitions/kpi_list_params.py,sha256=lx8rGm1Ri9Qn7EsIhwb07-HLHbV1BWc904sJkmPhodI,316
@@ -142,7 +139,7 @@ payi/types/use_cases/definitions/kpi_retrieve_response.py,sha256=uQXliSvS3k-yDYw
142
139
  payi/types/use_cases/definitions/kpi_update_params.py,sha256=jbawdWAdMnsTWVH0qfQGb8W7_TXe3lq4zjSRu44d8p8,373
143
140
  payi/types/use_cases/definitions/kpi_update_response.py,sha256=zLyEoT0S8d7XHsnXZYT8tM7yDw0Aze0Mk-_Z6QeMtc8,459
144
141
  payi/types/use_cases/definitions/limit_config_create_params.py,sha256=pzQza_16N3z8cFNEKr6gPbFvuGFrwNuGxAYb--Kbo2M,449
145
- payi-0.1.0a106.dist-info/METADATA,sha256=J7DZnzArddqBkZ33ikBlgdZjAR_G5Ix7FRORt17YHfc,16290
146
- payi-0.1.0a106.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
147
- payi-0.1.0a106.dist-info/licenses/LICENSE,sha256=CQt03aM-P4a3Yg5qBg3JSLVoQS3smMyvx7tYg_6V7Gk,11334
148
- payi-0.1.0a106.dist-info/RECORD,,
142
+ payi-0.1.0a108.dist-info/METADATA,sha256=Io5cPg1gZrt2k-FbFQ7RshuXv6UL4XJLwk7Pd5KmB4s,16290
143
+ payi-0.1.0a108.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
144
+ payi-0.1.0a108.dist-info/licenses/LICENSE,sha256=CQt03aM-P4a3Yg5qBg3JSLVoQS3smMyvx7tYg_6V7Gk,11334
145
+ payi-0.1.0a108.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing import Optional
4
-
5
- from .._models import BaseModel
6
-
7
- __all__ = ["UseCaseDeleteResponse"]
8
-
9
-
10
- class UseCaseDeleteResponse(BaseModel):
11
- use_case_id: str
12
-
13
- limit_id: Optional[str] = None
14
-
15
- type_version: Optional[int] = None
@@ -1,15 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing import Optional
4
-
5
- from .._models import BaseModel
6
-
7
- __all__ = ["UseCaseRetrieveResponse"]
8
-
9
-
10
- class UseCaseRetrieveResponse(BaseModel):
11
- use_case_id: str
12
-
13
- limit_id: Optional[str] = None
14
-
15
- type_version: Optional[int] = None
@@ -1,15 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing import Optional
4
-
5
- from ..._models import BaseModel
6
-
7
- __all__ = ["PropertyCreateResponse"]
8
-
9
-
10
- class PropertyCreateResponse(BaseModel):
11
- use_case_id: str
12
-
13
- limit_id: Optional[str] = None
14
-
15
- type_version: Optional[int] = None