openmeter 1.0.0b53__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.
- openmeter/__init__.py +89 -15
- openmeter/_base_client.py +2041 -0
- openmeter/_client.py +518 -70
- openmeter/_compat.py +221 -0
- openmeter/_constants.py +14 -0
- openmeter/_exceptions.py +108 -0
- openmeter/_files.py +127 -0
- openmeter/_models.py +777 -0
- openmeter/_qs.py +150 -0
- openmeter/_resource.py +43 -0
- openmeter/_response.py +820 -0
- openmeter/_streaming.py +333 -0
- openmeter/_types.py +222 -0
- openmeter/_utils/__init__.py +56 -0
- openmeter/_utils/_logs.py +25 -0
- openmeter/_utils/_proxy.py +63 -0
- openmeter/_utils/_reflection.py +42 -0
- openmeter/_utils/_streams.py +12 -0
- openmeter/_utils/_sync.py +81 -0
- openmeter/_utils/_transform.py +387 -0
- openmeter/_utils/_typing.py +120 -0
- openmeter/_utils/_utils.py +419 -0
- openmeter/_version.py +4 -0
- openmeter/lib/.keep +4 -0
- openmeter/py.typed +0 -1
- openmeter/resources/__init__.py +103 -0
- openmeter/resources/debug/__init__.py +33 -0
- openmeter/resources/debug/debug.py +102 -0
- openmeter/resources/debug/metrics.py +146 -0
- openmeter/resources/entitlements/__init__.py +47 -0
- openmeter/resources/entitlements/entitlements.py +450 -0
- openmeter/resources/entitlements/features.py +578 -0
- openmeter/resources/entitlements/grants.py +389 -0
- openmeter/resources/events.py +442 -0
- openmeter/resources/meters/__init__.py +33 -0
- openmeter/resources/meters/meters.py +666 -0
- openmeter/resources/meters/subjects.py +163 -0
- openmeter/resources/notifications/__init__.py +75 -0
- openmeter/resources/notifications/channels.py +686 -0
- openmeter/resources/notifications/events.py +365 -0
- openmeter/resources/notifications/notifications.py +198 -0
- openmeter/resources/notifications/rules.py +781 -0
- openmeter/resources/notifications/webhook.py +208 -0
- openmeter/resources/portal/__init__.py +47 -0
- openmeter/resources/portal/meters.py +230 -0
- openmeter/resources/portal/portal.py +112 -0
- openmeter/resources/portal/tokens.py +359 -0
- openmeter/resources/subjects/entitlements/__init__.py +33 -0
- openmeter/resources/subjects/entitlements/entitlements.py +1881 -0
- openmeter/resources/subjects/entitlements/grants.py +453 -0
- openmeter/resources/subjects.py +419 -0
- openmeter/types/__init__.py +21 -0
- openmeter/types/debug/__init__.py +5 -0
- openmeter/types/debug/metric_list_response.py +7 -0
- openmeter/types/entitlement.py +238 -0
- openmeter/types/entitlements/__init__.py +11 -0
- openmeter/types/entitlements/feature.py +61 -0
- openmeter/types/entitlements/feature_create_params.py +43 -0
- openmeter/types/entitlements/feature_list_params.py +23 -0
- openmeter/types/entitlements/grant_list_params.py +57 -0
- openmeter/types/entitlements/grant_list_response.py +11 -0
- openmeter/types/entitlements/grant_paginated_response.py +24 -0
- openmeter/types/entitlements/list_features_result.py +28 -0
- openmeter/types/event_ingest_params.py +46 -0
- openmeter/types/event_ingest_response.py +43 -0
- openmeter/types/event_list_params.py +22 -0
- openmeter/types/event_list_response.py +9 -0
- openmeter/types/ingested_event.py +59 -0
- openmeter/types/list_entitlements_result.py +28 -0
- openmeter/types/meter.py +53 -0
- openmeter/types/meter_create_params.py +50 -0
- openmeter/types/meter_list_response.py +9 -0
- openmeter/types/meter_query_params.py +50 -0
- openmeter/types/meter_query_result.py +35 -0
- openmeter/types/meters/__init__.py +5 -0
- openmeter/types/meters/subject_list_response.py +8 -0
- openmeter/types/notifications/__init__.py +18 -0
- openmeter/types/notifications/channel_create_params.py +34 -0
- openmeter/types/notifications/channel_list_params.py +41 -0
- openmeter/types/notifications/channel_list_response.py +24 -0
- openmeter/types/notifications/channel_update_params.py +34 -0
- openmeter/types/notifications/event_list_params.py +61 -0
- openmeter/types/notifications/event_list_response.py +24 -0
- openmeter/types/notifications/notification_channel.py +47 -0
- openmeter/types/notifications/notification_event.py +215 -0
- openmeter/types/notifications/notification_rule.py +70 -0
- openmeter/types/notifications/rule_create_params.py +39 -0
- openmeter/types/notifications/rule_list_params.py +54 -0
- openmeter/types/notifications/rule_list_response.py +24 -0
- openmeter/types/notifications/rule_update_params.py +39 -0
- openmeter/types/notifications/webhook_svix_params.py +26 -0
- openmeter/types/portal/__init__.py +10 -0
- openmeter/types/portal/meter_query_params.py +44 -0
- openmeter/types/portal/portal_token.py +28 -0
- openmeter/types/portal/token_create_params.py +17 -0
- openmeter/types/portal/token_invalidate_params.py +15 -0
- openmeter/types/portal/token_list_params.py +12 -0
- openmeter/types/portal/token_list_response.py +9 -0
- openmeter/types/shared/__init__.py +3 -0
- openmeter/types/subject.py +37 -0
- openmeter/types/subject_list_response.py +9 -0
- openmeter/types/subject_param.py +27 -0
- openmeter/types/subject_upsert_params.py +39 -0
- openmeter/types/subject_upsert_response.py +10 -0
- openmeter/types/subjects/__init__.py +13 -0
- openmeter/types/subjects/entitlement_history_params.py +35 -0
- openmeter/types/subjects/entitlement_history_response.py +98 -0
- openmeter/types/subjects/entitlement_list_response.py +10 -0
- openmeter/types/subjects/entitlements/__init__.py +8 -0
- openmeter/types/subjects/entitlements/entitlement_grant.py +103 -0
- openmeter/types/subjects/entitlements/grant_list_response.py +10 -0
- openmeter-2.0.0.dist-info/METADATA +396 -0
- openmeter-2.0.0.dist-info/RECORD +115 -0
- {openmeter-1.0.0b53.dist-info → openmeter-2.0.0.dist-info}/WHEEL +1 -1
- openmeter-2.0.0.dist-info/licenses/LICENSE +201 -0
- openmeter/_configuration.py +0 -36
- openmeter/_operations/__init__.py +0 -17
- openmeter/_operations/_operations.py +0 -2098
- openmeter/_operations/_patch.py +0 -20
- openmeter/_patch.py +0 -20
- openmeter/_serialization.py +0 -2008
- openmeter/_vendor.py +0 -24
- openmeter/aio/__init__.py +0 -21
- openmeter/aio/_client.py +0 -83
- openmeter/aio/_configuration.py +0 -36
- openmeter/aio/_operations/__init__.py +0 -17
- openmeter/aio/_operations/_operations.py +0 -1771
- openmeter/aio/_operations/_patch.py +0 -20
- openmeter/aio/_patch.py +0 -20
- openmeter/aio/_vendor.py +0 -24
- openmeter-1.0.0b53.dist-info/METADATA +0 -92
- openmeter-1.0.0b53.dist-info/RECORD +0 -21
|
@@ -0,0 +1,208 @@
|
|
|
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 Dict
|
|
6
|
+
from typing_extensions import Literal
|
|
7
|
+
|
|
8
|
+
import httpx
|
|
9
|
+
|
|
10
|
+
from ..._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
|
|
11
|
+
from ..._utils import (
|
|
12
|
+
maybe_transform,
|
|
13
|
+
async_maybe_transform,
|
|
14
|
+
)
|
|
15
|
+
from ..._compat import cached_property
|
|
16
|
+
from ..._resource import SyncAPIResource, AsyncAPIResource
|
|
17
|
+
from ..._response import (
|
|
18
|
+
to_raw_response_wrapper,
|
|
19
|
+
to_streamed_response_wrapper,
|
|
20
|
+
async_to_raw_response_wrapper,
|
|
21
|
+
async_to_streamed_response_wrapper,
|
|
22
|
+
)
|
|
23
|
+
from ..._base_client import make_request_options
|
|
24
|
+
from ...types.notifications import webhook_svix_params
|
|
25
|
+
|
|
26
|
+
__all__ = ["WebhookResource", "AsyncWebhookResource"]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class WebhookResource(SyncAPIResource):
|
|
30
|
+
@cached_property
|
|
31
|
+
def with_raw_response(self) -> WebhookResourceWithRawResponse:
|
|
32
|
+
"""
|
|
33
|
+
This property can be used as a prefix for any HTTP method call to return the
|
|
34
|
+
the raw response object instead of the parsed content.
|
|
35
|
+
|
|
36
|
+
For more information, see https://www.github.com/openmeterio/openmeter-python#accessing-raw-response-data-eg-headers
|
|
37
|
+
"""
|
|
38
|
+
return WebhookResourceWithRawResponse(self)
|
|
39
|
+
|
|
40
|
+
@cached_property
|
|
41
|
+
def with_streaming_response(self) -> WebhookResourceWithStreamingResponse:
|
|
42
|
+
"""
|
|
43
|
+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
|
44
|
+
|
|
45
|
+
For more information, see https://www.github.com/openmeterio/openmeter-python#with_streaming_response
|
|
46
|
+
"""
|
|
47
|
+
return WebhookResourceWithStreamingResponse(self)
|
|
48
|
+
|
|
49
|
+
def svix(
|
|
50
|
+
self,
|
|
51
|
+
*,
|
|
52
|
+
data: Dict[str, str],
|
|
53
|
+
type: Literal[
|
|
54
|
+
"endpoint.created",
|
|
55
|
+
"endpoint.deleted",
|
|
56
|
+
"endpoint.disabled",
|
|
57
|
+
"endpoint.updated",
|
|
58
|
+
"message.attempt.exhausted",
|
|
59
|
+
"message.attempt.failing",
|
|
60
|
+
"message.attempt.recovered",
|
|
61
|
+
],
|
|
62
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
63
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
64
|
+
extra_headers: Headers | None = None,
|
|
65
|
+
extra_query: Query | None = None,
|
|
66
|
+
extra_body: Body | None = None,
|
|
67
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
68
|
+
) -> None:
|
|
69
|
+
"""
|
|
70
|
+
Callback endpoint used by Svix to notify about operational events.
|
|
71
|
+
|
|
72
|
+
Args:
|
|
73
|
+
data: The payload of the Svix operational webhook request.
|
|
74
|
+
|
|
75
|
+
type: The type of the Svix operational webhook request.
|
|
76
|
+
|
|
77
|
+
extra_headers: Send extra headers
|
|
78
|
+
|
|
79
|
+
extra_query: Add additional query parameters to the request
|
|
80
|
+
|
|
81
|
+
extra_body: Add additional JSON properties to the request
|
|
82
|
+
|
|
83
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
84
|
+
"""
|
|
85
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
86
|
+
return self._post(
|
|
87
|
+
"/api/v1/notification/webhook/svix",
|
|
88
|
+
body=maybe_transform(
|
|
89
|
+
{
|
|
90
|
+
"data": data,
|
|
91
|
+
"type": type,
|
|
92
|
+
},
|
|
93
|
+
webhook_svix_params.WebhookSvixParams,
|
|
94
|
+
),
|
|
95
|
+
options=make_request_options(
|
|
96
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
97
|
+
),
|
|
98
|
+
cast_to=NoneType,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class AsyncWebhookResource(AsyncAPIResource):
|
|
103
|
+
@cached_property
|
|
104
|
+
def with_raw_response(self) -> AsyncWebhookResourceWithRawResponse:
|
|
105
|
+
"""
|
|
106
|
+
This property can be used as a prefix for any HTTP method call to return the
|
|
107
|
+
the raw response object instead of the parsed content.
|
|
108
|
+
|
|
109
|
+
For more information, see https://www.github.com/openmeterio/openmeter-python#accessing-raw-response-data-eg-headers
|
|
110
|
+
"""
|
|
111
|
+
return AsyncWebhookResourceWithRawResponse(self)
|
|
112
|
+
|
|
113
|
+
@cached_property
|
|
114
|
+
def with_streaming_response(self) -> AsyncWebhookResourceWithStreamingResponse:
|
|
115
|
+
"""
|
|
116
|
+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
|
117
|
+
|
|
118
|
+
For more information, see https://www.github.com/openmeterio/openmeter-python#with_streaming_response
|
|
119
|
+
"""
|
|
120
|
+
return AsyncWebhookResourceWithStreamingResponse(self)
|
|
121
|
+
|
|
122
|
+
async def svix(
|
|
123
|
+
self,
|
|
124
|
+
*,
|
|
125
|
+
data: Dict[str, str],
|
|
126
|
+
type: Literal[
|
|
127
|
+
"endpoint.created",
|
|
128
|
+
"endpoint.deleted",
|
|
129
|
+
"endpoint.disabled",
|
|
130
|
+
"endpoint.updated",
|
|
131
|
+
"message.attempt.exhausted",
|
|
132
|
+
"message.attempt.failing",
|
|
133
|
+
"message.attempt.recovered",
|
|
134
|
+
],
|
|
135
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
136
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
137
|
+
extra_headers: Headers | None = None,
|
|
138
|
+
extra_query: Query | None = None,
|
|
139
|
+
extra_body: Body | None = None,
|
|
140
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
141
|
+
) -> None:
|
|
142
|
+
"""
|
|
143
|
+
Callback endpoint used by Svix to notify about operational events.
|
|
144
|
+
|
|
145
|
+
Args:
|
|
146
|
+
data: The payload of the Svix operational webhook request.
|
|
147
|
+
|
|
148
|
+
type: The type of the Svix operational webhook request.
|
|
149
|
+
|
|
150
|
+
extra_headers: Send extra headers
|
|
151
|
+
|
|
152
|
+
extra_query: Add additional query parameters to the request
|
|
153
|
+
|
|
154
|
+
extra_body: Add additional JSON properties to the request
|
|
155
|
+
|
|
156
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
157
|
+
"""
|
|
158
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
159
|
+
return await self._post(
|
|
160
|
+
"/api/v1/notification/webhook/svix",
|
|
161
|
+
body=await async_maybe_transform(
|
|
162
|
+
{
|
|
163
|
+
"data": data,
|
|
164
|
+
"type": type,
|
|
165
|
+
},
|
|
166
|
+
webhook_svix_params.WebhookSvixParams,
|
|
167
|
+
),
|
|
168
|
+
options=make_request_options(
|
|
169
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
170
|
+
),
|
|
171
|
+
cast_to=NoneType,
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
class WebhookResourceWithRawResponse:
|
|
176
|
+
def __init__(self, webhook: WebhookResource) -> None:
|
|
177
|
+
self._webhook = webhook
|
|
178
|
+
|
|
179
|
+
self.svix = to_raw_response_wrapper(
|
|
180
|
+
webhook.svix,
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
class AsyncWebhookResourceWithRawResponse:
|
|
185
|
+
def __init__(self, webhook: AsyncWebhookResource) -> None:
|
|
186
|
+
self._webhook = webhook
|
|
187
|
+
|
|
188
|
+
self.svix = async_to_raw_response_wrapper(
|
|
189
|
+
webhook.svix,
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
class WebhookResourceWithStreamingResponse:
|
|
194
|
+
def __init__(self, webhook: WebhookResource) -> None:
|
|
195
|
+
self._webhook = webhook
|
|
196
|
+
|
|
197
|
+
self.svix = to_streamed_response_wrapper(
|
|
198
|
+
webhook.svix,
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class AsyncWebhookResourceWithStreamingResponse:
|
|
203
|
+
def __init__(self, webhook: AsyncWebhookResource) -> None:
|
|
204
|
+
self._webhook = webhook
|
|
205
|
+
|
|
206
|
+
self.svix = async_to_streamed_response_wrapper(
|
|
207
|
+
webhook.svix,
|
|
208
|
+
)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from .meters import (
|
|
4
|
+
MetersResource,
|
|
5
|
+
AsyncMetersResource,
|
|
6
|
+
MetersResourceWithRawResponse,
|
|
7
|
+
AsyncMetersResourceWithRawResponse,
|
|
8
|
+
MetersResourceWithStreamingResponse,
|
|
9
|
+
AsyncMetersResourceWithStreamingResponse,
|
|
10
|
+
)
|
|
11
|
+
from .portal import (
|
|
12
|
+
PortalResource,
|
|
13
|
+
AsyncPortalResource,
|
|
14
|
+
PortalResourceWithRawResponse,
|
|
15
|
+
AsyncPortalResourceWithRawResponse,
|
|
16
|
+
PortalResourceWithStreamingResponse,
|
|
17
|
+
AsyncPortalResourceWithStreamingResponse,
|
|
18
|
+
)
|
|
19
|
+
from .tokens import (
|
|
20
|
+
TokensResource,
|
|
21
|
+
AsyncTokensResource,
|
|
22
|
+
TokensResourceWithRawResponse,
|
|
23
|
+
AsyncTokensResourceWithRawResponse,
|
|
24
|
+
TokensResourceWithStreamingResponse,
|
|
25
|
+
AsyncTokensResourceWithStreamingResponse,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
__all__ = [
|
|
29
|
+
"MetersResource",
|
|
30
|
+
"AsyncMetersResource",
|
|
31
|
+
"MetersResourceWithRawResponse",
|
|
32
|
+
"AsyncMetersResourceWithRawResponse",
|
|
33
|
+
"MetersResourceWithStreamingResponse",
|
|
34
|
+
"AsyncMetersResourceWithStreamingResponse",
|
|
35
|
+
"TokensResource",
|
|
36
|
+
"AsyncTokensResource",
|
|
37
|
+
"TokensResourceWithRawResponse",
|
|
38
|
+
"AsyncTokensResourceWithRawResponse",
|
|
39
|
+
"TokensResourceWithStreamingResponse",
|
|
40
|
+
"AsyncTokensResourceWithStreamingResponse",
|
|
41
|
+
"PortalResource",
|
|
42
|
+
"AsyncPortalResource",
|
|
43
|
+
"PortalResourceWithRawResponse",
|
|
44
|
+
"AsyncPortalResourceWithRawResponse",
|
|
45
|
+
"PortalResourceWithStreamingResponse",
|
|
46
|
+
"AsyncPortalResourceWithStreamingResponse",
|
|
47
|
+
]
|
|
@@ -0,0 +1,230 @@
|
|
|
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 Dict, List, Union
|
|
6
|
+
from datetime import datetime
|
|
7
|
+
from typing_extensions import Literal
|
|
8
|
+
|
|
9
|
+
import httpx
|
|
10
|
+
|
|
11
|
+
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
|
|
12
|
+
from ..._utils import (
|
|
13
|
+
maybe_transform,
|
|
14
|
+
async_maybe_transform,
|
|
15
|
+
)
|
|
16
|
+
from ..._compat import cached_property
|
|
17
|
+
from ..._resource import SyncAPIResource, AsyncAPIResource
|
|
18
|
+
from ..._response import (
|
|
19
|
+
to_raw_response_wrapper,
|
|
20
|
+
to_streamed_response_wrapper,
|
|
21
|
+
async_to_raw_response_wrapper,
|
|
22
|
+
async_to_streamed_response_wrapper,
|
|
23
|
+
)
|
|
24
|
+
from ..._base_client import make_request_options
|
|
25
|
+
from ...types.portal import meter_query_params
|
|
26
|
+
from ...types.meter_query_result import MeterQueryResult
|
|
27
|
+
|
|
28
|
+
__all__ = ["MetersResource", "AsyncMetersResource"]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class MetersResource(SyncAPIResource):
|
|
32
|
+
@cached_property
|
|
33
|
+
def with_raw_response(self) -> MetersResourceWithRawResponse:
|
|
34
|
+
return MetersResourceWithRawResponse(self)
|
|
35
|
+
|
|
36
|
+
@cached_property
|
|
37
|
+
def with_streaming_response(self) -> MetersResourceWithStreamingResponse:
|
|
38
|
+
return MetersResourceWithStreamingResponse(self)
|
|
39
|
+
|
|
40
|
+
def query(
|
|
41
|
+
self,
|
|
42
|
+
meter_slug: str,
|
|
43
|
+
*,
|
|
44
|
+
filter_group_by: Dict[str, str] | NotGiven = NOT_GIVEN,
|
|
45
|
+
from_: Union[str, datetime] | NotGiven = NOT_GIVEN,
|
|
46
|
+
group_by: List[str] | NotGiven = NOT_GIVEN,
|
|
47
|
+
to: Union[str, datetime] | NotGiven = NOT_GIVEN,
|
|
48
|
+
window_size: Literal["MINUTE", "HOUR", "DAY"] | NotGiven = NOT_GIVEN,
|
|
49
|
+
window_time_zone: str | NotGiven = NOT_GIVEN,
|
|
50
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
51
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
52
|
+
extra_headers: Headers | None = None,
|
|
53
|
+
extra_query: Query | None = None,
|
|
54
|
+
extra_body: Body | None = None,
|
|
55
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
56
|
+
) -> MeterQueryResult:
|
|
57
|
+
"""Query meter for consumer portal.
|
|
58
|
+
|
|
59
|
+
This endpoint is publicly exposable to
|
|
60
|
+
consumers.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
filter_group_by: Simple filter for group bys with exact match.
|
|
64
|
+
|
|
65
|
+
Usage: `?filterGroupBy[type]=input&filterGroupBy[model]=gpt-4`
|
|
66
|
+
|
|
67
|
+
from_: Start date-time in RFC 3339 format. Inclusive.
|
|
68
|
+
|
|
69
|
+
group_by: If not specified a single aggregate will be returned for each subject and time
|
|
70
|
+
window. `subject` is a reserved group by value.
|
|
71
|
+
|
|
72
|
+
to: End date-time in RFC 3339 format. Inclusive.
|
|
73
|
+
|
|
74
|
+
window_size: If not specified, a single usage aggregate will be returned for the entirety of
|
|
75
|
+
the specified period for each subject and group.
|
|
76
|
+
|
|
77
|
+
window_time_zone: The value is the name of the time zone as defined in the IANA Time Zone Database
|
|
78
|
+
(http://www.iana.org/time-zones). If not specified, the UTC timezone will be
|
|
79
|
+
used.
|
|
80
|
+
|
|
81
|
+
extra_headers: Send extra headers
|
|
82
|
+
|
|
83
|
+
extra_query: Add additional query parameters to the request
|
|
84
|
+
|
|
85
|
+
extra_body: Add additional JSON properties to the request
|
|
86
|
+
|
|
87
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
88
|
+
"""
|
|
89
|
+
if not meter_slug:
|
|
90
|
+
raise ValueError(f"Expected a non-empty value for `meter_slug` but received {meter_slug!r}")
|
|
91
|
+
return self._get(
|
|
92
|
+
f"/api/v1/portal/meters/{meter_slug}/query",
|
|
93
|
+
options=make_request_options(
|
|
94
|
+
extra_headers=extra_headers,
|
|
95
|
+
extra_query=extra_query,
|
|
96
|
+
extra_body=extra_body,
|
|
97
|
+
timeout=timeout,
|
|
98
|
+
query=maybe_transform(
|
|
99
|
+
{
|
|
100
|
+
"filter_group_by": filter_group_by,
|
|
101
|
+
"from_": from_,
|
|
102
|
+
"group_by": group_by,
|
|
103
|
+
"to": to,
|
|
104
|
+
"window_size": window_size,
|
|
105
|
+
"window_time_zone": window_time_zone,
|
|
106
|
+
},
|
|
107
|
+
meter_query_params.MeterQueryParams,
|
|
108
|
+
),
|
|
109
|
+
),
|
|
110
|
+
cast_to=MeterQueryResult,
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class AsyncMetersResource(AsyncAPIResource):
|
|
115
|
+
@cached_property
|
|
116
|
+
def with_raw_response(self) -> AsyncMetersResourceWithRawResponse:
|
|
117
|
+
return AsyncMetersResourceWithRawResponse(self)
|
|
118
|
+
|
|
119
|
+
@cached_property
|
|
120
|
+
def with_streaming_response(self) -> AsyncMetersResourceWithStreamingResponse:
|
|
121
|
+
return AsyncMetersResourceWithStreamingResponse(self)
|
|
122
|
+
|
|
123
|
+
async def query(
|
|
124
|
+
self,
|
|
125
|
+
meter_slug: str,
|
|
126
|
+
*,
|
|
127
|
+
filter_group_by: Dict[str, str] | NotGiven = NOT_GIVEN,
|
|
128
|
+
from_: Union[str, datetime] | NotGiven = NOT_GIVEN,
|
|
129
|
+
group_by: List[str] | NotGiven = NOT_GIVEN,
|
|
130
|
+
to: Union[str, datetime] | NotGiven = NOT_GIVEN,
|
|
131
|
+
window_size: Literal["MINUTE", "HOUR", "DAY"] | NotGiven = NOT_GIVEN,
|
|
132
|
+
window_time_zone: str | NotGiven = NOT_GIVEN,
|
|
133
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
134
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
135
|
+
extra_headers: Headers | None = None,
|
|
136
|
+
extra_query: Query | None = None,
|
|
137
|
+
extra_body: Body | None = None,
|
|
138
|
+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
|
139
|
+
) -> MeterQueryResult:
|
|
140
|
+
"""Query meter for consumer portal.
|
|
141
|
+
|
|
142
|
+
This endpoint is publicly exposable to
|
|
143
|
+
consumers.
|
|
144
|
+
|
|
145
|
+
Args:
|
|
146
|
+
filter_group_by: Simple filter for group bys with exact match.
|
|
147
|
+
|
|
148
|
+
Usage: `?filterGroupBy[type]=input&filterGroupBy[model]=gpt-4`
|
|
149
|
+
|
|
150
|
+
from_: Start date-time in RFC 3339 format. Inclusive.
|
|
151
|
+
|
|
152
|
+
group_by: If not specified a single aggregate will be returned for each subject and time
|
|
153
|
+
window. `subject` is a reserved group by value.
|
|
154
|
+
|
|
155
|
+
to: End date-time in RFC 3339 format. Inclusive.
|
|
156
|
+
|
|
157
|
+
window_size: If not specified, a single usage aggregate will be returned for the entirety of
|
|
158
|
+
the specified period for each subject and group.
|
|
159
|
+
|
|
160
|
+
window_time_zone: The value is the name of the time zone as defined in the IANA Time Zone Database
|
|
161
|
+
(http://www.iana.org/time-zones). If not specified, the UTC timezone will be
|
|
162
|
+
used.
|
|
163
|
+
|
|
164
|
+
extra_headers: Send extra headers
|
|
165
|
+
|
|
166
|
+
extra_query: Add additional query parameters to the request
|
|
167
|
+
|
|
168
|
+
extra_body: Add additional JSON properties to the request
|
|
169
|
+
|
|
170
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
171
|
+
"""
|
|
172
|
+
if not meter_slug:
|
|
173
|
+
raise ValueError(f"Expected a non-empty value for `meter_slug` but received {meter_slug!r}")
|
|
174
|
+
return await self._get(
|
|
175
|
+
f"/api/v1/portal/meters/{meter_slug}/query",
|
|
176
|
+
options=make_request_options(
|
|
177
|
+
extra_headers=extra_headers,
|
|
178
|
+
extra_query=extra_query,
|
|
179
|
+
extra_body=extra_body,
|
|
180
|
+
timeout=timeout,
|
|
181
|
+
query=await async_maybe_transform(
|
|
182
|
+
{
|
|
183
|
+
"filter_group_by": filter_group_by,
|
|
184
|
+
"from_": from_,
|
|
185
|
+
"group_by": group_by,
|
|
186
|
+
"to": to,
|
|
187
|
+
"window_size": window_size,
|
|
188
|
+
"window_time_zone": window_time_zone,
|
|
189
|
+
},
|
|
190
|
+
meter_query_params.MeterQueryParams,
|
|
191
|
+
),
|
|
192
|
+
),
|
|
193
|
+
cast_to=MeterQueryResult,
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
class MetersResourceWithRawResponse:
|
|
198
|
+
def __init__(self, meters: MetersResource) -> None:
|
|
199
|
+
self._meters = meters
|
|
200
|
+
|
|
201
|
+
self.query = to_raw_response_wrapper(
|
|
202
|
+
meters.query,
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class AsyncMetersResourceWithRawResponse:
|
|
207
|
+
def __init__(self, meters: AsyncMetersResource) -> None:
|
|
208
|
+
self._meters = meters
|
|
209
|
+
|
|
210
|
+
self.query = async_to_raw_response_wrapper(
|
|
211
|
+
meters.query,
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class MetersResourceWithStreamingResponse:
|
|
216
|
+
def __init__(self, meters: MetersResource) -> None:
|
|
217
|
+
self._meters = meters
|
|
218
|
+
|
|
219
|
+
self.query = to_streamed_response_wrapper(
|
|
220
|
+
meters.query,
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class AsyncMetersResourceWithStreamingResponse:
|
|
225
|
+
def __init__(self, meters: AsyncMetersResource) -> None:
|
|
226
|
+
self._meters = meters
|
|
227
|
+
|
|
228
|
+
self.query = async_to_streamed_response_wrapper(
|
|
229
|
+
meters.query,
|
|
230
|
+
)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from .meters import (
|
|
6
|
+
MetersResource,
|
|
7
|
+
AsyncMetersResource,
|
|
8
|
+
MetersResourceWithRawResponse,
|
|
9
|
+
AsyncMetersResourceWithRawResponse,
|
|
10
|
+
MetersResourceWithStreamingResponse,
|
|
11
|
+
AsyncMetersResourceWithStreamingResponse,
|
|
12
|
+
)
|
|
13
|
+
from .tokens import (
|
|
14
|
+
TokensResource,
|
|
15
|
+
AsyncTokensResource,
|
|
16
|
+
TokensResourceWithRawResponse,
|
|
17
|
+
AsyncTokensResourceWithRawResponse,
|
|
18
|
+
TokensResourceWithStreamingResponse,
|
|
19
|
+
AsyncTokensResourceWithStreamingResponse,
|
|
20
|
+
)
|
|
21
|
+
from ..._compat import cached_property
|
|
22
|
+
from ..._resource import SyncAPIResource, AsyncAPIResource
|
|
23
|
+
|
|
24
|
+
__all__ = ["PortalResource", "AsyncPortalResource"]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class PortalResource(SyncAPIResource):
|
|
28
|
+
@cached_property
|
|
29
|
+
def meters(self) -> MetersResource:
|
|
30
|
+
return MetersResource(self._client)
|
|
31
|
+
|
|
32
|
+
@cached_property
|
|
33
|
+
def tokens(self) -> TokensResource:
|
|
34
|
+
return TokensResource(self._client)
|
|
35
|
+
|
|
36
|
+
@cached_property
|
|
37
|
+
def with_raw_response(self) -> PortalResourceWithRawResponse:
|
|
38
|
+
return PortalResourceWithRawResponse(self)
|
|
39
|
+
|
|
40
|
+
@cached_property
|
|
41
|
+
def with_streaming_response(self) -> PortalResourceWithStreamingResponse:
|
|
42
|
+
return PortalResourceWithStreamingResponse(self)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class AsyncPortalResource(AsyncAPIResource):
|
|
46
|
+
@cached_property
|
|
47
|
+
def meters(self) -> AsyncMetersResource:
|
|
48
|
+
return AsyncMetersResource(self._client)
|
|
49
|
+
|
|
50
|
+
@cached_property
|
|
51
|
+
def tokens(self) -> AsyncTokensResource:
|
|
52
|
+
return AsyncTokensResource(self._client)
|
|
53
|
+
|
|
54
|
+
@cached_property
|
|
55
|
+
def with_raw_response(self) -> AsyncPortalResourceWithRawResponse:
|
|
56
|
+
return AsyncPortalResourceWithRawResponse(self)
|
|
57
|
+
|
|
58
|
+
@cached_property
|
|
59
|
+
def with_streaming_response(self) -> AsyncPortalResourceWithStreamingResponse:
|
|
60
|
+
return AsyncPortalResourceWithStreamingResponse(self)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class PortalResourceWithRawResponse:
|
|
64
|
+
def __init__(self, portal: PortalResource) -> None:
|
|
65
|
+
self._portal = portal
|
|
66
|
+
|
|
67
|
+
@cached_property
|
|
68
|
+
def meters(self) -> MetersResourceWithRawResponse:
|
|
69
|
+
return MetersResourceWithRawResponse(self._portal.meters)
|
|
70
|
+
|
|
71
|
+
@cached_property
|
|
72
|
+
def tokens(self) -> TokensResourceWithRawResponse:
|
|
73
|
+
return TokensResourceWithRawResponse(self._portal.tokens)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class AsyncPortalResourceWithRawResponse:
|
|
77
|
+
def __init__(self, portal: AsyncPortalResource) -> None:
|
|
78
|
+
self._portal = portal
|
|
79
|
+
|
|
80
|
+
@cached_property
|
|
81
|
+
def meters(self) -> AsyncMetersResourceWithRawResponse:
|
|
82
|
+
return AsyncMetersResourceWithRawResponse(self._portal.meters)
|
|
83
|
+
|
|
84
|
+
@cached_property
|
|
85
|
+
def tokens(self) -> AsyncTokensResourceWithRawResponse:
|
|
86
|
+
return AsyncTokensResourceWithRawResponse(self._portal.tokens)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class PortalResourceWithStreamingResponse:
|
|
90
|
+
def __init__(self, portal: PortalResource) -> None:
|
|
91
|
+
self._portal = portal
|
|
92
|
+
|
|
93
|
+
@cached_property
|
|
94
|
+
def meters(self) -> MetersResourceWithStreamingResponse:
|
|
95
|
+
return MetersResourceWithStreamingResponse(self._portal.meters)
|
|
96
|
+
|
|
97
|
+
@cached_property
|
|
98
|
+
def tokens(self) -> TokensResourceWithStreamingResponse:
|
|
99
|
+
return TokensResourceWithStreamingResponse(self._portal.tokens)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class AsyncPortalResourceWithStreamingResponse:
|
|
103
|
+
def __init__(self, portal: AsyncPortalResource) -> None:
|
|
104
|
+
self._portal = portal
|
|
105
|
+
|
|
106
|
+
@cached_property
|
|
107
|
+
def meters(self) -> AsyncMetersResourceWithStreamingResponse:
|
|
108
|
+
return AsyncMetersResourceWithStreamingResponse(self._portal.meters)
|
|
109
|
+
|
|
110
|
+
@cached_property
|
|
111
|
+
def tokens(self) -> AsyncTokensResourceWithStreamingResponse:
|
|
112
|
+
return AsyncTokensResourceWithStreamingResponse(self._portal.tokens)
|