@openmeter/sdk 1.0.0-alpha.3 → 1.0.0-beta-7b2d9ed372e3

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.
Files changed (261) hide show
  1. package/README.md +45 -62
  2. package/dist/cjs/index.cjs +18 -0
  3. package/dist/cjs/index.d.cts +1 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/src/apps.cjs +176 -0
  6. package/dist/cjs/src/apps.d.cts +338 -0
  7. package/dist/cjs/src/apps.js.map +1 -0
  8. package/dist/cjs/src/billing.cjs +309 -0
  9. package/dist/cjs/src/billing.d.cts +645 -0
  10. package/dist/cjs/src/billing.js.map +1 -0
  11. package/dist/cjs/src/client/apps.cjs +174 -0
  12. package/dist/cjs/src/client/apps.d.cts +339 -0
  13. package/dist/cjs/src/client/apps.js.map +1 -0
  14. package/dist/cjs/src/client/billing.cjs +309 -0
  15. package/dist/cjs/src/client/billing.d.cts +646 -0
  16. package/dist/cjs/src/client/billing.js.map +1 -0
  17. package/dist/cjs/src/client/customers.cjs +185 -0
  18. package/dist/cjs/src/client/customers.d.cts +232 -0
  19. package/dist/cjs/src/client/customers.js.map +1 -0
  20. package/dist/cjs/src/client/entitlements.cjs +244 -0
  21. package/dist/cjs/src/client/entitlements.d.cts +506 -0
  22. package/dist/cjs/src/client/entitlements.js.map +1 -0
  23. package/dist/cjs/src/client/events.cjs +65 -0
  24. package/dist/cjs/src/client/events.d.cts +102 -0
  25. package/dist/cjs/src/client/events.js.map +1 -0
  26. package/dist/cjs/src/client/features.cjs +78 -0
  27. package/dist/cjs/src/client/features.d.cts +154 -0
  28. package/dist/cjs/src/client/features.js.map +1 -0
  29. package/dist/cjs/src/client/index.cjs +100 -0
  30. package/dist/cjs/src/client/index.d.cts +42 -0
  31. package/dist/cjs/src/client/index.js.map +1 -0
  32. package/dist/cjs/src/client/meters.cjs +93 -0
  33. package/dist/cjs/src/client/meters.d.cts +185 -0
  34. package/dist/cjs/src/client/meters.js.map +1 -0
  35. package/dist/cjs/src/client/notifications.cjs +249 -0
  36. package/dist/cjs/src/client/notifications.d.cts +315 -0
  37. package/dist/cjs/src/client/notifications.js.map +1 -0
  38. package/dist/cjs/src/client/plans.cjs +127 -0
  39. package/dist/cjs/src/client/plans.d.cts +193 -0
  40. package/dist/cjs/src/client/plans.js.map +1 -0
  41. package/dist/cjs/src/client/portal.cjs +55 -0
  42. package/dist/cjs/src/client/portal.d.cts +72 -0
  43. package/dist/cjs/src/client/portal.js.map +1 -0
  44. package/dist/cjs/src/client/subjects.cjs +76 -0
  45. package/dist/cjs/src/client/subjects.d.cts +102 -0
  46. package/dist/cjs/src/client/subjects.js.map +1 -0
  47. package/dist/cjs/src/client/subscriptions.cjs +116 -0
  48. package/dist/cjs/src/client/subscriptions.d.cts +198 -0
  49. package/dist/cjs/src/client/subscriptions.js.map +1 -0
  50. package/dist/cjs/src/client/utils.cjs +93 -0
  51. package/dist/cjs/src/client/utils.d.cts +30 -0
  52. package/dist/cjs/src/client/utils.js.map +1 -0
  53. package/dist/cjs/src/customers.cjs +185 -0
  54. package/dist/cjs/src/customers.d.cts +231 -0
  55. package/dist/cjs/src/customers.js.map +1 -0
  56. package/dist/cjs/src/entitlements.cjs +244 -0
  57. package/dist/cjs/src/entitlements.d.cts +505 -0
  58. package/dist/cjs/src/entitlements.js.map +1 -0
  59. package/dist/cjs/src/events.cjs +65 -0
  60. package/dist/cjs/src/events.d.cts +101 -0
  61. package/dist/cjs/src/events.js.map +1 -0
  62. package/dist/cjs/src/features.cjs +78 -0
  63. package/dist/cjs/src/features.d.cts +153 -0
  64. package/dist/cjs/src/features.js.map +1 -0
  65. package/dist/cjs/src/meters.cjs +93 -0
  66. package/dist/cjs/src/meters.d.cts +184 -0
  67. package/dist/cjs/src/meters.js.map +1 -0
  68. package/dist/cjs/src/notifications.cjs +249 -0
  69. package/dist/cjs/src/notifications.d.cts +314 -0
  70. package/dist/cjs/src/notifications.js.map +1 -0
  71. package/dist/cjs/src/plans.cjs +127 -0
  72. package/dist/cjs/src/plans.d.cts +192 -0
  73. package/dist/cjs/src/plans.js.map +1 -0
  74. package/dist/cjs/src/portal/index.cjs +57 -0
  75. package/dist/cjs/src/portal/index.d.cts +113 -0
  76. package/dist/cjs/src/portal/index.js.map +1 -0
  77. package/dist/cjs/src/react/context.cjs +35 -0
  78. package/dist/cjs/src/react/context.d.cts +9 -0
  79. package/dist/cjs/src/react/context.js.map +1 -0
  80. package/dist/cjs/src/subjects.cjs +76 -0
  81. package/dist/cjs/src/subjects.d.cts +101 -0
  82. package/dist/cjs/src/subjects.js.map +1 -0
  83. package/dist/cjs/src/subscriptions.cjs +116 -0
  84. package/dist/cjs/src/subscriptions.d.cts +197 -0
  85. package/dist/cjs/src/subscriptions.js.map +1 -0
  86. package/dist/cjs/src/utils.cjs +93 -0
  87. package/dist/cjs/src/utils.d.cts +29 -0
  88. package/dist/cjs/src/utils.js.map +1 -0
  89. package/dist/cjs/tsconfig.01ab6c6b.tsbuildinfo +1 -0
  90. package/dist/cjs/tsconfig.1e12acbb.tsbuildinfo +1 -0
  91. package/dist/cjs/tsconfig.38849cd1.tsbuildinfo +1 -0
  92. package/dist/cjs/tsconfig.3bd7bdb7.tsbuildinfo +1 -0
  93. package/dist/cjs/tsconfig.3db00db7.tsbuildinfo +1 -0
  94. package/dist/cjs/tsconfig.5cd8af0a.tsbuildinfo +1 -0
  95. package/dist/cjs/tsconfig.64c40770.tsbuildinfo +1 -0
  96. package/dist/cjs/tsconfig.769a7751.tsbuildinfo +1 -0
  97. package/dist/cjs/tsconfig.8fd1c6cd.tsbuildinfo +1 -0
  98. package/dist/cjs/tsconfig.c9e83bdd.tsbuildinfo +1 -0
  99. package/dist/cjs/tsconfig.d3cb3b9e.tsbuildinfo +1 -0
  100. package/dist/cjs/tsconfig.db7aa141.tsbuildinfo +1 -0
  101. package/dist/cjs/tsconfig.edd7b7ed.tsbuildinfo +1 -0
  102. package/dist/cjs/tsconfig.f343a141.tsbuildinfo +1 -0
  103. package/dist/cjs/tsconfig.f36f8639.tsbuildinfo +1 -0
  104. package/dist/cjs/tsconfig.fc8d5fa4.tsbuildinfo +1 -0
  105. package/dist/index.d.ts +1 -23
  106. package/dist/index.js +2 -28
  107. package/dist/index.js.map +1 -0
  108. package/dist/src/apps.d.ts +338 -0
  109. package/dist/src/apps.js +170 -0
  110. package/dist/src/apps.js.map +1 -0
  111. package/dist/src/billing.d.ts +645 -0
  112. package/dist/src/billing.js +302 -0
  113. package/dist/src/billing.js.map +1 -0
  114. package/dist/src/client/apps.d.ts +339 -0
  115. package/dist/src/client/apps.js +168 -0
  116. package/dist/src/client/apps.js.map +1 -0
  117. package/dist/src/client/billing.d.ts +646 -0
  118. package/dist/src/client/billing.js +302 -0
  119. package/dist/src/client/billing.js.map +1 -0
  120. package/dist/src/client/customers.d.ts +232 -0
  121. package/dist/src/client/customers.js +179 -0
  122. package/dist/src/client/customers.js.map +1 -0
  123. package/dist/src/client/entitlements.d.ts +506 -0
  124. package/dist/src/client/entitlements.js +239 -0
  125. package/dist/src/client/entitlements.js.map +1 -0
  126. package/dist/src/client/events.d.ts +102 -0
  127. package/dist/src/client/events.js +58 -0
  128. package/dist/src/client/events.js.map +1 -0
  129. package/dist/src/client/features.d.ts +154 -0
  130. package/dist/src/client/features.js +74 -0
  131. package/dist/src/client/features.js.map +1 -0
  132. package/dist/src/client/index.d.ts +42 -0
  133. package/dist/src/client/index.js +63 -0
  134. package/dist/src/client/index.js.map +1 -0
  135. package/dist/src/client/meters.d.ts +185 -0
  136. package/dist/src/client/meters.js +89 -0
  137. package/dist/src/client/meters.js.map +1 -0
  138. package/dist/src/client/notifications.d.ts +315 -0
  139. package/dist/src/client/notifications.js +242 -0
  140. package/dist/src/client/notifications.js.map +1 -0
  141. package/dist/src/client/plans.d.ts +193 -0
  142. package/dist/src/client/plans.js +123 -0
  143. package/dist/src/client/plans.js.map +1 -0
  144. package/dist/src/client/portal.d.ts +72 -0
  145. package/dist/src/client/portal.js +51 -0
  146. package/dist/src/client/portal.js.map +1 -0
  147. package/dist/src/client/subjects.d.ts +102 -0
  148. package/dist/src/client/subjects.js +72 -0
  149. package/dist/src/client/subjects.js.map +1 -0
  150. package/dist/src/client/subscriptions.d.ts +198 -0
  151. package/dist/src/client/subscriptions.js +112 -0
  152. package/dist/src/client/subscriptions.js.map +1 -0
  153. package/dist/src/client/utils.d.ts +30 -0
  154. package/dist/src/client/utils.js +85 -0
  155. package/dist/src/client/utils.js.map +1 -0
  156. package/dist/src/customers.d.ts +231 -0
  157. package/dist/src/customers.js +179 -0
  158. package/dist/src/customers.js.map +1 -0
  159. package/dist/src/entitlements.d.ts +505 -0
  160. package/dist/src/entitlements.js +239 -0
  161. package/dist/src/entitlements.js.map +1 -0
  162. package/dist/src/events.d.ts +101 -0
  163. package/dist/src/events.js +58 -0
  164. package/dist/src/events.js.map +1 -0
  165. package/dist/src/features.d.ts +153 -0
  166. package/dist/src/features.js +74 -0
  167. package/dist/src/features.js.map +1 -0
  168. package/dist/src/meters.d.ts +184 -0
  169. package/dist/src/meters.js +89 -0
  170. package/dist/src/meters.js.map +1 -0
  171. package/dist/src/notifications.d.ts +314 -0
  172. package/dist/src/notifications.js +242 -0
  173. package/dist/src/notifications.js.map +1 -0
  174. package/dist/src/plans.d.ts +192 -0
  175. package/dist/src/plans.js +123 -0
  176. package/dist/src/plans.js.map +1 -0
  177. package/dist/src/portal/index.d.ts +113 -0
  178. package/dist/src/portal/index.js +50 -0
  179. package/dist/src/portal/index.js.map +1 -0
  180. package/dist/src/react/context.d.ts +9 -0
  181. package/dist/src/react/context.js +16 -0
  182. package/dist/src/react/context.js.map +1 -0
  183. package/dist/src/subjects.d.ts +101 -0
  184. package/dist/src/subjects.js +72 -0
  185. package/dist/src/subjects.js.map +1 -0
  186. package/dist/src/subscriptions.d.ts +197 -0
  187. package/dist/src/subscriptions.js +112 -0
  188. package/dist/src/subscriptions.js.map +1 -0
  189. package/dist/src/utils.d.ts +29 -0
  190. package/dist/src/utils.js +85 -0
  191. package/dist/src/utils.js.map +1 -0
  192. package/dist/tsconfig.tsbuildinfo +1 -1
  193. package/package.json +95 -57
  194. package/patches/openapi-typescript.patch +73 -0
  195. package/dist/generated/HttpService.d.ts +0 -14
  196. package/dist/generated/HttpService.js +0 -27
  197. package/dist/generated/core/ApiError.d.ts +0 -10
  198. package/dist/generated/core/ApiError.js +0 -17
  199. package/dist/generated/core/ApiRequestOptions.d.ts +0 -13
  200. package/dist/generated/core/ApiRequestOptions.js +0 -2
  201. package/dist/generated/core/ApiResult.d.ts +0 -7
  202. package/dist/generated/core/ApiResult.js +0 -2
  203. package/dist/generated/core/BaseHttpRequest.d.ts +0 -8
  204. package/dist/generated/core/BaseHttpRequest.js +0 -7
  205. package/dist/generated/core/CancelablePromise.d.ts +0 -20
  206. package/dist/generated/core/CancelablePromise.js +0 -93
  207. package/dist/generated/core/NodeHttpRequest.d.ts +0 -14
  208. package/dist/generated/core/NodeHttpRequest.js +0 -17
  209. package/dist/generated/core/OpenAPI.d.ts +0 -16
  210. package/dist/generated/core/OpenAPI.js +0 -12
  211. package/dist/generated/core/request.d.ts +0 -34
  212. package/dist/generated/core/request.js +0 -268
  213. package/dist/generated/index.d.ts +0 -29
  214. package/dist/generated/index.js +0 -22
  215. package/dist/generated/models/Event.d.ts +0 -49
  216. package/dist/generated/models/Event.js +0 -11
  217. package/dist/generated/models/IdOrSlug.d.ts +0 -1
  218. package/dist/generated/models/IdOrSlug.js +0 -2
  219. package/dist/generated/models/Meter.d.ts +0 -30
  220. package/dist/generated/models/Meter.js +0 -2
  221. package/dist/generated/models/MeterAggregation.d.ts +0 -10
  222. package/dist/generated/models/MeterAggregation.js +0 -12
  223. package/dist/generated/models/MeterValue.d.ts +0 -10
  224. package/dist/generated/models/MeterValue.js +0 -2
  225. package/dist/generated/models/Namespace.d.ts +0 -6
  226. package/dist/generated/models/Namespace.js +0 -2
  227. package/dist/generated/models/Problem.d.ts +0 -4
  228. package/dist/generated/models/Problem.js +0 -2
  229. package/dist/generated/models/WindowSize.d.ts +0 -5
  230. package/dist/generated/models/WindowSize.js +0 -7
  231. package/dist/generated/models/meterIdOrSlug.d.ts +0 -5
  232. package/dist/generated/models/meterIdOrSlug.js +0 -2
  233. package/dist/generated/models/namespaceParam.d.ts +0 -4
  234. package/dist/generated/models/namespaceParam.js +0 -2
  235. package/dist/generated/schemas/$Event.d.ts +0 -59
  236. package/dist/generated/schemas/$Event.js +0 -60
  237. package/dist/generated/schemas/$IdOrSlug.d.ts +0 -13
  238. package/dist/generated/schemas/$IdOrSlug.js +0 -14
  239. package/dist/generated/schemas/$Meter.d.ts +0 -44
  240. package/dist/generated/schemas/$Meter.js +0 -45
  241. package/dist/generated/schemas/$MeterAggregation.d.ts +0 -3
  242. package/dist/generated/schemas/$MeterAggregation.js +0 -4
  243. package/dist/generated/schemas/$MeterValue.d.ts +0 -26
  244. package/dist/generated/schemas/$MeterValue.js +0 -27
  245. package/dist/generated/schemas/$Namespace.d.ts +0 -9
  246. package/dist/generated/schemas/$Namespace.js +0 -10
  247. package/dist/generated/schemas/$Problem.d.ts +0 -6
  248. package/dist/generated/schemas/$Problem.js +0 -7
  249. package/dist/generated/schemas/$WindowSize.d.ts +0 -3
  250. package/dist/generated/schemas/$WindowSize.js +0 -4
  251. package/dist/generated/schemas/$meterIdOrSlug.d.ts +0 -4
  252. package/dist/generated/schemas/$meterIdOrSlug.js +0 -5
  253. package/dist/generated/schemas/$namespaceParam.d.ts +0 -5
  254. package/dist/generated/schemas/$namespaceParam.js +0 -6
  255. package/dist/generated/services/DefaultService.d.ts +0 -16
  256. package/dist/generated/services/DefaultService.js +0 -22
  257. package/dist/generated/services/EventsService.d.ts +0 -17
  258. package/dist/generated/services/EventsService.js +0 -29
  259. package/dist/generated/services/MetersService.d.ts +0 -75
  260. package/dist/generated/services/MetersService.js +0 -140
  261. package/index.ts +0 -53
