openmeter 1.0.0b54__py3-none-any.whl → 2.0.0__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 openmeter might be problematic. Click here for more details.

Files changed (132) hide show
  1. openmeter/__init__.py +89 -15
  2. openmeter/_base_client.py +2041 -0
  3. openmeter/_client.py +518 -70
  4. openmeter/_compat.py +221 -0
  5. openmeter/_constants.py +14 -0
  6. openmeter/_exceptions.py +108 -0
  7. openmeter/_files.py +127 -0
  8. openmeter/_models.py +777 -0
  9. openmeter/_qs.py +150 -0
  10. openmeter/_resource.py +43 -0
  11. openmeter/_response.py +820 -0
  12. openmeter/_streaming.py +333 -0
  13. openmeter/_types.py +222 -0
  14. openmeter/_utils/__init__.py +56 -0
  15. openmeter/_utils/_logs.py +25 -0
  16. openmeter/_utils/_proxy.py +63 -0
  17. openmeter/_utils/_reflection.py +42 -0
  18. openmeter/_utils/_streams.py +12 -0
  19. openmeter/_utils/_sync.py +81 -0
  20. openmeter/_utils/_transform.py +387 -0
  21. openmeter/_utils/_typing.py +120 -0
  22. openmeter/_utils/_utils.py +419 -0
  23. openmeter/_version.py +4 -0
  24. openmeter/lib/.keep +4 -0
  25. openmeter/py.typed +0 -1
  26. openmeter/resources/__init__.py +103 -0
  27. openmeter/resources/debug/__init__.py +33 -0
  28. openmeter/resources/debug/debug.py +102 -0
  29. openmeter/resources/debug/metrics.py +146 -0
  30. openmeter/resources/entitlements/__init__.py +47 -0
  31. openmeter/resources/entitlements/entitlements.py +450 -0
  32. openmeter/resources/entitlements/features.py +578 -0
  33. openmeter/resources/entitlements/grants.py +389 -0
  34. openmeter/resources/events.py +442 -0
  35. openmeter/resources/meters/__init__.py +33 -0
  36. openmeter/resources/meters/meters.py +666 -0
  37. openmeter/resources/meters/subjects.py +163 -0
  38. openmeter/resources/notifications/__init__.py +75 -0
  39. openmeter/resources/notifications/channels.py +686 -0
  40. openmeter/resources/notifications/events.py +365 -0
  41. openmeter/resources/notifications/notifications.py +198 -0
  42. openmeter/resources/notifications/rules.py +781 -0
  43. openmeter/resources/notifications/webhook.py +208 -0
  44. openmeter/resources/portal/__init__.py +47 -0
  45. openmeter/resources/portal/meters.py +230 -0
  46. openmeter/resources/portal/portal.py +112 -0
  47. openmeter/resources/portal/tokens.py +359 -0
  48. openmeter/resources/subjects/entitlements/__init__.py +33 -0
  49. openmeter/resources/subjects/entitlements/entitlements.py +1881 -0
  50. openmeter/resources/subjects/entitlements/grants.py +453 -0
  51. openmeter/resources/subjects.py +419 -0
  52. openmeter/types/__init__.py +21 -0
  53. openmeter/types/debug/__init__.py +5 -0
  54. openmeter/types/debug/metric_list_response.py +7 -0
  55. openmeter/types/entitlement.py +238 -0
  56. openmeter/types/entitlements/__init__.py +11 -0
  57. openmeter/types/entitlements/feature.py +61 -0
  58. openmeter/types/entitlements/feature_create_params.py +43 -0
  59. openmeter/types/entitlements/feature_list_params.py +23 -0
  60. openmeter/types/entitlements/grant_list_params.py +57 -0
  61. openmeter/types/entitlements/grant_list_response.py +11 -0
  62. openmeter/types/entitlements/grant_paginated_response.py +24 -0
  63. openmeter/types/entitlements/list_features_result.py +28 -0
  64. openmeter/types/event_ingest_params.py +46 -0
  65. openmeter/types/event_ingest_response.py +43 -0
  66. openmeter/types/event_list_params.py +22 -0
  67. openmeter/types/event_list_response.py +9 -0
  68. openmeter/types/ingested_event.py +59 -0
  69. openmeter/types/list_entitlements_result.py +28 -0
  70. openmeter/types/meter.py +53 -0
  71. openmeter/types/meter_create_params.py +50 -0
  72. openmeter/types/meter_list_response.py +9 -0
  73. openmeter/types/meter_query_params.py +50 -0
  74. openmeter/types/meter_query_result.py +35 -0
  75. openmeter/types/meters/__init__.py +5 -0
  76. openmeter/types/meters/subject_list_response.py +8 -0
  77. openmeter/types/notifications/__init__.py +18 -0
  78. openmeter/types/notifications/channel_create_params.py +34 -0
  79. openmeter/types/notifications/channel_list_params.py +41 -0
  80. openmeter/types/notifications/channel_list_response.py +24 -0
  81. openmeter/types/notifications/channel_update_params.py +34 -0
  82. openmeter/types/notifications/event_list_params.py +61 -0
  83. openmeter/types/notifications/event_list_response.py +24 -0
  84. openmeter/types/notifications/notification_channel.py +47 -0
  85. openmeter/types/notifications/notification_event.py +215 -0
  86. openmeter/types/notifications/notification_rule.py +70 -0
  87. openmeter/types/notifications/rule_create_params.py +39 -0
  88. openmeter/types/notifications/rule_list_params.py +54 -0
  89. openmeter/types/notifications/rule_list_response.py +24 -0
  90. openmeter/types/notifications/rule_update_params.py +39 -0
  91. openmeter/types/notifications/webhook_svix_params.py +26 -0
  92. openmeter/types/portal/__init__.py +10 -0
  93. openmeter/types/portal/meter_query_params.py +44 -0
  94. openmeter/types/portal/portal_token.py +28 -0
  95. openmeter/types/portal/token_create_params.py +17 -0
  96. openmeter/types/portal/token_invalidate_params.py +15 -0
  97. openmeter/types/portal/token_list_params.py +12 -0
  98. openmeter/types/portal/token_list_response.py +9 -0
  99. openmeter/types/shared/__init__.py +3 -0
  100. openmeter/types/subject.py +37 -0
  101. openmeter/types/subject_list_response.py +9 -0
  102. openmeter/types/subject_param.py +27 -0
  103. openmeter/types/subject_upsert_params.py +39 -0
  104. openmeter/types/subject_upsert_response.py +10 -0
  105. openmeter/types/subjects/__init__.py +13 -0
  106. openmeter/types/subjects/entitlement_history_params.py +35 -0
  107. openmeter/types/subjects/entitlement_history_response.py +98 -0
  108. openmeter/types/subjects/entitlement_list_response.py +10 -0
  109. openmeter/types/subjects/entitlements/__init__.py +8 -0
  110. openmeter/types/subjects/entitlements/entitlement_grant.py +103 -0
  111. openmeter/types/subjects/entitlements/grant_list_response.py +10 -0
  112. openmeter-2.0.0.dist-info/METADATA +396 -0
  113. openmeter-2.0.0.dist-info/RECORD +115 -0
  114. {openmeter-1.0.0b54.dist-info → openmeter-2.0.0.dist-info}/WHEEL +1 -1
  115. openmeter-2.0.0.dist-info/licenses/LICENSE +201 -0
  116. openmeter/_configuration.py +0 -36
  117. openmeter/_operations/__init__.py +0 -17
  118. openmeter/_operations/_operations.py +0 -2105
  119. openmeter/_operations/_patch.py +0 -20
  120. openmeter/_patch.py +0 -20
  121. openmeter/_serialization.py +0 -2008
  122. openmeter/_vendor.py +0 -24
  123. openmeter/aio/__init__.py +0 -21
  124. openmeter/aio/_client.py +0 -83
  125. openmeter/aio/_configuration.py +0 -36
  126. openmeter/aio/_operations/__init__.py +0 -17
  127. openmeter/aio/_operations/_operations.py +0 -1778
  128. openmeter/aio/_operations/_patch.py +0 -20
  129. openmeter/aio/_patch.py +0 -20
  130. openmeter/aio/_vendor.py +0 -24
  131. openmeter-1.0.0b54.dist-info/METADATA +0 -92
  132. openmeter-1.0.0b54.dist-info/RECORD +0 -21
