lark-billing 0.0.6__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 lark-billing might be problematic. Click here for more details.

Files changed (167) hide show
  1. lark/__init__.py +522 -0
  2. lark/checkout/__init__.py +4 -0
  3. lark/checkout/client.py +214 -0
  4. lark/checkout/raw_client.py +252 -0
  5. lark/client.py +240 -0
  6. lark/core/__init__.py +105 -0
  7. lark/core/api_error.py +23 -0
  8. lark/core/client_wrapper.py +79 -0
  9. lark/core/datetime_utils.py +28 -0
  10. lark/core/file.py +67 -0
  11. lark/core/force_multipart.py +18 -0
  12. lark/core/http_client.py +543 -0
  13. lark/core/http_response.py +55 -0
  14. lark/core/jsonable_encoder.py +100 -0
  15. lark/core/pydantic_utilities.py +258 -0
  16. lark/core/query_encoder.py +58 -0
  17. lark/core/remove_none_from_dict.py +11 -0
  18. lark/core/request_options.py +35 -0
  19. lark/core/serialization.py +276 -0
  20. lark/errors/__init__.py +34 -0
  21. lark/errors/unprocessable_entity_error.py +11 -0
  22. lark/feature_access/__init__.py +4 -0
  23. lark/feature_access/client.py +102 -0
  24. lark/feature_access/raw_client.py +113 -0
  25. lark/py.typed +0 -0
  26. lark/rate_cards/__init__.py +61 -0
  27. lark/rate_cards/client.py +817 -0
  28. lark/rate_cards/raw_client.py +728 -0
  29. lark/rate_cards/types/__init__.py +63 -0
  30. lark/rate_cards/types/create_rate_card_request_billing_interval.py +5 -0
  31. lark/rate_cards/types/create_rate_card_request_usage_based_rates_item.py +56 -0
  32. lark/rate_cards/types/create_rate_card_version_request_usage_based_rates_item.py +58 -0
  33. lark/rate_cards/types/create_rate_card_version_request_version_type.py +5 -0
  34. lark/subjects/__init__.py +4 -0
  35. lark/subjects/client.py +501 -0
  36. lark/subjects/raw_client.py +633 -0
  37. lark/subscriptions/__init__.py +4 -0
  38. lark/subscriptions/client.py +462 -0
  39. lark/subscriptions/raw_client.py +495 -0
  40. lark/types/__init__.py +493 -0
  41. lark/types/aggregation.py +80 -0
  42. lark/types/amount.py +20 -0
  43. lark/types/check_feature_access_request.py +24 -0
  44. lark/types/check_feature_access_response.py +21 -0
  45. lark/types/complete_subscription_checkout_response.py +21 -0
  46. lark/types/count_aggregation_pricing_metric_interface.py +17 -0
  47. lark/types/create_credit_grant_interface.py +27 -0
  48. lark/types/create_credit_grant_interface_expiration.py +27 -0
  49. lark/types/create_credit_pool_request.py +5 -0
  50. lark/types/create_dimension_coordinate_interface.py +20 -0
  51. lark/types/create_dimension_interface.py +20 -0
  52. lark/types/create_dimensional_usage_based_rate_interface.py +32 -0
  53. lark/types/create_fixed_rate_interface.py +28 -0
  54. lark/types/create_pricing_matrix_cell_interface.py +22 -0
  55. lark/types/create_pricing_matrix_interface.py +20 -0
  56. lark/types/create_pricing_metric_interface.py +26 -0
  57. lark/types/create_pricing_plan_request.py +5 -0
  58. lark/types/create_rate_card_response.py +36 -0
  59. lark/types/create_rate_card_response_billing_interval.py +5 -0
  60. lark/types/create_rate_card_response_usage_based_rates_item.py +58 -0
  61. lark/types/create_rate_card_version_response.py +36 -0
  62. lark/types/create_rate_card_version_response_billing_interval.py +5 -0
  63. lark/types/create_rate_card_version_response_usage_based_rates_item.py +59 -0
  64. lark/types/create_simple_usage_based_rate_interface.py +30 -0
  65. lark/types/create_subject_response.py +24 -0
  66. lark/types/create_subscription_checkout_session_response.py +23 -0
  67. lark/types/create_usage_event_summary_response.py +23 -0
  68. lark/types/credit_grant.py +5 -0
  69. lark/types/credit_grant_date_time_expiration_interface.py +19 -0
  70. lark/types/credit_grant_date_time_expiration_resource.py +19 -0
  71. lark/types/credit_grant_duration_expiration_interface.py +21 -0
  72. lark/types/credit_grant_duration_expiration_resource.py +21 -0
  73. lark/types/credit_grant_interface.py +28 -0
  74. lark/types/credit_grant_interface_input_expiration.py +27 -0
  75. lark/types/credit_grant_interface_output_expiration.py +43 -0
  76. lark/types/credit_grant_interface_output_schedule.py +41 -0
  77. lark/types/credit_grant_resource.py +28 -0
  78. lark/types/credit_grant_resource_input_expiration.py +27 -0
  79. lark/types/credit_grant_resource_input_schedule.py +39 -0
  80. lark/types/credit_grant_resource_output_expiration.py +43 -0
  81. lark/types/credit_grant_resource_output_schedule.py +39 -0
  82. lark/types/credit_grant_schedule.py +5 -0
  83. lark/types/credit_grant_schedule_one_time_interface.py +19 -0
  84. lark/types/credit_grant_schedule_one_time_resource.py +17 -0
  85. lark/types/credit_grant_schedule_rate_cycle_start_interface.py +19 -0
  86. lark/types/credit_grant_schedule_rate_cycle_start_resource.py +17 -0
  87. lark/types/credit_grant_subject_granting_config_interface.py +20 -0
  88. lark/types/credit_pool.py +5 -0
  89. lark/types/credit_pool_rollover_config.py +5 -0
  90. lark/types/custom_aggregation_pricing_metric_interface.py +22 -0
  91. lark/types/custom_pricing_metric.py +5 -0
  92. lark/types/custom_unit.py +5 -0
  93. lark/types/custom_unit_amount.py +5 -0
  94. lark/types/dimension.py +5 -0
  95. lark/types/dimension_coordinate.py +5 -0
  96. lark/types/dimension_coordinate_interface.py +20 -0
  97. lark/types/dimension_coordinate_set.py +5 -0
  98. lark/types/dimension_interface.py +20 -0
  99. lark/types/dimensional_rate_matrix.py +5 -0
  100. lark/types/dimensional_rate_matrix_cell.py +5 -0
  101. lark/types/dimensional_usage_based_rate.py +5 -0
  102. lark/types/dimensional_usage_based_rate_input.py +5 -0
  103. lark/types/dimensional_usage_based_rate_interface.py +33 -0
  104. lark/types/feature_access_resource.py +21 -0
  105. lark/types/fixed_rate_interface.py +29 -0
  106. lark/types/flat_price.py +24 -0
  107. lark/types/get_rate_card_response.py +36 -0
  108. lark/types/get_rate_card_response_billing_interval.py +5 -0
  109. lark/types/get_rate_card_response_usage_based_rates_item.py +58 -0
  110. lark/types/grant_credits_request.py +5 -0
  111. lark/types/http_validation_error.py +20 -0
  112. lark/types/last_aggregation_pricing_metric_interface.py +22 -0
  113. lark/types/license_based_rate.py +5 -0
  114. lark/types/license_based_rate_input.py +5 -0
  115. lark/types/list_rate_cards_response.py +21 -0
  116. lark/types/list_subjects_response.py +21 -0
  117. lark/types/list_subscriptions_response.py +21 -0
  118. lark/types/max_aggregation_pricing_metric_interface.py +22 -0
  119. lark/types/monetary_amount.py +5 -0
  120. lark/types/package_price.py +27 -0
  121. lark/types/package_price_rounding_behavior.py +5 -0
  122. lark/types/package_price_wrapper.py +5 -0
  123. lark/types/period.py +22 -0
  124. lark/types/price.py +5 -0
  125. lark/types/pricing_matrix_cell_interface.py +22 -0
  126. lark/types/pricing_matrix_interface.py +20 -0
  127. lark/types/pricing_metric.py +5 -0
  128. lark/types/pricing_metric_interface.py +27 -0
  129. lark/types/pricing_plan.py +5 -0
  130. lark/types/pricing_plan_subscription.py +5 -0
  131. lark/types/pricing_tier.py +5 -0
  132. lark/types/rate_card.py +5 -0
  133. lark/types/rate_card_resource.py +36 -0
  134. lark/types/rate_card_resource_billing_interval.py +5 -0
  135. lark/types/rate_card_resource_usage_based_rates_item.py +58 -0
  136. lark/types/rate_card_version.py +5 -0
  137. lark/types/rate_card_version_input.py +5 -0
  138. lark/types/simple_usage_based_rate.py +5 -0
  139. lark/types/simple_usage_based_rate_input.py +5 -0
  140. lark/types/simple_usage_based_rate_interface.py +31 -0
  141. lark/types/status.py +5 -0
  142. lark/types/subject.py +5 -0
  143. lark/types/subject_granting_config.py +5 -0
  144. lark/types/subject_granting_config_resource.py +20 -0
  145. lark/types/subject_resource.py +24 -0
  146. lark/types/subscription_resource.py +28 -0
  147. lark/types/sum_aggregation_pricing_metric_interface.py +22 -0
  148. lark/types/tiered_price.py +5 -0
  149. lark/types/tiered_price_wrapper.py +5 -0
  150. lark/types/unit.py +5 -0
  151. lark/types/update_pricing_plan_request.py +5 -0
  152. lark/types/update_rate_card_request.py +5 -0
  153. lark/types/update_subscription_request.py +5 -0
  154. lark/types/usage_based_rate.py +5 -0
  155. lark/types/usage_based_rate_input.py +5 -0
  156. lark/types/usage_unit.py +5 -0
  157. lark/types/validation_error.py +22 -0
  158. lark/types/validation_error_loc_item.py +5 -0
  159. lark/usage_events/__init__.py +34 -0
  160. lark/usage_events/client.py +293 -0
  161. lark/usage_events/raw_client.py +318 -0
  162. lark/usage_events/types/__init__.py +36 -0
  163. lark/usage_events/types/create_usage_event_summary_request_aggregation_type.py +5 -0
  164. lark/version.py +3 -0
  165. lark_billing-0.0.6.dist-info/METADATA +188 -0
  166. lark_billing-0.0.6.dist-info/RECORD +167 -0
  167. lark_billing-0.0.6.dist-info/WHEEL +4 -0