@@ -0,0 +1,239 @@
1
+ import { transformResponse } from './utils.js';
2
+ /**
3
+ * Entitlements
4
+ * @description With Entitlements, you can define and enforce usage limits, implement quota-based pricing, and manage access to features in your application.
5
+ */
6
+ export class Entitlements {
7
+ client;
8
+ grants;
9
+ constructor(client) {
10
+ this.client = client;
11
+ this.grants = new Grants(client);
12
+ }
13
+ /**
14
+ * Create an entitlement
15
+ *
16
+ * - Boolean entitlements define static feature access, e.g. "Can use SSO authentication".
17
+ * - Static entitlements let you pass along a configuration while granting access, e.g. "Using this feature with X Y settings" (passed in the config).
18
+ * - Metered entitlements have many use cases, from setting up usage-based access to implementing complex credit systems. Example: The customer can use 10000 AI tokens during the usage period of the entitlement.
19
+ *
20
+ * A given subject can only have one active (non-deleted) entitlement per featureKey. If you try to create a new entitlement for a featureKey that already has an active entitlement, the request will fail with a 409 error.
21
+ *
22
+ * Once an entitlement is created you cannot modify it, only delete it.
23
+ *
24
+ * @param subjectIdOrKey - The ID or key of the subject
25
+ * @param entitlement - The entitlement to create
26
+ * @param signal - An optional abort signal
27
+ * @returns The created entitlement
28
+ */
29
+ async create(subjectIdOrKey, entitlement, signal) {
30
+ const resp = await this.client.POST('/api/v1/subjects/{subjectIdOrKey}/entitlements', {
31
+ signal,
32
+ params: {
33
+ path: {
34
+ subjectIdOrKey: subjectIdOrKey,
35
+ },
36
+ },
37
+ body: entitlement,
38
+ });
39
+ return transformResponse(resp);
40
+ }
41
+ /**
42
+ * Get an entitlement by ID
43
+ *
44
+ * @param id - The ID of the entitlement
45
+ * @param signal - An optional abort signal
46
+ * @returns The entitlement
47
+ */
48
+ async get(id, signal) {
49
+ const resp = await this.client.GET('/api/v1/entitlements/{entitlementId}', {
50
+ signal,
51
+ params: {
52
+ path: {
53
+ entitlementId: id,
54
+ },
55
+ },
56
+ });
57
+ return transformResponse(resp);
58
+ }
59
+ /**
60
+ * List entitlements
61
+ *
62
+ * @param query - The query parameters
63
+ * @param signal - An optional abort signal
64
+ * @returns The entitlements
65
+ */
66
+ async list(query, signal) {
67
+ const resp = await this.client.GET('/api/v1/entitlements', {
68
+ signal,
69
+ params: {
70
+ query,
71
+ },
72
+ });
73
+ return transformResponse(resp);
74
+ }
75
+ /**
76
+ * Delete an entitlement
77
+ *
78
+ * @param subjectIdOrKey - The ID or key of the subject
79
+ * @param entitlementId - The ID of the entitlement
80
+ * @param signal - An optional abort signal
81
+ * @returns The deleted entitlement
82
+ */
83
+ async delete(subjectIdOrKey, entitlementId, signal) {
84
+ const resp = await this.client.DELETE('/api/v1/subjects/{subjectIdOrKey}/entitlements/{entitlementId}', {
85
+ signal,
86
+ params: {
87
+ path: {
88
+ subjectIdOrKey,
89
+ entitlementId,
90
+ },
91
+ },
92
+ });
93
+ return transformResponse(resp);
94
+ }
95
+ /**
96
+ * Get the value of an entitlement to check access
97
+ * All entitlement types share the hasAccess property in their value response, but multiple other properties are returned based on the entitlement type.
98
+ *
99
+ * @param subjectIdOrKey - The ID or key of the subject
100
+ * @param entitlementIdOrFeatureKey - The ID or feature key of the entitlement
101
+ * @param query - The query parameters
102
+ * @param signal - An optional abort signal
103
+ * @returns The entitlement value
104
+ */
105
+ async value(subjectIdOrKey, entitlementIdOrFeatureKey, query, signal) {
106
+ const resp = await this.client.GET('/api/v1/subjects/{subjectIdOrKey}/entitlements/{entitlementIdOrFeatureKey}/value', {
107
+ signal,
108
+ params: {
109
+ path: {
110
+ subjectIdOrKey,
111
+ entitlementIdOrFeatureKey,
112
+ },
113
+ query,
114
+ },
115
+ });
116
+ return transformResponse(resp);
117
+ }
118
+ /**
119
+ * Get the history of an entitlement
120
+ * Returns historical balance and usage data for the entitlement. The queried history can span accross multiple reset events.
121
+ *
122
+ * @param subjectIdOrKey - The ID or key of the subject
123
+ * @param entitlementId - The ID of the entitlement
124
+ * @param query - The query parameters
125
+ * @param signal - An optional abort signal
126
+ * @returns The history of the entitlement
127
+ */
128
+ async history(subjectIdOrKey, entitlementId, query, signal) {
129
+ const resp = await this.client.GET('/api/v1/subjects/{subjectIdOrKey}/entitlements/{entitlementId}/history', {
130
+ signal,
131
+ params: {
132
+ path: {
133
+ subjectIdOrKey,
134
+ entitlementId,
135
+ },
136
+ query,
137
+ },
138
+ });
139
+ return transformResponse(resp);
140
+ }
141
+ /**
142
+ * Override an entitlement
143
+ * This is useful for upgrades, downgrades, or other changes to entitlements that require a new entitlement to be created with zero downtime.
144
+ *
145
+ * @param subjectIdOrKey - The ID or key of the subject
146
+ * @param entitlementIdOrFeatureKey - The ID or feature key of the entitlement
147
+ * @param override - The override to create
148
+ * @param signal - An optional abort signal
149
+ * @returns The overridden entitlement
150
+ */
151
+ async override(subjectIdOrKey, entitlementIdOrFeatureKey, override, signal) {
152
+ const resp = await this.client.PUT('/api/v1/subjects/{subjectIdOrKey}/entitlements/{entitlementIdOrFeatureKey}/override', {
153
+ signal,
154
+ params: {
155
+ path: {
156
+ subjectIdOrKey,
157
+ entitlementIdOrFeatureKey,
158
+ },
159
+ },
160
+ body: override,
161
+ });
162
+ return transformResponse(resp);
163
+ }
164
+ /**
165
+ * Reset entitlement usage
166
+ * - Reset marks the start of a new usage period for the entitlement and initiates grant rollover. At the start of a period usage is zerod out and grants are rolled over based on their rollover settings. It would typically be synced with the subjects billing period to enforce usage based on their subscription.
167
+ * - Usage is automatically reset for metered entitlements based on their usage period, but this endpoint allows to manually reset it at any time. When doing so the period anchor of the entitlement can be changed if needed.
168
+ *
169
+ * @param subjectIdOrKey - The ID or key of the subject
170
+ * @param entitlementId - The ID of the entitlement
171
+ * @param body - The body of the request
172
+ * @param signal - An optional abort signal
173
+ * @returns The reset entitlement
174
+ */
175
+ async reset(subjectIdOrKey, entitlementId, body, signal) {
176
+ const resp = await this.client.POST('/api/v1/subjects/{subjectIdOrKey}/entitlements/{entitlementId}/reset', {
177
+ signal,
178
+ params: {
179
+ path: {
180
+ subjectIdOrKey,
181
+ entitlementId,
182
+ },
183
+ },
184
+ body,
185
+ });
186
+ return transformResponse(resp);
187
+ }
188
+ }
189
+ export class Grants {
190
+ client;
191
+ constructor(client) {
192
+ this.client = client;
193
+ }
194
+ /**
195
+ /**
196
+ * Grant usage to a subject for an entitlement
197
+ *
198
+ * @param subjectIdOrKey - The ID or key of the subject
199
+ * @param entitlementIdOrFeatureKey - The ID or feature key of the entitlement
200
+ * @param grant - The grant to create
201
+ * @param signal - An optional abort signal
202
+ * @returns The created grant
203
+ */
204
+ async create(subjectIdOrKey, entitlementIdOrFeatureKey, grant, signal) {
205
+ const resp = await this.client.POST('/api/v1/subjects/{subjectIdOrKey}/entitlements/{entitlementIdOrFeatureKey}/grants', {
206
+ signal,
207
+ params: {
208
+ path: {
209
+ subjectIdOrKey,
210
+ entitlementIdOrFeatureKey,
211
+ },
212
+ },
213
+ body: grant,
214
+ });
215
+ return transformResponse(resp);
216
+ }
217
+ /**
218
+ * List grants for an entitlement
219
+ *
220
+ * @param subjectIdOrKey - The ID or key of the subject
221
+ * @param entitlementIdOrFeatureKey - The ID or feature key of the entitlement
222
+ * @param signal - An optional abort signal
223
+ * @returns The grants
224
+ */
225
+ async list(subjectIdOrKey, entitlementIdOrFeatureKey, query, signal) {
226
+ const resp = await this.client.GET('/api/v1/subjects/{subjectIdOrKey}/entitlements/{entitlementIdOrFeatureKey}/grants', {
227
+ signal,
228
+ params: {
229
+ path: {
230
+ subjectIdOrKey,
231
+ entitlementIdOrFeatureKey,
232
+ },
233
+ query,
234
+ },
235
+ });
236
+ return transformResponse(resp);
237
+ }
238
+ }
239
+ //# sourceMappingURL=entitlements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../../src/entitlements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import type { operations, paths } from './schemas.js';
2
+ import type { Client } from 'openapi-fetch';
3
+ /**
4
+ * Usage Event
5
+ */
6
+ export type Event = {
7
+ /**
8
+ * @description The version of the CloudEvents specification which the event uses.
9
+ * @example 1.0
10
+ */
11
+ specversion?: string;
12
+ /**
13
+ * @description Unique identifier for the event, defaults to uuid v4.
14
+ * @example "5c10fade-1c9e-4d6c-8275-c52c36731d3c"
15
+ */
16
+ id?: string;
17
+ /**
18
+ * Format: uri-reference
19
+ * @description Identifies the context in which an event happened, defaults to: @openmeter/sdk
20
+ * @example services/service-0
21
+ */
22
+ source?: string;
23
+ /**
24
+ * @description Describes the type of event related to the originating occurrence.
25
+ * @example "api_request"
26
+ */
27
+ type: string;
28
+ /**
29
+ * @description Describes the subject of the event in the context of the event producer (identified by source).
30
+ * @example "customer_id"
31
+ */
32
+ subject: string;
33
+ /**
34
+ * Format: date-time
35
+ * @description Date of when the occurrence happened.
36
+ * @example new Date('2023-01-01T01:01:01.001Z')
37
+ */
38
+ time?: Date;
39
+ /**
40
+ * Format: uri
41
+ * @description Identifies the schema that data adheres to.
42
+ */
43
+ dataschema?: string;
44
+ /**
45
+ * @description Content type of the data value. Must adhere to RFC 2046 format.
46
+ * @example application/json
47
+ * @enum {string|null}
48
+ */
49
+ datacontenttype?: 'application/json';
50
+ /**
51
+ * @description The event payload.
52
+ * @example {
53
+ * "duration_ms": "12",
54
+ * "path": "/hello"
55
+ * }
56
+ */
57
+ data: Record<string, unknown>;
58
+ };
59
+ /**
60
+ * Events are used to track usage of your product or service.
61
+ * Events are processed asynchronously by the meters, so they may not be immediately available for querying.
62
+ */
63
+ export declare class Events {
64
+ private client;
65
+ constructor(client: Client<paths, `${string}/${string}`>);
66
+ /**
67
+ * Ingests an event or batch of events
68
+ * @param events - The events to ingest
69
+ * @param signal - An optional abort signal
70
+ * @returns The ingested events
71
+ */
72
+ ingest(events: Event | Event[], signal?: AbortSignal): Promise<{
73
+ data?: never;
74
+ error: import("./utils.js").Problem;
75
+ response: Response;
76
+ } | {
77
+ data: undefined;
78
+ error?: never;
79
+ response: Response;
80
+ }>;
81
+ /**
82
+ * List ingested events
83
+ * @param query - The query parameters
84
+ * @param signal - An optional abort signal
85
+ * @returns The events
86
+ */
87
+ list(query?: operations['listEvents']['parameters']['query'], signal?: AbortSignal): Promise<{
88
+ data?: never;
89
+ error: import("./utils.js").Problem;
90
+ response: Response;
91
+ } | {
92
+ data: {
93
+ event: import("./schemas.js").components["schemas"]["Event"];
94
+ validationError?: string;
95
+ ingestedAt: Date;
96
+ storedAt: Date;
97
+ }[];
98
+ error?: never;
99
+ response: Response;
100
+ }>;
101
+ }
@@ -0,0 +1,58 @@
1
+ import crypto from 'crypto';
2
+ import { transformResponse } from './utils.js';
3
+ /**
4
+ * Events are used to track usage of your product or service.
5
+ * Events are processed asynchronously by the meters, so they may not be immediately available for querying.
6
+ */
7
+ export class Events {
8
+ client;
9
+ constructor(client) {
10
+ this.client = client;
11
+ }
12
+ /**
13
+ * Ingests an event or batch of events
14
+ * @param events - The events to ingest
15
+ * @param signal - An optional abort signal
16
+ * @returns The ingested events
17
+ */
18
+ async ingest(events, signal) {
19
+ const body = (Array.isArray(events) ? events : [events]).map(transformEvent);
20
+ const resp = await this.client.POST('/api/v1/events', {
21
+ signal,
22
+ body,
23
+ headers: {
24
+ 'Content-Type': 'application/cloudevents-batch+json',
25
+ },
26
+ });
27
+ return transformResponse(resp);
28
+ }
29
+ /**
30
+ * List ingested events
31
+ * @param query - The query parameters
32
+ * @param signal - An optional abort signal
33
+ * @returns The events
34
+ */
35
+ async list(query, signal) {
36
+ const resp = await this.client.GET('/api/v1/events', {
37
+ signal,
38
+ params: {
39
+ query,
40
+ },
41
+ });
42
+ return transformResponse(resp);
43
+ }
44
+ }
45
+ function transformEvent(ev) {
46
+ return {
47
+ specversion: ev.specversion ?? '1.0',
48
+ source: ev.source ?? '@openmeter/sdk',
49
+ id: ev.id ?? crypto.randomUUID(),
50
+ time: ev.time,
51
+ type: ev.type,
52
+ subject: ev.subject,
53
+ dataschema: ev.dataschema,
54
+ datacontenttype: ev.datacontenttype ?? 'application/json',
55
+ data: ev.data,
56
+ };
57
+ }
58
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AA6D9C;;;GAGG;AACH,MAAM,OAAO,MAAM;IACG;IAApB,YAAoB,MAA4C;QAA5C,WAAM,GAAN,MAAM,CAAsC;IAAG,CAAC;IAEpE;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,MAAuB,EAAE,MAAoB;QAC/D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAE5E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACpD,MAAM;YACN,IAAI;YACJ,OAAO,EAAE;gBACP,cAAc,EAAE,oCAAoC;aACrD;SACF,CAAC,CAAA;QAEF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,IAAI,CACf,KAAuD,EACvD,MAAoB;QAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE;YACnD,MAAM;YACN,MAAM,EAAE;gBACN,KAAK;aACN;SACF,CAAC,CAAA;QAEF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;CACF;AAED,SAAS,cAAc,CAAC,EAAS;IAC/B,OAAO;QACL,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,KAAK;QACpC,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,gBAAgB;QACrC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE;QAChC,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,eAAe,EAAE,EAAE,CAAC,eAAe,IAAI,kBAAkB;QACzD,IAAI,EAAE,EAAE,CAAC,IAAI;KACd,CAAA;AACH,CAAC"}
@@ -0,0 +1,153 @@
1
+ import type { FeatureCreateInputs, operations, paths } from './schemas.js';
2
+ import type { Client } from 'openapi-fetch';
3
+ /**
4
+ * Features
5
+ * @description Features are the building blocks of your application. They represent the capabilities or services that your application offers.
6
+ */
7
+ export declare class Features {
8
+ private client;
9
+ constructor(client: Client<paths, `${string}/${string}`>);
10
+ /**
11
+ * Create a feature
12
+ * @param feature - The feature to create
13
+ * @param signal - An optional abort signal
14
+ * @returns The created feature
15
+ */
16
+ create(feature: FeatureCreateInputs, signal?: AbortSignal): Promise<{
17
+ data?: never;
18
+ error: import("./utils.js").Problem;
19
+ response: Response;
20
+ } | {
21
+ data: {
22
+ readonly createdAt: Date;
23
+ readonly updatedAt: Date;
24
+ readonly deletedAt?: Date;
25
+ readonly archivedAt?: Date;
26
+ key: string;
27
+ name: string;
28
+ metadata?: import("./schemas.js").components["schemas"]["Metadata"];
29
+ meterSlug?: string;
30
+ meterGroupByFilters?: {
31
+ [key: string]: string;
32
+ };
33
+ readonly id: string;
34
+ };
35
+ error?: never;
36
+ response: Response;
37
+ }>;
38
+ /**
39
+ * Get a feature by ID
40
+ * @param id - The ID of the feature
41
+ * @param signal - An optional abort signal
42
+ * @returns The feature
43
+ */
44
+ get(id: operations['getFeature']['parameters']['path']['featureId'], signal?: AbortSignal): Promise<{
45
+ data?: never;
46
+ error: import("./utils.js").Problem;
47
+ response: Response;
48
+ } | {
49
+ data: {
50
+ readonly createdAt: Date;
51
+ readonly updatedAt: Date;
52
+ readonly deletedAt?: Date;
53
+ readonly archivedAt?: Date;
54
+ key: string;
55
+ name: string;
56
+ metadata?: import("./schemas.js").components["schemas"]["Metadata"];
57
+ meterSlug?: string;
58
+ meterGroupByFilters?: {
59
+ [key: string]: string;
60
+ };
61
+ readonly id: string;
62
+ };
63
+ error?: never;
64
+ response: Response;
65
+ }>;
66
+ /**
67
+ * List features
68
+ * @param query - The query parameters
69
+ * @param signal - An optional abort signal
70
+ * @returns The features
71
+ */
72
+ list(query?: operations['listFeatures']['parameters']['query'], signal?: AbortSignal): Promise<{
73
+ data?: never;
74
+ error: import("./utils.js").Problem;
75
+ response: Response;
76
+ } | {
77
+ data: import("openapi-typescript-helpers").SuccessResponse<{
78
+ 200: {
79
+ headers: {
80
+ [name: string]: unknown;
81
+ };
82
+ content: {
83
+ "application/json": import("./schemas.js").components["schemas"]["ListFeaturesResult"];
84
+ };
85
+ };
86
+ 400: {
87
+ headers: {
88
+ [name: string]: unknown;
89
+ };
90
+ content: {
91
+ "application/problem+json": import("./schemas.js").components["schemas"]["BadRequestProblemResponse"];
92
+ };
93
+ };
94
+ 401: {
95
+ headers: {
96
+ [name: string]: unknown;
97
+ };
98
+ content: {
99
+ "application/problem+json": import("./schemas.js").components["schemas"]["UnauthorizedProblemResponse"];
100
+ };
101
+ };
102
+ 403: {
103
+ headers: {
104
+ [name: string]: unknown;
105
+ };
106
+ content: {
107
+ "application/problem+json": import("./schemas.js").components["schemas"]["ForbiddenProblemResponse"];
108
+ };
109
+ };
110
+ 500: {
111
+ headers: {
112
+ [name: string]: unknown;
113
+ };
114
+ content: {
115
+ "application/problem+json": import("./schemas.js").components["schemas"]["InternalServerErrorProblemResponse"];
116
+ };
117
+ };
118
+ 503: {
119
+ headers: {
120
+ [name: string]: unknown;
121
+ };
122
+ content: {
123
+ "application/problem+json": import("./schemas.js").components["schemas"]["ServiceUnavailableProblemResponse"];
124
+ };
125
+ };
126
+ default: {
127
+ headers: {
128
+ [name: string]: unknown;
129
+ };
130
+ content: {
131
+ "application/problem+json": import("./schemas.js").components["schemas"]["UnexpectedProblemResponse"];
132
+ };
133
+ };
134
+ }, `${string}/${string}`>;
135
+ error?: never;
136
+ response: Response;
137
+ }>;
138
+ /**
139
+ * Delete a feature by ID
140
+ * @param id - The ID of the feature
141
+ * @param signal - An optional abort signal
142
+ * @returns The deleted feature
143
+ */
144
+ delete(id: operations['deleteFeature']['parameters']['path']['featureId'], signal?: AbortSignal): Promise<{
145
+ data?: never;
146
+ error: import("./utils.js").Problem;
147
+ response: Response;
148
+ } | {
149
+ data: undefined;
150
+ error?: never;
151
+ response: Response;
152
+ }>;
153
+ }
@@ -0,0 +1,74 @@
1
+ import { transformResponse } from './utils.js';
2
+ /**
3
+ * Features
4
+ * @description Features are the building blocks of your application. They represent the capabilities or services that your application offers.
5
+ */
6
+ export class Features {
7
+ client;
8
+ constructor(client) {
9
+ this.client = client;
10
+ }
11
+ /**
12
+ * Create a feature
13
+ * @param feature - The feature to create
14
+ * @param signal - An optional abort signal
15
+ * @returns The created feature
16
+ */
17
+ async create(feature, signal) {
18
+ const resp = await this.client.POST('/api/v1/features', {
19
+ signal,
20
+ body: feature,
21
+ });
22
+ return transformResponse(resp);
23
+ }
24
+ /**
25
+ * Get a feature by ID
26
+ * @param id - The ID of the feature
27
+ * @param signal - An optional abort signal
28
+ * @returns The feature
29
+ */
30
+ async get(id, signal) {
31
+ const resp = await this.client.GET('/api/v1/features/{featureId}', {
32
+ signal,
33
+ params: {
34
+ path: {
35
+ featureId: id,
36
+ },
37
+ },
38
+ });
39
+ return transformResponse(resp);
40
+ }
41
+ /**
42
+ * List features
43
+ * @param query - The query parameters
44
+ * @param signal - An optional abort signal
45
+ * @returns The features
46
+ */
47
+ async list(query, signal) {
48
+ const resp = await this.client.GET('/api/v1/features', {
49
+ signal,
50
+ params: {
51
+ query,
52
+ },
53
+ });
54
+ return transformResponse(resp);
55
+ }
56
+ /**
57
+ * Delete a feature by ID
58
+ * @param id - The ID of the feature
59
+ * @param signal - An optional abort signal
60
+ * @returns The deleted feature
61
+ */
62
+ async delete(id, signal) {
63
+ const resp = await this.client.DELETE('/api/v1/features/{featureId}', {
64
+ signal,
65
+ params: {
66
+ path: {
67
+ featureId: id,
68
+ },
69
+ },
70
+ });
71
+ return transformResponse(resp);
72
+ }
73
+ }
74
+ //# sourceMappingURL=features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAI9C;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACC;IAApB,YAAoB,MAA4C;QAA5C,WAAM,GAAN,MAAM,CAAsC;IAAG,CAAC;IAEpE;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,OAA4B,EAAE,MAAoB;QACpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACtD,MAAM;YACN,IAAI,EAAE,OAAO;SACd,CAAC,CAAA;QAEF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,GAAG,CACd,EAA+D,EAC/D,MAAoB;QAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,EAAE;YACjE,MAAM;YACN,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,SAAS,EAAE,EAAE;iBACd;aACF;SACF,CAAC,CAAA;QAEF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,IAAI,CACf,KAAyD,EACzD,MAAoB;QAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE;YACrD,MAAM;YACN,MAAM,EAAE;gBACN,KAAK;aACN;SACF,CAAC,CAAA;QAEF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CACjB,EAAkE,EAClE,MAAoB;QAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,8BAA8B,EAAE;YACpE,MAAM;YACN,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,SAAS,EAAE,EAAE;iBACd;aACF;SACF,CAAC,CAAA;QAEF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;CACF"}