@@ -0,0 +1,359 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import List
6
+
7
+ import httpx
8
+
9
+ from ..._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
10
+ from ..._utils import (
11
+ maybe_transform,
12
+ async_maybe_transform,
13
+ )
14
+ from ..._compat import cached_property
15
+ from ..._resource import SyncAPIResource, AsyncAPIResource
16
+ from ..._response import (
17
+ to_raw_response_wrapper,
18
+ to_streamed_response_wrapper,
19
+ async_to_raw_response_wrapper,
20
+ async_to_streamed_response_wrapper,
21
+ )
22
+ from ..._base_client import make_request_options
23
+ from ...types.portal import token_list_params, token_create_params, token_invalidate_params
24
+ from ...types.portal.portal_token import PortalToken
25
+ from ...types.portal.token_list_response import TokenListResponse
26
+
27
+ __all__ = ["TokensResource", "AsyncTokensResource"]
28
+
29
+
30
+ class TokensResource(SyncAPIResource):
31
+ @cached_property
32
+ def with_raw_response(self) -> TokensResourceWithRawResponse:
33
+ return TokensResourceWithRawResponse(self)
34
+
35
+ @cached_property
36
+ def with_streaming_response(self) -> TokensResourceWithStreamingResponse:
37
+ return TokensResourceWithStreamingResponse(self)
38
+
39
+ def create(
40
+ self,
41
+ *,
42
+ subject: str,
43
+ allowed_meter_slugs: List[str] | NotGiven = NOT_GIVEN,
44
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
45
+ # The extra values given here take precedence over values defined on the client or passed to this method.
46
+ extra_headers: Headers | None = None,
47
+ extra_query: Query | None = None,
48
+ extra_body: Body | None = None,
49
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
50
+ ) -> PortalToken:
51
+ """
52
+ Create a consumer portal token.
53
+
54
+ Args:
55
+ allowed_meter_slugs: Optional, if defined only the specified meters will be allowed
56
+
57
+ extra_headers: Send extra headers
58
+
59
+ extra_query: Add additional query parameters to the request
60
+
61
+ extra_body: Add additional JSON properties to the request
62
+
63
+ timeout: Override the client-level default timeout for this request, in seconds
64
+ """
65
+ return self._post(
66
+ "/api/v1/portal/tokens",
67
+ body=maybe_transform(
68
+ {
69
+ "subject": subject,
70
+ "allowed_meter_slugs": allowed_meter_slugs,
71
+ },
72
+ token_create_params.TokenCreateParams,
73
+ ),
74
+ options=make_request_options(
75
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
76
+ ),
77
+ cast_to=PortalToken,
78
+ )
79
+
80
+ def list(
81
+ self,
82
+ *,
83
+ limit: int | NotGiven = NOT_GIVEN,
84
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
85
+ # The extra values given here take precedence over values defined on the client or passed to this method.
86
+ extra_headers: Headers | None = None,
87
+ extra_query: Query | None = None,
88
+ extra_body: Body | None = None,
89
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
90
+ ) -> TokenListResponse:
91
+ """
92
+ _Available in OpenMeter Cloud._
93
+
94
+ List consumer portal tokens.
95
+
96
+ Args:
97
+ limit: Number of portal tokens to return. Default is 25.
98
+
99
+ extra_headers: Send extra headers
100
+
101
+ extra_query: Add additional query parameters to the request
102
+
103
+ extra_body: Add additional JSON properties to the request
104
+
105
+ timeout: Override the client-level default timeout for this request, in seconds
106
+ """
107
+ return self._get(
108
+ "/api/v1/portal/tokens",
109
+ options=make_request_options(
110
+ extra_headers=extra_headers,
111
+ extra_query=extra_query,
112
+ extra_body=extra_body,
113
+ timeout=timeout,
114
+ query=maybe_transform({"limit": limit}, token_list_params.TokenListParams),
115
+ ),
116
+ cast_to=TokenListResponse,
117
+ )
118
+
119
+ def invalidate(
120
+ self,
121
+ *,
122
+ id: str | NotGiven = NOT_GIVEN,
123
+ subject: str | NotGiven = NOT_GIVEN,
124
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
125
+ # The extra values given here take precedence over values defined on the client or passed to this method.
126
+ extra_headers: Headers | None = None,
127
+ extra_query: Query | None = None,
128
+ extra_body: Body | None = None,
129
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
130
+ ) -> None:
131
+ """
132
+ _Available in OpenMeter Cloud._
133
+
134
+ Invalidates consumer portal tokens by ID or subject.
135
+
136
+ Args:
137
+ id: Invalidate a portal token by ID.
138
+
139
+ subject: Invalidate all portal tokens for a subject.
140
+
141
+ extra_headers: Send extra headers
142
+
143
+ extra_query: Add additional query parameters to the request
144
+
145
+ extra_body: Add additional JSON properties to the request
146
+
147
+ timeout: Override the client-level default timeout for this request, in seconds
148
+ """
149
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
150
+ return self._post(
151
+ "/api/v1/portal/tokens/invalidate",
152
+ body=maybe_transform(
153
+ {
154
+ "id": id,
155
+ "subject": subject,
156
+ },
157
+ token_invalidate_params.TokenInvalidateParams,
158
+ ),
159
+ options=make_request_options(
160
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
161
+ ),
162
+ cast_to=NoneType,
163
+ )
164
+
165
+
166
+ class AsyncTokensResource(AsyncAPIResource):
167
+ @cached_property
168
+ def with_raw_response(self) -> AsyncTokensResourceWithRawResponse:
169
+ return AsyncTokensResourceWithRawResponse(self)
170
+
171
+ @cached_property
172
+ def with_streaming_response(self) -> AsyncTokensResourceWithStreamingResponse:
173
+ return AsyncTokensResourceWithStreamingResponse(self)
174
+
175
+ async def create(
176
+ self,
177
+ *,
178
+ subject: str,
179
+ allowed_meter_slugs: List[str] | NotGiven = NOT_GIVEN,
180
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
181
+ # The extra values given here take precedence over values defined on the client or passed to this method.
182
+ extra_headers: Headers | None = None,
183
+ extra_query: Query | None = None,
184
+ extra_body: Body | None = None,
185
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
186
+ ) -> PortalToken:
187
+ """
188
+ Create a consumer portal token.
189
+
190
+ Args:
191
+ allowed_meter_slugs: Optional, if defined only the specified meters will be allowed
192
+
193
+ extra_headers: Send extra headers
194
+
195
+ extra_query: Add additional query parameters to the request
196
+
197
+ extra_body: Add additional JSON properties to the request
198
+
199
+ timeout: Override the client-level default timeout for this request, in seconds
200
+ """
201
+ return await self._post(
202
+ "/api/v1/portal/tokens",
203
+ body=await async_maybe_transform(
204
+ {
205
+ "subject": subject,
206
+ "allowed_meter_slugs": allowed_meter_slugs,
207
+ },
208
+ token_create_params.TokenCreateParams,
209
+ ),
210
+ options=make_request_options(
211
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
212
+ ),
213
+ cast_to=PortalToken,
214
+ )
215
+
216
+ async def list(
217
+ self,
218
+ *,
219
+ limit: int | NotGiven = NOT_GIVEN,
220
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
221
+ # The extra values given here take precedence over values defined on the client or passed to this method.
222
+ extra_headers: Headers | None = None,
223
+ extra_query: Query | None = None,
224
+ extra_body: Body | None = None,
225
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
226
+ ) -> TokenListResponse:
227
+ """
228
+ _Available in OpenMeter Cloud._
229
+
230
+ List consumer portal tokens.
231
+
232
+ Args:
233
+ limit: Number of portal tokens to return. Default is 25.
234
+
235
+ extra_headers: Send extra headers
236
+
237
+ extra_query: Add additional query parameters to the request
238
+
239
+ extra_body: Add additional JSON properties to the request
240
+
241
+ timeout: Override the client-level default timeout for this request, in seconds
242
+ """
243
+ return await self._get(
244
+ "/api/v1/portal/tokens",
245
+ options=make_request_options(
246
+ extra_headers=extra_headers,
247
+ extra_query=extra_query,
248
+ extra_body=extra_body,
249
+ timeout=timeout,
250
+ query=await async_maybe_transform({"limit": limit}, token_list_params.TokenListParams),
251
+ ),
252
+ cast_to=TokenListResponse,
253
+ )
254
+
255
+ async def invalidate(
256
+ self,
257
+ *,
258
+ id: str | NotGiven = NOT_GIVEN,
259
+ subject: str | NotGiven = NOT_GIVEN,
260
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
261
+ # The extra values given here take precedence over values defined on the client or passed to this method.
262
+ extra_headers: Headers | None = None,
263
+ extra_query: Query | None = None,
264
+ extra_body: Body | None = None,
265
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
266
+ ) -> None:
267
+ """
268
+ _Available in OpenMeter Cloud._
269
+
270
+ Invalidates consumer portal tokens by ID or subject.
271
+
272
+ Args:
273
+ id: Invalidate a portal token by ID.
274
+
275
+ subject: Invalidate all portal tokens for a subject.
276
+
277
+ extra_headers: Send extra headers
278
+
279
+ extra_query: Add additional query parameters to the request
280
+
281
+ extra_body: Add additional JSON properties to the request
282
+
283
+ timeout: Override the client-level default timeout for this request, in seconds
284
+ """
285
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
286
+ return await self._post(
287
+ "/api/v1/portal/tokens/invalidate",
288
+ body=await async_maybe_transform(
289
+ {
290
+ "id": id,
291
+ "subject": subject,
292
+ },
293
+ token_invalidate_params.TokenInvalidateParams,
294
+ ),
295
+ options=make_request_options(
296
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
297
+ ),
298
+ cast_to=NoneType,
299
+ )
300
+
301
+
302
+ class TokensResourceWithRawResponse:
303
+ def __init__(self, tokens: TokensResource) -> None:
304
+ self._tokens = tokens
305
+
306
+ self.create = to_raw_response_wrapper(
307
+ tokens.create,
308
+ )
309
+ self.list = to_raw_response_wrapper(
310
+ tokens.list,
311
+ )
312
+ self.invalidate = to_raw_response_wrapper(
313
+ tokens.invalidate,
314
+ )
315
+
316
+
317
+ class AsyncTokensResourceWithRawResponse:
318
+ def __init__(self, tokens: AsyncTokensResource) -> None:
319
+ self._tokens = tokens
320
+
321
+ self.create = async_to_raw_response_wrapper(
322
+ tokens.create,
323
+ )
324
+ self.list = async_to_raw_response_wrapper(
325
+ tokens.list,
326
+ )
327
+ self.invalidate = async_to_raw_response_wrapper(
328
+ tokens.invalidate,
329
+ )
330
+
331
+
332
+ class TokensResourceWithStreamingResponse:
333
+ def __init__(self, tokens: TokensResource) -> None:
334
+ self._tokens = tokens
335
+
336
+ self.create = to_streamed_response_wrapper(
337
+ tokens.create,
338
+ )
339
+ self.list = to_streamed_response_wrapper(
340
+ tokens.list,
341
+ )
342
+ self.invalidate = to_streamed_response_wrapper(
343
+ tokens.invalidate,
344
+ )
345
+
346
+
347
+ class AsyncTokensResourceWithStreamingResponse:
348
+ def __init__(self, tokens: AsyncTokensResource) -> None:
349
+ self._tokens = tokens
350
+
351
+ self.create = async_to_streamed_response_wrapper(
352
+ tokens.create,
353
+ )
354
+ self.list = async_to_streamed_response_wrapper(
355
+ tokens.list,
356
+ )
357
+ self.invalidate = async_to_streamed_response_wrapper(
358
+ tokens.invalidate,
359
+ )
@@ -0,0 +1,33 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from .grants import (
4
+ GrantsResource,
5
+ AsyncGrantsResource,
6
+ GrantsResourceWithRawResponse,
7
+ AsyncGrantsResourceWithRawResponse,
8
+ GrantsResourceWithStreamingResponse,
9
+ AsyncGrantsResourceWithStreamingResponse,
10
+ )
11
+ from .entitlements import (
12
+ EntitlementsResource,
13
+ AsyncEntitlementsResource,
14
+ EntitlementsResourceWithRawResponse,
15
+ AsyncEntitlementsResourceWithRawResponse,
16
+ EntitlementsResourceWithStreamingResponse,
17
+ AsyncEntitlementsResourceWithStreamingResponse,
18
+ )
19
+
20
+ __all__ = [
21
+ "GrantsResource",
22
+ "AsyncGrantsResource",
23
+ "GrantsResourceWithRawResponse",
24
+ "AsyncGrantsResourceWithRawResponse",
25
+ "GrantsResourceWithStreamingResponse",
26
+ "AsyncGrantsResourceWithStreamingResponse",
27
+ "EntitlementsResource",
28
+ "AsyncEntitlementsResource",
29
+ "EntitlementsResourceWithRawResponse",
30
+ "AsyncEntitlementsResourceWithRawResponse",
31
+ "EntitlementsResourceWithStreamingResponse",
32
+ "AsyncEntitlementsResourceWithStreamingResponse",
33
+ ]