@@ -0,0 +1,728 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from ..core.api_error import ApiError
7
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ..core.http_response import AsyncHttpResponse, HttpResponse
9
+ from ..core.jsonable_encoder import jsonable_encoder
10
+ from ..core.pydantic_utilities import parse_obj_as
11
+ from ..core.request_options import RequestOptions
12
+ from ..core.serialization import convert_and_respect_annotation_metadata
13
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
14
+ from ..types.create_credit_grant_interface import CreateCreditGrantInterface
15
+ from ..types.create_fixed_rate_interface import CreateFixedRateInterface
16
+ from ..types.create_rate_card_response import CreateRateCardResponse
17
+ from ..types.create_rate_card_version_response import CreateRateCardVersionResponse
18
+ from ..types.credit_grant_resource import CreditGrantResource
19
+ from ..types.feature_access_resource import FeatureAccessResource
20
+ from ..types.fixed_rate_interface import FixedRateInterface
21
+ from ..types.get_rate_card_response import GetRateCardResponse
22
+ from ..types.http_validation_error import HttpValidationError
23
+ from ..types.list_rate_cards_response import ListRateCardsResponse
24
+ from .types.create_rate_card_request_billing_interval import CreateRateCardRequestBillingInterval
25
+ from .types.create_rate_card_request_usage_based_rates_item import CreateRateCardRequestUsageBasedRatesItem
26
+ from .types.create_rate_card_version_request_usage_based_rates_item import (
27
+ CreateRateCardVersionRequestUsageBasedRatesItem,
28
+ )
29
+ from .types.create_rate_card_version_request_version_type import CreateRateCardVersionRequestVersionType
30
+
31
+ # this is used as the default value for optional parameters
32
+ OMIT = typing.cast(typing.Any, ...)
33
+
34
+
35
+ class RawRateCardsClient:
36
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
37
+ self._client_wrapper = client_wrapper
38
+
39
+ def list_rate_cards(
40
+ self,
41
+ *,
42
+ limit: typing.Optional[int] = None,
43
+ offset: typing.Optional[int] = None,
44
+ request_options: typing.Optional[RequestOptions] = None,
45
+ ) -> HttpResponse[ListRateCardsResponse]:
46
+ """
47
+ Parameters
48
+ ----------
49
+ limit : typing.Optional[int]
50
+
51
+ offset : typing.Optional[int]
52
+
53
+ request_options : typing.Optional[RequestOptions]
54
+ Request-specific configuration.
55
+
56
+ Returns
57
+ -------
58
+ HttpResponse[ListRateCardsResponse]
59
+ Successful Response
60
+ """
61
+ _response = self._client_wrapper.httpx_client.request(
62
+ "rate-cards",
63
+ method="GET",
64
+ params={
65
+ "limit": limit,
66
+ "offset": offset,
67
+ },
68
+ request_options=request_options,
69
+ )
70
+ try:
71
+ if 200 <= _response.status_code < 300:
72
+ _data = typing.cast(
73
+ ListRateCardsResponse,
74
+ parse_obj_as(
75
+ type_=ListRateCardsResponse, # type: ignore
76
+ object_=_response.json(),
77
+ ),
78
+ )
79
+ return HttpResponse(response=_response, data=_data)
80
+ if _response.status_code == 422:
81
+ raise UnprocessableEntityError(
82
+ headers=dict(_response.headers),
83
+ body=typing.cast(
84
+ HttpValidationError,
85
+ parse_obj_as(
86
+ type_=HttpValidationError, # type: ignore
87
+ object_=_response.json(),
88
+ ),
89
+ ),
90
+ )
91
+ _response_json = _response.json()
92
+ except JSONDecodeError:
93
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
94
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
95
+
96
+ def create_rate_card(
97
+ self,
98
+ *,
99
+ name: str,
100
+ description: str,
101
+ usage_based_rates: typing.Sequence[CreateRateCardRequestUsageBasedRatesItem],
102
+ billing_interval: CreateRateCardRequestBillingInterval,
103
+ fixed_rates: typing.Optional[typing.Sequence[CreateFixedRateInterface]] = OMIT,
104
+ credit_grants: typing.Optional[typing.Sequence[CreateCreditGrantInterface]] = OMIT,
105
+ feature_access: typing.Optional[typing.Sequence[FeatureAccessResource]] = OMIT,
106
+ metadata: typing.Optional[typing.Dict[str, str]] = OMIT,
107
+ request_options: typing.Optional[RequestOptions] = None,
108
+ ) -> HttpResponse[CreateRateCardResponse]:
109
+ """
110
+ Parameters
111
+ ----------
112
+ name : str
113
+
114
+ description : str
115
+
116
+ usage_based_rates : typing.Sequence[CreateRateCardRequestUsageBasedRatesItem]
117
+
118
+ billing_interval : CreateRateCardRequestBillingInterval
119
+
120
+ fixed_rates : typing.Optional[typing.Sequence[CreateFixedRateInterface]]
121
+
122
+ credit_grants : typing.Optional[typing.Sequence[CreateCreditGrantInterface]]
123
+
124
+ feature_access : typing.Optional[typing.Sequence[FeatureAccessResource]]
125
+
126
+ metadata : typing.Optional[typing.Dict[str, str]]
127
+
128
+ request_options : typing.Optional[RequestOptions]
129
+ Request-specific configuration.
130
+
131
+ Returns
132
+ -------
133
+ HttpResponse[CreateRateCardResponse]
134
+ Successful Response
135
+ """
136
+ _response = self._client_wrapper.httpx_client.request(
137
+ "rate-cards",
138
+ method="POST",
139
+ json={
140
+ "name": name,
141
+ "description": description,
142
+ "usage_based_rates": convert_and_respect_annotation_metadata(
143
+ object_=usage_based_rates,
144
+ annotation=typing.Sequence[CreateRateCardRequestUsageBasedRatesItem],
145
+ direction="write",
146
+ ),
147
+ "fixed_rates": convert_and_respect_annotation_metadata(
148
+ object_=fixed_rates, annotation=typing.Sequence[CreateFixedRateInterface], direction="write"
149
+ ),
150
+ "billing_interval": billing_interval,
151
+ "credit_grants": convert_and_respect_annotation_metadata(
152
+ object_=credit_grants, annotation=typing.Sequence[CreateCreditGrantInterface], direction="write"
153
+ ),
154
+ "feature_access": convert_and_respect_annotation_metadata(
155
+ object_=feature_access, annotation=typing.Sequence[FeatureAccessResource], direction="write"
156
+ ),
157
+ "metadata": metadata,
158
+ },
159
+ headers={
160
+ "content-type": "application/json",
161
+ },
162
+ request_options=request_options,
163
+ omit=OMIT,
164
+ )
165
+ try:
166
+ if 200 <= _response.status_code < 300:
167
+ _data = typing.cast(
168
+ CreateRateCardResponse,
169
+ parse_obj_as(
170
+ type_=CreateRateCardResponse, # type: ignore
171
+ object_=_response.json(),
172
+ ),
173
+ )
174
+ return HttpResponse(response=_response, data=_data)
175
+ if _response.status_code == 422:
176
+ raise UnprocessableEntityError(
177
+ headers=dict(_response.headers),
178
+ body=typing.cast(
179
+ HttpValidationError,
180
+ parse_obj_as(
181
+ type_=HttpValidationError, # type: ignore
182
+ object_=_response.json(),
183
+ ),
184
+ ),
185
+ )
186
+ _response_json = _response.json()
187
+ except JSONDecodeError:
188
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
189
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
190
+
191
+ def get_rate_card(
192
+ self, rate_card_id: str, *, request_options: typing.Optional[RequestOptions] = None
193
+ ) -> HttpResponse[GetRateCardResponse]:
194
+ """
195
+ Parameters
196
+ ----------
197
+ rate_card_id : str
198
+
199
+ request_options : typing.Optional[RequestOptions]
200
+ Request-specific configuration.
201
+
202
+ Returns
203
+ -------
204
+ HttpResponse[GetRateCardResponse]
205
+ Successful Response
206
+ """
207
+ _response = self._client_wrapper.httpx_client.request(
208
+ f"rate-cards/{jsonable_encoder(rate_card_id)}",
209
+ method="GET",
210
+ request_options=request_options,
211
+ )
212
+ try:
213
+ if 200 <= _response.status_code < 300:
214
+ _data = typing.cast(
215
+ GetRateCardResponse,
216
+ parse_obj_as(
217
+ type_=GetRateCardResponse, # type: ignore
218
+ object_=_response.json(),
219
+ ),
220
+ )
221
+ return HttpResponse(response=_response, data=_data)
222
+ if _response.status_code == 422:
223
+ raise UnprocessableEntityError(
224
+ headers=dict(_response.headers),
225
+ body=typing.cast(
226
+ HttpValidationError,
227
+ parse_obj_as(
228
+ type_=HttpValidationError, # type: ignore
229
+ object_=_response.json(),
230
+ ),
231
+ ),
232
+ )
233
+ _response_json = _response.json()
234
+ except JSONDecodeError:
235
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
236
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
237
+
238
+ def delete_rate_card(
239
+ self, rate_card_id: str, *, request_options: typing.Optional[RequestOptions] = None
240
+ ) -> HttpResponse[None]:
241
+ """
242
+ Parameters
243
+ ----------
244
+ rate_card_id : str
245
+
246
+ request_options : typing.Optional[RequestOptions]
247
+ Request-specific configuration.
248
+
249
+ Returns
250
+ -------
251
+ HttpResponse[None]
252
+ """
253
+ _response = self._client_wrapper.httpx_client.request(
254
+ f"rate-cards/{jsonable_encoder(rate_card_id)}",
255
+ method="DELETE",
256
+ request_options=request_options,
257
+ )
258
+ try:
259
+ if 200 <= _response.status_code < 300:
260
+ return HttpResponse(response=_response, data=None)
261
+ _response_json = _response.json()
262
+ except JSONDecodeError:
263
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
264
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
265
+
266
+ def update_rate_card(
267
+ self, rate_card_id: str, *, request_options: typing.Optional[RequestOptions] = None
268
+ ) -> HttpResponse[None]:
269
+ """
270
+ Parameters
271
+ ----------
272
+ rate_card_id : str
273
+
274
+ request_options : typing.Optional[RequestOptions]
275
+ Request-specific configuration.
276
+
277
+ Returns
278
+ -------
279
+ HttpResponse[None]
280
+ """
281
+ _response = self._client_wrapper.httpx_client.request(
282
+ f"rate-cards/{jsonable_encoder(rate_card_id)}",
283
+ method="PATCH",
284
+ request_options=request_options,
285
+ )
286
+ try:
287
+ if 200 <= _response.status_code < 300:
288
+ return HttpResponse(response=_response, data=None)
289
+ _response_json = _response.json()
290
+ except JSONDecodeError:
291
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
292
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
293
+
294
+ def create_rate_card_version(
295
+ self,
296
+ rate_card_id: str,
297
+ *,
298
+ name: str,
299
+ description: str,
300
+ usage_based_rates: typing.Sequence[CreateRateCardVersionRequestUsageBasedRatesItem],
301
+ version_type: CreateRateCardVersionRequestVersionType,
302
+ fixed_rates: typing.Optional[typing.Sequence[FixedRateInterface]] = OMIT,
303
+ credit_grants: typing.Optional[typing.Sequence[CreditGrantResource]] = OMIT,
304
+ request_options: typing.Optional[RequestOptions] = None,
305
+ ) -> HttpResponse[CreateRateCardVersionResponse]:
306
+ """
307
+ Parameters
308
+ ----------
309
+ rate_card_id : str
310
+
311
+ name : str
312
+
313
+ description : str
314
+
315
+ usage_based_rates : typing.Sequence[CreateRateCardVersionRequestUsageBasedRatesItem]
316
+
317
+ version_type : CreateRateCardVersionRequestVersionType
318
+
319
+ fixed_rates : typing.Optional[typing.Sequence[FixedRateInterface]]
320
+
321
+ credit_grants : typing.Optional[typing.Sequence[CreditGrantResource]]
322
+
323
+ request_options : typing.Optional[RequestOptions]
324
+ Request-specific configuration.
325
+
326
+ Returns
327
+ -------
328
+ HttpResponse[CreateRateCardVersionResponse]
329
+ Successful Response
330
+ """
331
+ _response = self._client_wrapper.httpx_client.request(
332
+ f"rate-cards/{jsonable_encoder(rate_card_id)}/versions",
333
+ method="POST",
334
+ json={
335
+ "name": name,
336
+ "description": description,
337
+ "usage_based_rates": convert_and_respect_annotation_metadata(
338
+ object_=usage_based_rates,
339
+ annotation=typing.Sequence[CreateRateCardVersionRequestUsageBasedRatesItem],
340
+ direction="write",
341
+ ),
342
+ "fixed_rates": convert_and_respect_annotation_metadata(
343
+ object_=fixed_rates, annotation=typing.Sequence[FixedRateInterface], direction="write"
344
+ ),
345
+ "version_type": version_type,
346
+ "credit_grants": convert_and_respect_annotation_metadata(
347
+ object_=credit_grants, annotation=typing.Sequence[CreditGrantResource], direction="write"
348
+ ),
349
+ },
350
+ headers={
351
+ "content-type": "application/json",
352
+ },
353
+ request_options=request_options,
354
+ omit=OMIT,
355
+ )
356
+ try:
357
+ if 200 <= _response.status_code < 300:
358
+ _data = typing.cast(
359
+ CreateRateCardVersionResponse,
360
+ parse_obj_as(
361
+ type_=CreateRateCardVersionResponse, # type: ignore
362
+ object_=_response.json(),
363
+ ),
364
+ )
365
+ return HttpResponse(response=_response, data=_data)
366
+ if _response.status_code == 422:
367
+ raise UnprocessableEntityError(
368
+ headers=dict(_response.headers),
369
+ body=typing.cast(
370
+ HttpValidationError,
371
+ parse_obj_as(
372
+ type_=HttpValidationError, # type: ignore
373
+ object_=_response.json(),
374
+ ),
375
+ ),
376
+ )
377
+ _response_json = _response.json()
378
+ except JSONDecodeError:
379
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
380
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
381
+
382
+
383
+ class AsyncRawRateCardsClient:
384
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
385
+ self._client_wrapper = client_wrapper
386
+
387
+ async def list_rate_cards(
388
+ self,
389
+ *,
390
+ limit: typing.Optional[int] = None,
391
+ offset: typing.Optional[int] = None,
392
+ request_options: typing.Optional[RequestOptions] = None,
393
+ ) -> AsyncHttpResponse[ListRateCardsResponse]:
394
+ """
395
+ Parameters
396
+ ----------
397
+ limit : typing.Optional[int]
398
+
399
+ offset : typing.Optional[int]
400
+
401
+ request_options : typing.Optional[RequestOptions]
402
+ Request-specific configuration.
403
+
404
+ Returns
405
+ -------
406
+ AsyncHttpResponse[ListRateCardsResponse]
407
+ Successful Response
408
+ """
409
+ _response = await self._client_wrapper.httpx_client.request(
410
+ "rate-cards",
411
+ method="GET",
412
+ params={
413
+ "limit": limit,
414
+ "offset": offset,
415
+ },
416
+ request_options=request_options,
417
+ )
418
+ try:
419
+ if 200 <= _response.status_code < 300:
420
+ _data = typing.cast(
421
+ ListRateCardsResponse,
422
+ parse_obj_as(
423
+ type_=ListRateCardsResponse, # type: ignore
424
+ object_=_response.json(),
425
+ ),
426
+ )
427
+ return AsyncHttpResponse(response=_response, data=_data)
428
+ if _response.status_code == 422:
429
+ raise UnprocessableEntityError(
430
+ headers=dict(_response.headers),
431
+ body=typing.cast(
432
+ HttpValidationError,
433
+ parse_obj_as(
434
+ type_=HttpValidationError, # type: ignore
435
+ object_=_response.json(),
436
+ ),
437
+ ),
438
+ )
439
+ _response_json = _response.json()
440
+ except JSONDecodeError:
441
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
442
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
443
+
444
+ async def create_rate_card(
445
+ self,
446
+ *,
447
+ name: str,
448
+ description: str,
449
+ usage_based_rates: typing.Sequence[CreateRateCardRequestUsageBasedRatesItem],
450
+ billing_interval: CreateRateCardRequestBillingInterval,
451
+ fixed_rates: typing.Optional[typing.Sequence[CreateFixedRateInterface]] = OMIT,
452
+ credit_grants: typing.Optional[typing.Sequence[CreateCreditGrantInterface]] = OMIT,
453
+ feature_access: typing.Optional[typing.Sequence[FeatureAccessResource]] = OMIT,
454
+ metadata: typing.Optional[typing.Dict[str, str]] = OMIT,
455
+ request_options: typing.Optional[RequestOptions] = None,
456
+ ) -> AsyncHttpResponse[CreateRateCardResponse]:
457
+ """
458
+ Parameters
459
+ ----------
460
+ name : str
461
+
462
+ description : str
463
+
464
+ usage_based_rates : typing.Sequence[CreateRateCardRequestUsageBasedRatesItem]
465
+
466
+ billing_interval : CreateRateCardRequestBillingInterval
467
+
468
+ fixed_rates : typing.Optional[typing.Sequence[CreateFixedRateInterface]]
469
+
470
+ credit_grants : typing.Optional[typing.Sequence[CreateCreditGrantInterface]]
471
+
472
+ feature_access : typing.Optional[typing.Sequence[FeatureAccessResource]]
473
+
474
+ metadata : typing.Optional[typing.Dict[str, str]]
475
+
476
+ request_options : typing.Optional[RequestOptions]
477
+ Request-specific configuration.
478
+
479
+ Returns
480
+ -------
481
+ AsyncHttpResponse[CreateRateCardResponse]
482
+ Successful Response
483
+ """
484
+ _response = await self._client_wrapper.httpx_client.request(
485
+ "rate-cards",
486
+ method="POST",
487
+ json={
488
+ "name": name,
489
+ "description": description,
490
+ "usage_based_rates": convert_and_respect_annotation_metadata(
491
+ object_=usage_based_rates,
492
+ annotation=typing.Sequence[CreateRateCardRequestUsageBasedRatesItem],
493
+ direction="write",
494
+ ),
495
+ "fixed_rates": convert_and_respect_annotation_metadata(
496
+ object_=fixed_rates, annotation=typing.Sequence[CreateFixedRateInterface], direction="write"
497
+ ),
498
+ "billing_interval": billing_interval,
499
+ "credit_grants": convert_and_respect_annotation_metadata(
500
+ object_=credit_grants, annotation=typing.Sequence[CreateCreditGrantInterface], direction="write"
501
+ ),
502
+ "feature_access": convert_and_respect_annotation_metadata(
503
+ object_=feature_access, annotation=typing.Sequence[FeatureAccessResource], direction="write"
504
+ ),
505
+ "metadata": metadata,
506
+ },
507
+ headers={
508
+ "content-type": "application/json",
509
+ },
510
+ request_options=request_options,
511
+ omit=OMIT,
512
+ )
513
+ try:
514
+ if 200 <= _response.status_code < 300:
515
+ _data = typing.cast(
516
+ CreateRateCardResponse,
517
+ parse_obj_as(
518
+ type_=CreateRateCardResponse, # type: ignore
519
+ object_=_response.json(),
520
+ ),
521
+ )
522
+ return AsyncHttpResponse(response=_response, data=_data)
523
+ if _response.status_code == 422:
524
+ raise UnprocessableEntityError(
525
+ headers=dict(_response.headers),
526
+ body=typing.cast(
527
+ HttpValidationError,
528
+ parse_obj_as(
529
+ type_=HttpValidationError, # type: ignore
530
+ object_=_response.json(),
531
+ ),
532
+ ),
533
+ )
534
+ _response_json = _response.json()
535
+ except JSONDecodeError:
536
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
537
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
538
+
539
+ async def get_rate_card(
540
+ self, rate_card_id: str, *, request_options: typing.Optional[RequestOptions] = None
541
+ ) -> AsyncHttpResponse[GetRateCardResponse]:
542
+ """
543
+ Parameters
544
+ ----------
545
+ rate_card_id : str
546
+
547
+ request_options : typing.Optional[RequestOptions]
548
+ Request-specific configuration.
549
+
550
+ Returns
551
+ -------
552
+ AsyncHttpResponse[GetRateCardResponse]
553
+ Successful Response
554
+ """
555
+ _response = await self._client_wrapper.httpx_client.request(
556
+ f"rate-cards/{jsonable_encoder(rate_card_id)}",
557
+ method="GET",
558
+ request_options=request_options,
559
+ )
560
+ try:
561
+ if 200 <= _response.status_code < 300:
562
+ _data = typing.cast(
563
+ GetRateCardResponse,
564
+ parse_obj_as(
565
+ type_=GetRateCardResponse, # type: ignore
566
+ object_=_response.json(),
567
+ ),
568
+ )
569
+ return AsyncHttpResponse(response=_response, data=_data)
570
+ if _response.status_code == 422:
571
+ raise UnprocessableEntityError(
572
+ headers=dict(_response.headers),
573
+ body=typing.cast(
574
+ HttpValidationError,
575
+ parse_obj_as(
576
+ type_=HttpValidationError, # type: ignore
577
+ object_=_response.json(),
578
+ ),
579
+ ),
580
+ )
581
+ _response_json = _response.json()
582
+ except JSONDecodeError:
583
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
584
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
585
+
586
+ async def delete_rate_card(
587
+ self, rate_card_id: str, *, request_options: typing.Optional[RequestOptions] = None
588
+ ) -> AsyncHttpResponse[None]:
589
+ """
590
+ Parameters
591
+ ----------
592
+ rate_card_id : str
593
+
594
+ request_options : typing.Optional[RequestOptions]
595
+ Request-specific configuration.
596
+
597
+ Returns
598
+ -------
599
+ AsyncHttpResponse[None]
600
+ """
601
+ _response = await self._client_wrapper.httpx_client.request(
602
+ f"rate-cards/{jsonable_encoder(rate_card_id)}",
603
+ method="DELETE",
604
+ request_options=request_options,
605
+ )
606
+ try:
607
+ if 200 <= _response.status_code < 300:
608
+ return AsyncHttpResponse(response=_response, data=None)
609
+ _response_json = _response.json()
610
+ except JSONDecodeError:
611
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
612
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
613
+
614
+ async def update_rate_card(
615
+ self, rate_card_id: str, *, request_options: typing.Optional[RequestOptions] = None
616
+ ) -> AsyncHttpResponse[None]:
617
+ """
618
+ Parameters
619
+ ----------
620
+ rate_card_id : str
621
+
622
+ request_options : typing.Optional[RequestOptions]
623
+ Request-specific configuration.
624
+
625
+ Returns
626
+ -------
627
+ AsyncHttpResponse[None]
628
+ """
629
+ _response = await self._client_wrapper.httpx_client.request(
630
+ f"rate-cards/{jsonable_encoder(rate_card_id)}",
631
+ method="PATCH",
632
+ request_options=request_options,
633
+ )
634
+ try:
635
+ if 200 <= _response.status_code < 300:
636
+ return AsyncHttpResponse(response=_response, data=None)
637
+ _response_json = _response.json()
638
+ except JSONDecodeError:
639
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
640
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
641
+
642
+ async def create_rate_card_version(
643
+ self,
644
+ rate_card_id: str,
645
+ *,
646
+ name: str,
647
+ description: str,
648
+ usage_based_rates: typing.Sequence[CreateRateCardVersionRequestUsageBasedRatesItem],
649
+ version_type: CreateRateCardVersionRequestVersionType,
650
+ fixed_rates: typing.Optional[typing.Sequence[FixedRateInterface]] = OMIT,
651
+ credit_grants: typing.Optional[typing.Sequence[CreditGrantResource]] = OMIT,
652
+ request_options: typing.Optional[RequestOptions] = None,
653
+ ) -> AsyncHttpResponse[CreateRateCardVersionResponse]:
654
+ """
655
+ Parameters
656
+ ----------
657
+ rate_card_id : str
658
+
659
+ name : str
660
+
661
+ description : str
662
+
663
+ usage_based_rates : typing.Sequence[CreateRateCardVersionRequestUsageBasedRatesItem]
664
+
665
+ version_type : CreateRateCardVersionRequestVersionType
666
+
667
+ fixed_rates : typing.Optional[typing.Sequence[FixedRateInterface]]
668
+
669
+ credit_grants : typing.Optional[typing.Sequence[CreditGrantResource]]
670
+
671
+ request_options : typing.Optional[RequestOptions]
672
+ Request-specific configuration.
673
+
674
+ Returns
675
+ -------
676
+ AsyncHttpResponse[CreateRateCardVersionResponse]
677
+ Successful Response
678
+ """
679
+ _response = await self._client_wrapper.httpx_client.request(
680
+ f"rate-cards/{jsonable_encoder(rate_card_id)}/versions",
681
+ method="POST",
682
+ json={
683
+ "name": name,
684
+ "description": description,
685
+ "usage_based_rates": convert_and_respect_annotation_metadata(
686
+ object_=usage_based_rates,
687
+ annotation=typing.Sequence[CreateRateCardVersionRequestUsageBasedRatesItem],
688
+ direction="write",
689
+ ),
690
+ "fixed_rates": convert_and_respect_annotation_metadata(
691
+ object_=fixed_rates, annotation=typing.Sequence[FixedRateInterface], direction="write"
692
+ ),
693
+ "version_type": version_type,
694
+ "credit_grants": convert_and_respect_annotation_metadata(
695
+ object_=credit_grants, annotation=typing.Sequence[CreditGrantResource], direction="write"
696
+ ),
697
+ },
698
+ headers={
699
+ "content-type": "application/json",
700
+ },
701
+ request_options=request_options,
702
+ omit=OMIT,
703
+ )
704
+ try:
705
+ if 200 <= _response.status_code < 300:
706
+ _data = typing.cast(
707
+ CreateRateCardVersionResponse,
708
+ parse_obj_as(
709
+ type_=CreateRateCardVersionResponse, # type: ignore
710
+ object_=_response.json(),
711
+ ),
712
+ )
713
+ return AsyncHttpResponse(response=_response, data=_data)
714
+ if _response.status_code == 422:
715
+ raise UnprocessableEntityError(
716
+ headers=dict(_response.headers),
717
+ body=typing.cast(
718
+ HttpValidationError,
719
+ parse_obj_as(
720
+ type_=HttpValidationError, # type: ignore
721
+ object_=_response.json(),
722
+ ),
723
+ ),
724
+ )
725
+ _response_json = _response.json()
726
+ except JSONDecodeError:
727
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
728
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)