@openmeter/sdk 1.0.0-beta.184 → 1.0.0-beta.188
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.
- package/README.md +38 -309
- package/dist/cjs/index.cjs +1 -34
- package/dist/cjs/index.d.cts +1 -24
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/src/client/apps.cjs +174 -0
- package/dist/cjs/src/client/apps.d.cts +259 -0
- package/dist/cjs/src/client/apps.js.map +1 -0
- package/dist/cjs/src/client/billing.cjs +309 -0
- package/dist/cjs/src/client/billing.d.cts +510 -0
- package/dist/cjs/src/client/billing.js.map +1 -0
- package/dist/cjs/src/client/common.cjs +47 -0
- package/dist/cjs/src/client/common.d.cts +30 -0
- package/dist/cjs/src/client/common.js.map +1 -0
- package/dist/cjs/src/client/customers.cjs +185 -0
- package/dist/cjs/src/client/customers.d.cts +163 -0
- package/dist/cjs/src/client/customers.js.map +1 -0
- package/dist/cjs/src/client/entitlements.cjs +244 -0
- package/dist/cjs/src/client/entitlements.d.cts +442 -0
- package/dist/cjs/src/client/entitlements.js.map +1 -0
- package/dist/cjs/src/client/events.cjs +66 -0
- package/dist/cjs/src/client/events.d.cts +31 -0
- package/dist/cjs/src/client/events.js.map +1 -0
- package/dist/cjs/src/client/features.cjs +78 -0
- package/dist/cjs/src/client/features.d.cts +78 -0
- package/dist/cjs/src/client/features.js.map +1 -0
- package/dist/cjs/src/client/index.cjs +108 -0
- package/dist/cjs/src/client/index.d.cts +45 -0
- package/dist/cjs/src/client/index.js.map +1 -0
- package/dist/cjs/src/client/meters.cjs +93 -0
- package/dist/cjs/src/client/meters.d.cts +145 -0
- package/dist/cjs/src/client/meters.js.map +1 -0
- package/dist/cjs/src/client/notifications.cjs +249 -0
- package/dist/cjs/src/client/notifications.d.cts +219 -0
- package/dist/cjs/src/client/notifications.js.map +1 -0
- package/dist/cjs/src/client/plans.cjs +127 -0
- package/dist/cjs/src/client/plans.d.cts +142 -0
- package/dist/cjs/src/client/plans.js.map +1 -0
- package/dist/cjs/src/client/portal.cjs +55 -0
- package/dist/cjs/src/client/portal.d.cts +48 -0
- package/dist/cjs/src/client/portal.js.map +1 -0
- package/dist/cjs/{clients/pagination.cjs → src/client/schemas.cjs} +1 -1
- package/dist/cjs/src/client/schemas.d.cts +17247 -0
- package/dist/cjs/src/client/schemas.js.map +1 -0
- package/dist/cjs/src/client/subjects.cjs +76 -0
- package/dist/cjs/src/client/subjects.d.cts +70 -0
- package/dist/cjs/src/client/subjects.js.map +1 -0
- package/dist/cjs/src/client/subscriptions.cjs +116 -0
- package/dist/cjs/src/client/subscriptions.d.cts +147 -0
- package/dist/cjs/src/client/subscriptions.js.map +1 -0
- package/dist/cjs/src/client/utils.cjs +69 -0
- package/dist/cjs/src/client/utils.d.cts +12 -0
- package/dist/cjs/src/client/utils.js.map +1 -0
- package/dist/cjs/src/portal/index.cjs +57 -0
- package/dist/cjs/src/portal/index.d.cts +104 -0
- package/dist/cjs/src/portal/index.js.map +1 -0
- package/dist/cjs/src/react/context.cjs +35 -0
- package/dist/cjs/src/react/context.d.cts +9 -0
- package/dist/cjs/src/react/context.js.map +1 -0
- package/dist/cjs/tsconfig.2ca900e0.tsbuildinfo +1 -0
- package/dist/cjs/tsconfig.7693db96.tsbuildinfo +1 -0
- package/dist/index.d.ts +1 -24
- package/dist/index.js +1 -30
- package/dist/index.js.map +1 -1
- package/dist/src/client/apps.d.ts +259 -0
- package/dist/src/client/apps.js +168 -0
- package/dist/src/client/apps.js.map +1 -0
- package/dist/src/client/billing.d.ts +510 -0
- package/dist/src/client/billing.js +302 -0
- package/dist/src/client/billing.js.map +1 -0
- package/dist/src/client/common.d.ts +30 -0
- package/dist/src/client/common.js +42 -0
- package/dist/src/client/common.js.map +1 -0
- package/dist/src/client/customers.d.ts +163 -0
- package/dist/src/client/customers.js +179 -0
- package/dist/src/client/customers.js.map +1 -0
- package/dist/src/client/entitlements.d.ts +442 -0
- package/dist/src/client/entitlements.js +239 -0
- package/dist/src/client/entitlements.js.map +1 -0
- package/dist/src/client/events.d.ts +31 -0
- package/dist/src/client/events.js +58 -0
- package/dist/src/client/events.js.map +1 -0
- package/dist/src/client/features.d.ts +78 -0
- package/dist/src/client/features.js +74 -0
- package/dist/src/client/features.js.map +1 -0
- package/dist/src/client/index.d.ts +45 -0
- package/dist/src/client/index.js +68 -0
- package/dist/src/client/index.js.map +1 -0
- package/dist/src/client/meters.d.ts +145 -0
- package/dist/src/client/meters.js +89 -0
- package/dist/src/client/meters.js.map +1 -0
- package/dist/src/client/notifications.d.ts +219 -0
- package/dist/src/client/notifications.js +242 -0
- package/dist/src/client/notifications.js.map +1 -0
- package/dist/src/client/plans.d.ts +142 -0
- package/dist/src/client/plans.js +123 -0
- package/dist/src/client/plans.js.map +1 -0
- package/dist/src/client/portal.d.ts +48 -0
- package/dist/src/client/portal.js +51 -0
- package/dist/src/client/portal.js.map +1 -0
- package/dist/src/client/schemas.d.ts +17247 -0
- package/dist/src/client/schemas.js +2 -0
- package/dist/src/client/schemas.js.map +1 -0
- package/dist/src/client/subjects.d.ts +70 -0
- package/dist/src/client/subjects.js +72 -0
- package/dist/src/client/subjects.js.map +1 -0
- package/dist/src/client/subscriptions.d.ts +147 -0
- package/dist/src/client/subscriptions.js +112 -0
- package/dist/src/client/subscriptions.js.map +1 -0
- package/dist/src/client/utils.d.ts +12 -0
- package/dist/src/client/utils.js +63 -0
- package/dist/src/client/utils.js.map +1 -0
- package/dist/src/portal/index.d.ts +104 -0
- package/dist/src/portal/index.js +50 -0
- package/dist/src/portal/index.js.map +1 -0
- package/dist/src/react/context.d.ts +9 -0
- package/dist/src/react/context.js +16 -0
- package/dist/src/react/context.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +54 -24
- package/patches/openapi-typescript.patch +73 -0
- package/dist/cjs/clients/client.cjs +0 -120
- package/dist/cjs/clients/client.d.cts +0 -37
- package/dist/cjs/clients/client.js.map +0 -1
- package/dist/cjs/clients/entitlement.cjs +0 -39
- package/dist/cjs/clients/entitlement.d.cts +0 -32
- package/dist/cjs/clients/entitlement.js.map +0 -1
- package/dist/cjs/clients/event.cjs +0 -71
- package/dist/cjs/clients/event.d.cts +0 -79
- package/dist/cjs/clients/event.js.map +0 -1
- package/dist/cjs/clients/feature.cjs +0 -80
- package/dist/cjs/clients/feature.d.cts +0 -46
- package/dist/cjs/clients/feature.js.map +0 -1
- package/dist/cjs/clients/grant.cjs +0 -41
- package/dist/cjs/clients/grant.d.cts +0 -24
- package/dist/cjs/clients/grant.js.map +0 -1
- package/dist/cjs/clients/meter.cjs +0 -83
- package/dist/cjs/clients/meter.d.cts +0 -79
- package/dist/cjs/clients/meter.js.map +0 -1
- package/dist/cjs/clients/notifications.cjs +0 -184
- package/dist/cjs/clients/notifications.d.cts +0 -101
- package/dist/cjs/clients/notifications.js.map +0 -1
- package/dist/cjs/clients/pagination.d.cts +0 -6
- package/dist/cjs/clients/pagination.js.map +0 -1
- package/dist/cjs/clients/portal.cjs +0 -41
- package/dist/cjs/clients/portal.d.cts +0 -22
- package/dist/cjs/clients/portal.js.map +0 -1
- package/dist/cjs/clients/subject.cjs +0 -269
- package/dist/cjs/clients/subject.d.cts +0 -142
- package/dist/cjs/clients/subject.js.map +0 -1
- package/dist/cjs/schemas/openapi.cjs +0 -7
- package/dist/cjs/schemas/openapi.d.cts +0 -3224
- package/dist/cjs/schemas/openapi.js.map +0 -1
- package/dist/cjs/test/agent.cjs +0 -485
- package/dist/cjs/test/agent.d.cts +0 -2
- package/dist/cjs/test/agent.js.map +0 -1
- package/dist/cjs/test/mocks.cjs +0 -153
- package/dist/cjs/test/mocks.d.cts +0 -25
- package/dist/cjs/test/mocks.js.map +0 -1
- package/dist/cjs/tsconfig.4febac0b.tsbuildinfo +0 -1
- package/dist/cjs/tsconfig.7998aae3.tsbuildinfo +0 -1
- package/dist/clients/client.d.ts +0 -37
- package/dist/clients/client.js +0 -115
- package/dist/clients/client.js.map +0 -1
- package/dist/clients/entitlement.d.ts +0 -32
- package/dist/clients/entitlement.js +0 -35
- package/dist/clients/entitlement.js.map +0 -1
- package/dist/clients/event.d.ts +0 -79
- package/dist/clients/event.js +0 -64
- package/dist/clients/event.js.map +0 -1
- package/dist/clients/feature.d.ts +0 -46
- package/dist/clients/feature.js +0 -76
- package/dist/clients/feature.js.map +0 -1
- package/dist/clients/grant.d.ts +0 -24
- package/dist/clients/grant.js +0 -37
- package/dist/clients/grant.js.map +0 -1
- package/dist/clients/meter.d.ts +0 -79
- package/dist/clients/meter.js +0 -79
- package/dist/clients/meter.js.map +0 -1
- package/dist/clients/notifications.d.ts +0 -101
- package/dist/clients/notifications.js +0 -180
- package/dist/clients/notifications.js.map +0 -1
- package/dist/clients/pagination.d.ts +0 -6
- package/dist/clients/pagination.js +0 -2
- package/dist/clients/pagination.js.map +0 -1
- package/dist/clients/portal.d.ts +0 -22
- package/dist/clients/portal.js +0 -37
- package/dist/clients/portal.js.map +0 -1
- package/dist/clients/subject.d.ts +0 -142
- package/dist/clients/subject.js +0 -265
- package/dist/clients/subject.js.map +0 -1
- package/dist/schemas/openapi.d.ts +0 -3224
- package/dist/schemas/openapi.js +0 -6
- package/dist/schemas/openapi.js.map +0 -1
- package/dist/test/agent.d.ts +0 -2
- package/dist/test/agent.js +0 -482
- package/dist/test/agent.js.map +0 -1
- package/dist/test/mocks.d.ts +0 -25
- package/dist/test/mocks.js +0 -150
- package/dist/test/mocks.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# OpenMeter
|
|
1
|
+
# OpenMeter JavaScript SDK
|
|
2
2
|
|
|
3
3
|
## Install
|
|
4
4
|
|
|
@@ -6,333 +6,62 @@
|
|
|
6
6
|
npm install --save @openmeter/sdk
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Configuration for accessing the OpenMeter API
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
import { OpenMeter, type Event } from '@openmeter/sdk'
|
|
13
|
-
|
|
14
|
-
const openmeter = new OpenMeter({ baseUrl: 'http://localhost:8888' })
|
|
15
|
-
|
|
16
|
-
// Ingesting an event
|
|
17
|
-
const event: Event = {
|
|
18
|
-
specversion: '1.0',
|
|
19
|
-
id: 'id-1',
|
|
20
|
-
source: 'my-app',
|
|
21
|
-
type: 'my-type',
|
|
22
|
-
subject: 'my-awesome-user-id',
|
|
23
|
-
time: new Date(),
|
|
24
|
-
data: {
|
|
25
|
-
api_calls: 1,
|
|
26
|
-
},
|
|
27
|
-
}
|
|
28
|
-
await openmeter.events.ingest(event)
|
|
29
|
-
|
|
30
|
-
// Fetching a meter
|
|
31
|
-
const meter = await openmeter.meters.get('m1')
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## API
|
|
35
|
-
|
|
36
|
-
### Events
|
|
37
|
-
|
|
38
|
-
#### ingest
|
|
39
|
-
|
|
40
|
-
```ts
|
|
41
|
-
import { type Event } from '@openmeter/sdk'
|
|
42
|
-
|
|
43
|
-
const event: Event = {
|
|
44
|
-
specversion: '1.0',
|
|
45
|
-
id: 'id-1',
|
|
46
|
-
source: 'my-app',
|
|
47
|
-
type: 'my-type',
|
|
48
|
-
subject: 'my-awesome-user-id',
|
|
49
|
-
time: new Date(),
|
|
50
|
-
data: {
|
|
51
|
-
api_calls: 1,
|
|
52
|
-
},
|
|
53
|
-
}
|
|
54
|
-
await openmeter.events.ingest(event)
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### batch ingest
|
|
58
|
-
|
|
59
|
-
```ts
|
|
60
|
-
await openmeter.events.ingest([event1, event2, event3])
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
#### list
|
|
64
|
-
|
|
65
|
-
Retrieve latest raw events. Useful for debugging.
|
|
66
|
-
|
|
67
|
-
```ts
|
|
68
|
-
const events = await openmeter.events.list()
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Meters
|
|
72
|
-
|
|
73
|
-
#### list
|
|
74
|
-
|
|
75
|
-
List meters.
|
|
76
|
-
|
|
77
|
-
```ts
|
|
78
|
-
const meters = await openmeter.meters.list()
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
#### get
|
|
82
|
-
|
|
83
|
-
Get one meter by slug.
|
|
84
|
-
|
|
85
|
-
```ts
|
|
86
|
-
const meter = await openmeter.meters.get('m1')
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
#### query
|
|
90
|
-
|
|
91
|
-
Query meter values.
|
|
92
|
-
|
|
93
|
-
```ts
|
|
94
|
-
import { WindowSize } from '@openmeter/sdk'
|
|
95
|
-
|
|
96
|
-
const values = await openmeter.meters.query('my-meter-slug', {
|
|
97
|
-
subject: ['user-1'],
|
|
98
|
-
groupBy: ['method', 'path'],
|
|
99
|
-
from: new Date('2021-01-01'),
|
|
100
|
-
to: new Date('2021-01-02'),
|
|
101
|
-
windowSize: WindowSize.HOUR,
|
|
102
|
-
})
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
#### meter subjects
|
|
106
|
-
|
|
107
|
-
List meter subjects.
|
|
108
|
-
|
|
109
|
-
```ts
|
|
110
|
-
const subjects = await openmeter.meters.subjects('my-meter-slug')
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Portal
|
|
114
|
-
|
|
115
|
-
#### createToken
|
|
116
|
-
|
|
117
|
-
Create subject-specific tokens.
|
|
118
|
-
Useful to build consumer dashboards.
|
|
119
|
-
|
|
120
|
-
```ts
|
|
121
|
-
const token = await openmeter.portal.createToken({ subject: 'customer-1' })
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
#### invalidateTokens
|
|
125
|
-
|
|
126
|
-
Invalidate portal tokens for all or specific subjects.
|
|
127
|
-
|
|
128
|
-
```ts
|
|
129
|
-
await openmeter.portal.invalidateTokens()
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Subject
|
|
133
|
-
|
|
134
|
-
Subject mappings. Like display name and metadata.
|
|
135
|
-
|
|
136
|
-
#### upsert
|
|
137
|
-
|
|
138
|
-
Upsert subjects.
|
|
139
|
-
|
|
140
|
-
```ts
|
|
141
|
-
const subjects = await openmeter.subjects.upsert([
|
|
142
|
-
{
|
|
143
|
-
key: 'customer-1',
|
|
144
|
-
displayName: 'ACME',
|
|
145
|
-
},
|
|
146
|
-
])
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
#### list
|
|
150
|
-
|
|
151
|
-
List subjects.
|
|
152
|
-
|
|
153
|
-
```ts
|
|
154
|
-
const subjects = await openmeter.subjects.list()
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
#### get
|
|
158
|
-
|
|
159
|
-
Get subject by key.
|
|
11
|
+
To use the OpenMeter SDK on your backend, you need to configure `baseUrl` and `apiKey` for OpenMeter Cloud:
|
|
160
12
|
|
|
161
13
|
```ts
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
#### delete
|
|
166
|
-
|
|
167
|
-
Delete subject by key.
|
|
168
|
-
It doesn't delete corresponding usage.
|
|
169
|
-
|
|
170
|
-
```ts
|
|
171
|
-
await openmeter.subjects.delete('customer-1')
|
|
172
|
-
```
|
|
14
|
+
import { OpenMeter } from '@openmeter/sdk'
|
|
173
15
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
Entitlements allow you to manage subject feature access, balances, and usage limits.
|
|
178
|
-
|
|
179
|
-
```ts
|
|
180
|
-
// Issue 10,000,000 tokens every month
|
|
181
|
-
const entitlement = await openmeter.subjects.createEntitlement('customer-1', {
|
|
182
|
-
type: 'metered',
|
|
183
|
-
featureKey: 'ai_tokens',
|
|
184
|
-
usagePeriod: {
|
|
185
|
-
interval: 'MONTH',
|
|
186
|
-
},
|
|
187
|
-
issueAfterReset: 10000000,
|
|
16
|
+
const openmeter = new OpenMeter({
|
|
17
|
+
baseUrl: 'https://openmeter.cloud',
|
|
18
|
+
apiKey: 'om_...',
|
|
188
19
|
})
|
|
189
20
|
```
|
|
190
21
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
List subject entitlements.
|
|
194
|
-
|
|
195
|
-
```ts
|
|
196
|
-
const entitlement = await openmeter.subjects.listEntitlements('customer-1')
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
#### getEntitlement
|
|
200
|
-
|
|
201
|
-
Get a subject entitlement by ID by Feature ID or by Feature Key.
|
|
202
|
-
|
|
203
|
-
```ts
|
|
204
|
-
const entitlement = await openmeter.subjects.getEntitlement(
|
|
205
|
-
'customer-1',
|
|
206
|
-
'ai_tokens'
|
|
207
|
-
)
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
#### deleteEntitlement
|
|
211
|
-
|
|
212
|
-
Delete a subject entitlement by ID by Feature ID or by Feature Key.
|
|
213
|
-
|
|
214
|
-
```ts
|
|
215
|
-
await openmeter.subjects.deleteEntitlement('customer-1', 'ai_tokens')
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
#### getEntitlementValue
|
|
219
|
-
|
|
220
|
-
Get entitlement value by ID by Feature ID or by Feature Key.
|
|
221
|
-
|
|
222
|
-
```ts
|
|
223
|
-
const value = await openmeter.subjects.getEntitlementValue(
|
|
224
|
-
'customer-1',
|
|
225
|
-
'ai_tokens'
|
|
226
|
-
)
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
#### getEntitlementHistory
|
|
230
|
-
|
|
231
|
-
Get entitlement history by ID by Feature ID or by Feature Key
|
|
232
|
-
|
|
233
|
-
```ts
|
|
234
|
-
const entitlement = await openmeter.subjects.getEntitlementHistory(
|
|
235
|
-
'customer-1',
|
|
236
|
-
'ai_tokens'
|
|
237
|
-
)
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
#### resetEntitlementUsage
|
|
22
|
+
## Configuration for accessing the OpenMeter Portal API
|
|
241
23
|
|
|
242
|
-
|
|
24
|
+
To use the OpenMeter Portal SDK on your frontend, you need to configure it use a portal token in your configuration:
|
|
243
25
|
|
|
244
26
|
```ts
|
|
245
|
-
|
|
246
|
-
'customer-1',
|
|
247
|
-
{
|
|
248
|
-
retainAnchor: true,
|
|
249
|
-
}
|
|
250
|
-
)
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
#### createEntitlementGrant
|
|
254
|
-
|
|
255
|
-
Create a grant for an entitlement.
|
|
256
|
-
|
|
257
|
-
```ts
|
|
258
|
-
const grant = await openmeter.subjects.createEntitlementGrant(
|
|
259
|
-
'customer-1',
|
|
260
|
-
'ai_tokens',
|
|
261
|
-
{
|
|
262
|
-
amount: 100,
|
|
263
|
-
priority: 1,
|
|
264
|
-
effectiveAt: '2023-01-01T00:00:00Z',
|
|
265
|
-
expiration: {
|
|
266
|
-
duration: 'HOUR',
|
|
267
|
-
count: 12,
|
|
268
|
-
},
|
|
269
|
-
minRolloverAmount: 100,
|
|
270
|
-
maxRolloverAmount: 100,
|
|
271
|
-
recurrence: {
|
|
272
|
-
interval: 'MONTH',
|
|
273
|
-
anchor: '2024-06-28T18:29:44.867Z',
|
|
274
|
-
},
|
|
275
|
-
}
|
|
276
|
-
)
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
#### listEntitlementGrants
|
|
280
|
-
|
|
281
|
-
List entitlement grants
|
|
282
|
-
|
|
283
|
-
```ts
|
|
284
|
-
const entitlement = await openmeter.subjects.listEntitlementGrants('customer-1', 'ai_tokens)
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
## Features
|
|
288
|
-
|
|
289
|
-
Features are the building blocks of your entitlements, part of your product offering.
|
|
290
|
-
|
|
291
|
-
#### create
|
|
27
|
+
import { OpenMeter } from '@openmeter/sdk/portal'
|
|
292
28
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
const feature = await openmeter.features.create({
|
|
297
|
-
key: 'ai_tokens',
|
|
298
|
-
name: 'AI Tokens',
|
|
299
|
-
// optional
|
|
300
|
-
meterSlug: 'tokens_total',
|
|
29
|
+
const openmeter = new OpenMeter({
|
|
30
|
+
baseUrl: 'https://openmeter.cloud',
|
|
31
|
+
portalToken: 'om_portal_...',
|
|
301
32
|
})
|
|
302
33
|
```
|
|
303
34
|
|
|
304
|
-
|
|
35
|
+
## Configuration for accessing the OpenMeter React SDK
|
|
305
36
|
|
|
306
|
-
|
|
37
|
+
To use the OpenMeter React SDK for the portal API, you need to configure a Portal Client and a React Context:
|
|
307
38
|
|
|
308
39
|
```ts
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
Get feature by key.
|
|
315
|
-
|
|
316
|
-
```ts
|
|
317
|
-
const feature = await openmeter.features.get('ai_tokens')
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
#### delete
|
|
40
|
+
import {
|
|
41
|
+
OpenMeter,
|
|
42
|
+
OpenMeterProvider,
|
|
43
|
+
useOpenMeter,
|
|
44
|
+
} from '@openmeter/sdk/react'
|
|
321
45
|
|
|
322
|
-
|
|
46
|
+
function App() {
|
|
47
|
+
// get portal token from your backend
|
|
48
|
+
const openmeter = new OpenMeter({
|
|
49
|
+
baseUrl: 'https://openmeter.cloud',
|
|
50
|
+
portalToken,
|
|
51
|
+
})
|
|
323
52
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
#### list
|
|
53
|
+
return (
|
|
54
|
+
<OpenMeterProvider value={openmeter}>
|
|
55
|
+
<UsageComponent />
|
|
56
|
+
{/* ... */}
|
|
57
|
+
</OpenMeterProvider>
|
|
58
|
+
)
|
|
59
|
+
}
|
|
333
60
|
|
|
334
|
-
|
|
61
|
+
function UsageComponent() {
|
|
62
|
+
// get openmeter client from context
|
|
63
|
+
const openmeter = useOpenMeter()
|
|
335
64
|
|
|
336
|
-
|
|
337
|
-
|
|
65
|
+
// ...
|
|
66
|
+
}
|
|
338
67
|
```
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -14,38 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
const entitlement_js_1 = require("./clients/entitlement.cjs");
|
|
19
|
-
const event_js_1 = require("./clients/event.cjs");
|
|
20
|
-
const feature_js_1 = require("./clients/feature.cjs");
|
|
21
|
-
const grant_js_1 = require("./clients/grant.cjs");
|
|
22
|
-
const meter_js_1 = require("./clients/meter.cjs");
|
|
23
|
-
const notifications_js_1 = require("./clients/notifications.cjs");
|
|
24
|
-
const portal_js_1 = require("./clients/portal.cjs");
|
|
25
|
-
const subject_js_1 = require("./clients/subject.cjs");
|
|
26
|
-
var meter_js_2 = require("./clients/meter.cjs");
|
|
27
|
-
Object.defineProperty(exports, "MeterAggregation", { enumerable: true, get: function () { return meter_js_2.MeterAggregation; } });
|
|
28
|
-
Object.defineProperty(exports, "WindowSize", { enumerable: true, get: function () { return meter_js_2.WindowSize; } });
|
|
29
|
-
__exportStar(require("./clients/notifications.cjs"), exports);
|
|
30
|
-
class OpenMeter {
|
|
31
|
-
events;
|
|
32
|
-
meters;
|
|
33
|
-
portal;
|
|
34
|
-
subjects;
|
|
35
|
-
features;
|
|
36
|
-
entitlements;
|
|
37
|
-
grants;
|
|
38
|
-
notification;
|
|
39
|
-
constructor(config) {
|
|
40
|
-
this.events = new event_js_1.EventsClient(config);
|
|
41
|
-
this.meters = new meter_js_1.MetersClient(config);
|
|
42
|
-
this.portal = new portal_js_1.PortalClient(config);
|
|
43
|
-
this.subjects = new subject_js_1.SubjectClient(config);
|
|
44
|
-
this.features = new feature_js_1.FeatureClient(config);
|
|
45
|
-
this.entitlements = new entitlement_js_1.EntitlementClient(config);
|
|
46
|
-
this.grants = new grant_js_1.GrantClient(config);
|
|
47
|
-
this.notification = new notifications_js_1.NotificationClient(config);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.OpenMeter = OpenMeter;
|
|
17
|
+
__exportStar(require("./src/client/index.cjs"), exports);
|
|
51
18
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -1,24 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { EntitlementClient } from './clients/entitlement.cjs';
|
|
3
|
-
import { EventsClient } from './clients/event.cjs';
|
|
4
|
-
import { FeatureClient } from './clients/feature.cjs';
|
|
5
|
-
import { GrantClient } from './clients/grant.cjs';
|
|
6
|
-
import { MetersClient } from './clients/meter.cjs';
|
|
7
|
-
import { NotificationClient } from './clients/notifications.cjs';
|
|
8
|
-
import { PortalClient } from './clients/portal.cjs';
|
|
9
|
-
import { SubjectClient } from './clients/subject.cjs';
|
|
10
|
-
export { OpenMeterConfig, RequestOptions } from './clients/client.cjs';
|
|
11
|
-
export { Event, IngestedEvent, CloudEvent } from './clients/event.cjs';
|
|
12
|
-
export { Meter, MeterAggregation, WindowSize } from './clients/meter.cjs';
|
|
13
|
-
export * from './clients/notifications.cjs';
|
|
14
|
-
export declare class OpenMeter {
|
|
15
|
-
events: EventsClient;
|
|
16
|
-
meters: MetersClient;
|
|
17
|
-
portal: PortalClient;
|
|
18
|
-
subjects: SubjectClient;
|
|
19
|
-
features: FeatureClient;
|
|
20
|
-
entitlements: EntitlementClient;
|
|
21
|
-
grants: GrantClient;
|
|
22
|
-
notification: NotificationClient;
|
|
23
|
-
constructor(config: OpenMeterConfig);
|
|
24
|
-
}
|
|
1
|
+
export * from './src/client/index.cjs';
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAqC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppStripe = exports.AppMarketplace = exports.Apps = void 0;
|
|
4
|
+
const utils_js_1 = require("./utils.cjs");
|
|
5
|
+
/**
|
|
6
|
+
* Apps
|
|
7
|
+
* Manage integrations for extending OpenMeter's functionality.
|
|
8
|
+
*/
|
|
9
|
+
class Apps {
|
|
10
|
+
client;
|
|
11
|
+
marketplace;
|
|
12
|
+
stripe;
|
|
13
|
+
constructor(client) {
|
|
14
|
+
this.client = client;
|
|
15
|
+
this.marketplace = new AppMarketplace(client);
|
|
16
|
+
this.stripe = new AppStripe(client);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* List apps
|
|
20
|
+
* @param query - The query parameters
|
|
21
|
+
* @param signal - An optional abort signal
|
|
22
|
+
* @returns The apps
|
|
23
|
+
*/
|
|
24
|
+
async list(query, options) {
|
|
25
|
+
const resp = await this.client.GET('/api/v1/apps', {
|
|
26
|
+
params: { query },
|
|
27
|
+
...options,
|
|
28
|
+
});
|
|
29
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get an app
|
|
33
|
+
* @param id - The ID of the app
|
|
34
|
+
* @param signal - An optional abort signal
|
|
35
|
+
* @returns The app
|
|
36
|
+
*/
|
|
37
|
+
async get(id, options) {
|
|
38
|
+
const resp = await this.client.GET('/api/v1/apps/{id}', {
|
|
39
|
+
params: { path: { id } },
|
|
40
|
+
...options,
|
|
41
|
+
});
|
|
42
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Update an app
|
|
46
|
+
* @param id - The ID of the app
|
|
47
|
+
* @param body - The body of the request
|
|
48
|
+
* @param signal - An optional abort signal
|
|
49
|
+
* @returns The app
|
|
50
|
+
*/
|
|
51
|
+
async update(id, body, options) {
|
|
52
|
+
const resp = await this.client.PUT('/api/v1/apps/{id}', {
|
|
53
|
+
body,
|
|
54
|
+
params: { path: { id } },
|
|
55
|
+
...options,
|
|
56
|
+
});
|
|
57
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Uninstall an app
|
|
61
|
+
* @param id - The ID of the app
|
|
62
|
+
* @param signal - An optional abort signal
|
|
63
|
+
* @returns The app
|
|
64
|
+
*/
|
|
65
|
+
async uninstall(id, options) {
|
|
66
|
+
const resp = await this.client.DELETE('/api/v1/apps/{id}', {
|
|
67
|
+
params: { path: { id } },
|
|
68
|
+
...options,
|
|
69
|
+
});
|
|
70
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.Apps = Apps;
|
|
74
|
+
/**
|
|
75
|
+
* App Marketplace
|
|
76
|
+
* Available apps from the OpenMeter Marketplace.
|
|
77
|
+
*/
|
|
78
|
+
class AppMarketplace {
|
|
79
|
+
client;
|
|
80
|
+
constructor(client) {
|
|
81
|
+
this.client = client;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* List available apps
|
|
85
|
+
* @param query - The query parameters
|
|
86
|
+
* @param signal - An optional abort signal
|
|
87
|
+
* @returns The apps
|
|
88
|
+
*/
|
|
89
|
+
async list(query, options) {
|
|
90
|
+
const resp = await this.client.GET('/api/v1/marketplace/listings', {
|
|
91
|
+
params: { query },
|
|
92
|
+
...options,
|
|
93
|
+
});
|
|
94
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get details for a listing
|
|
98
|
+
* @param type - The type of the listing
|
|
99
|
+
* @param signal - An optional abort signal
|
|
100
|
+
* @returns The listing
|
|
101
|
+
*/
|
|
102
|
+
async get(type, options) {
|
|
103
|
+
const resp = await this.client.GET('/api/v1/marketplace/listings/{type}', {
|
|
104
|
+
params: { path: { type } },
|
|
105
|
+
...options,
|
|
106
|
+
});
|
|
107
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Install an app via OAuth. Returns a URL to start the OAuth 2.0 flow.
|
|
111
|
+
* @param type - The type of the listing
|
|
112
|
+
* @param signal - An optional abort signal
|
|
113
|
+
* @returns The OAuth2 install URL
|
|
114
|
+
*/
|
|
115
|
+
async getOauth2InstallUrl(type, options) {
|
|
116
|
+
const resp = await this.client.GET('/api/v1/marketplace/listings/{type}/install/oauth2', {
|
|
117
|
+
params: { path: { type } },
|
|
118
|
+
...options,
|
|
119
|
+
});
|
|
120
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Authorize OAuth2 code. Verifies the OAuth code and exchanges it for a token and refresh token
|
|
124
|
+
* @param type - The type of the listing
|
|
125
|
+
* @param signal - An optional abort signal
|
|
126
|
+
* @returns The authorization URL
|
|
127
|
+
*/
|
|
128
|
+
async authorizeOauth2(type, options) {
|
|
129
|
+
const resp = await this.client.GET('/api/v1/marketplace/listings/{type}/install/oauth2/authorize', {
|
|
130
|
+
params: { path: { type } },
|
|
131
|
+
...options,
|
|
132
|
+
});
|
|
133
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Install an app via API key.
|
|
137
|
+
* @param type - The type of the listing
|
|
138
|
+
* @param signal - An optional abort signal
|
|
139
|
+
* @returns The installation
|
|
140
|
+
*/
|
|
141
|
+
async installWithAPIKey(type, body, options) {
|
|
142
|
+
const resp = await this.client.POST('/api/v1/marketplace/listings/{type}/install/apikey', {
|
|
143
|
+
body,
|
|
144
|
+
params: { path: { type } },
|
|
145
|
+
...options,
|
|
146
|
+
});
|
|
147
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.AppMarketplace = AppMarketplace;
|
|
151
|
+
/**
|
|
152
|
+
* Stripe App
|
|
153
|
+
*/
|
|
154
|
+
class AppStripe {
|
|
155
|
+
client;
|
|
156
|
+
constructor(client) {
|
|
157
|
+
this.client = client;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Create a checkout session
|
|
161
|
+
* @param body - The body of the request
|
|
162
|
+
* @param signal - An optional abort signal
|
|
163
|
+
* @returns The checkout session
|
|
164
|
+
*/
|
|
165
|
+
async createCheckoutSession(body, options) {
|
|
166
|
+
const resp = await this.client.POST('/api/v1/stripe/checkout/sessions', {
|
|
167
|
+
body,
|
|
168
|
+
...options,
|
|
169
|
+
});
|
|
170
|
+
return (0, utils_js_1.transformResponse)(resp);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.AppStripe = AppStripe;
|
|
174
|
+
//# sourceMappingURL=apps.js.map
|