tapimo 0.11.0 → 0.12.0
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/dist/App.d.ts +2296 -1010
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +2 -2
- package/dist/App.js.map +1 -1
- package/dist/Assets.d.ts +15 -0
- package/dist/Assets.d.ts.map +1 -1
- package/dist/Assets.js +7 -0
- package/dist/Assets.js.map +1 -1
- package/dist/admin/App.d.ts +53 -4
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +4 -4
- package/dist/admin/apps/earn-vaults.d.ts +114 -0
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
- package/dist/admin/apps/earn-vaults.js +59 -6
- package/dist/admin/apps/earn-vaults.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts.map +1 -1
- package/dist/admin/apps/organizations.js +4 -2
- package/dist/admin/apps/organizations.js.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +9 -9
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.d.ts.map +1 -1
- package/dist/admin/ui.generated.js +151 -151
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/apps/data/App.d.ts +1699 -749
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +56 -7
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/ZoneSelection.d.ts +62 -0
- package/dist/apps/data/ZoneSelection.d.ts.map +1 -0
- package/dist/apps/data/ZoneSelection.js +44 -0
- package/dist/apps/data/ZoneSelection.js.map +1 -0
- package/dist/apps/data/routes/activities.d.ts +2367 -4
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +368 -87
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +471 -340
- package/dist/apps/data/routes/addresses.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.d.ts +28 -28
- package/dist/apps/data/routes/balances.js +1 -1
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +4 -4
- package/dist/apps/data/routes/blocks.js +1 -1
- package/dist/apps/data/routes/blocks.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +176 -176
- package/dist/apps/data/routes/earn.d.ts +131 -6
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +157 -25
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts +825 -119
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +16 -13
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +9 -11
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +34 -34
- package/dist/apps/data/routes/receipts.d.ts +230 -230
- package/dist/apps/data/routes/receipts.js +1 -1
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/rpc.js +24 -10
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
- package/dist/apps/data/routes/tokenlist.js +16 -15
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +14 -0
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +34 -15
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.js +1 -1
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +7 -9
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/webhooks.d.ts +4 -4
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +2 -2
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +30 -30
- package/dist/apps/funding/App.d.ts +27 -27
- package/dist/apps/funding/routes/chains.d.ts.map +1 -1
- package/dist/apps/funding/routes/chains.js +5 -4
- package/dist/apps/funding/routes/chains.js.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.d.ts +16 -16
- package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.js +8 -8
- package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
- package/dist/apps/funding/routes/providers.d.ts +13 -13
- package/dist/apps/funding/routes/providers.d.ts.map +1 -1
- package/dist/apps/funding/routes/providers.js +3 -2
- package/dist/apps/funding/routes/providers.js.map +1 -1
- package/dist/apps/funding/routes/quotes.d.ts.map +1 -1
- package/dist/apps/funding/routes/quotes.js +2 -2
- package/dist/apps/funding/routes/quotes.js.map +1 -1
- package/dist/apps/management/App.d.ts +627 -293
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +19 -6
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +114 -54
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +76 -30
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +103 -30
- package/dist/apps/management/routes/billing.d.ts.map +1 -1
- package/dist/apps/management/routes/billing.js +91 -32
- package/dist/apps/management/routes/billing.js.map +1 -1
- package/dist/apps/management/routes/faucet.d.ts +33 -33
- package/dist/apps/management/routes/faucet.d.ts.map +1 -1
- package/dist/apps/management/routes/faucet.js +23 -12
- package/dist/apps/management/routes/faucet.js.map +1 -1
- package/dist/apps/management/routes/invitations.d.ts +46 -13
- package/dist/apps/management/routes/invitations.d.ts.map +1 -1
- package/dist/apps/management/routes/invitations.js +79 -29
- package/dist/apps/management/routes/invitations.js.map +1 -1
- package/dist/apps/management/routes/invite-links.d.ts +86 -41
- package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
- package/dist/apps/management/routes/invite-links.js +100 -41
- package/dist/apps/management/routes/invite-links.js.map +1 -1
- package/dist/apps/management/routes/me.d.ts +5 -5
- package/dist/apps/management/routes/me.d.ts.map +1 -1
- package/dist/apps/management/routes/me.js +14 -10
- package/dist/apps/management/routes/me.js.map +1 -1
- package/dist/apps/management/routes/members.d.ts +93 -72
- package/dist/apps/management/routes/members.d.ts.map +1 -1
- package/dist/apps/management/routes/members.js +37 -18
- package/dist/apps/management/routes/members.js.map +1 -1
- package/dist/apps/management/routes/orgs.d.ts +48 -8
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +48 -19
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +90 -28
- package/dist/apps/management/routes/projects.d.ts.map +1 -1
- package/dist/apps/management/routes/projects.js +72 -21
- package/dist/apps/management/routes/projects.js.map +1 -1
- package/dist/apps/management/routes/scopes.d.ts.map +1 -1
- package/dist/apps/management/routes/scopes.js +8 -5
- package/dist/apps/management/routes/scopes.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts +78 -78
- package/dist/apps/management/routes/usage.d.ts.map +1 -1
- package/dist/apps/management/routes/usage.js +41 -31
- package/dist/apps/management/routes/usage.js.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.d.ts +34 -6
- package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.js +36 -17
- package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
- package/dist/apps/management/routes/webhooks.d.ts +147 -130
- package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/management/routes/webhooks.js +80 -35
- package/dist/apps/management/routes/webhooks.js.map +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Adapter.js +12 -0
- package/dist/apps/mpp/internal/Adapter.js.map +1 -1
- package/dist/db/Db.d.ts +2 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +40 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +23 -1
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +19 -3
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/earnVaults.d.ts +5 -1
- package/dist/db/tables/earnVaults.d.ts.map +1 -1
- package/dist/db/tables/earnVaults.js +5 -0
- package/dist/db/tables/earnVaults.js.map +1 -1
- package/dist/db/tables/webhookDeliveries.d.ts.map +1 -1
- package/dist/db/tables/webhookDeliveries.js +10 -0
- package/dist/db/tables/webhookDeliveries.js.map +1 -1
- package/dist/db/tables/webhookQueueCompletions.d.ts +15 -0
- package/dist/db/tables/webhookQueueCompletions.d.ts.map +1 -0
- package/dist/db/tables/webhookQueueCompletions.js +32 -0
- package/dist/db/tables/webhookQueueCompletions.js.map +1 -0
- package/dist/db/tables/webhookQueueEvents.d.ts +14 -20
- package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -1
- package/dist/db/tables/webhookQueueEvents.js +68 -47
- package/dist/db/tables/webhookQueueEvents.js.map +1 -1
- package/dist/db/tables/webhookSubscriptions.d.ts +16 -5
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
- package/dist/db/tables/webhookSubscriptions.js +29 -5
- package/dist/db/tables/webhookSubscriptions.js.map +1 -1
- package/dist/internal/Auth.d.ts +8 -1
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +13 -3
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +11 -7
- package/dist/internal/Cache.js.map +1 -1
- package/dist/internal/EarnVaults.d.ts +41 -2
- package/dist/internal/EarnVaults.d.ts.map +1 -1
- package/dist/internal/EarnVaults.js +167 -0
- package/dist/internal/EarnVaults.js.map +1 -1
- package/dist/internal/OpenApi.d.ts +26 -22
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +128 -39
- package/dist/internal/OpenApi.js.map +1 -1
- package/dist/internal/Response.d.ts +13 -8
- package/dist/internal/Response.d.ts.map +1 -1
- package/dist/internal/Response.js +16 -5
- package/dist/internal/Response.js.map +1 -1
- package/dist/internal/Schema.d.ts +5 -7
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +6 -7
- package/dist/internal/Schema.js.map +1 -1
- package/dist/internal/Store.d.ts +15 -6
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +45 -15
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Tidx.d.ts +2 -0
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +16 -4
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Webhooks.d.ts +29 -12
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +37 -20
- package/dist/internal/Webhooks.js.map +1 -1
- package/dist/internal/funding/Deposit.d.ts +2 -2
- package/dist/internal/funding/Deposit.d.ts.map +1 -1
- package/dist/internal/funding/Deposit.js +9 -8
- package/dist/internal/funding/Deposit.js.map +1 -1
- package/dist/internal/funding/DepositAddress.d.ts +4 -4
- package/dist/internal/funding/DepositAddress.d.ts.map +1 -1
- package/dist/internal/funding/DepositAddress.js +9 -8
- package/dist/internal/funding/DepositAddress.js.map +1 -1
- package/dist/internal/funding/Provider.d.ts.map +1 -1
- package/dist/internal/funding/Provider.js +13 -12
- package/dist/internal/funding/Provider.js.map +1 -1
- package/dist/internal/funding/providers/stargate.d.ts +19 -0
- package/dist/internal/funding/providers/stargate.d.ts.map +1 -0
- package/dist/internal/funding/providers/stargate.js +143 -0
- package/dist/internal/funding/providers/stargate.js.map +1 -0
- package/dist/providers/index.d.ts +7 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +3 -0
- package/dist/providers/index.js.map +1 -1
- package/package.json +2 -2
- package/src/App.test.ts +48 -0
- package/src/App.ts +4 -2
- package/src/Assets.test.ts +18 -0
- package/src/Assets.ts +22 -0
- package/src/Client.test-d.ts +265 -16
- package/src/admin/apps/earn-vaults.test.ts +143 -0
- package/src/admin/apps/earn-vaults.ts +83 -6
- package/src/admin/apps/organizations.ts +6 -2
- package/src/admin/ui/src/routes/api-keys.tsx +36 -0
- package/src/admin/ui.generated.ts +151 -189
- package/src/apps/data/App.test.ts +31 -0
- package/src/apps/data/App.ts +56 -8
- package/src/apps/data/ZoneSelection.test.ts +196 -0
- package/src/apps/data/ZoneSelection.ts +108 -0
- package/src/apps/data/routes/activities.test.ts +328 -1
- package/src/apps/data/routes/activities.ts +498 -93
- package/src/apps/data/routes/balances.ts +1 -1
- package/src/apps/data/routes/blocks.ts +1 -1
- package/src/apps/data/routes/earn.test.ts +183 -23
- package/src/apps/data/routes/earn.ts +225 -29
- package/src/apps/data/routes/earn.zone-access.test.ts +46 -0
- package/src/apps/data/routes/exchanges.test.ts +31 -1
- package/src/apps/data/routes/exchanges.ts +19 -15
- package/src/apps/data/routes/fee-amm.ts +18 -11
- package/src/apps/data/routes/receipts.ts +1 -1
- package/src/apps/data/routes/rpc.test.ts +75 -0
- package/src/apps/data/routes/rpc.ts +23 -9
- package/src/apps/data/routes/tokenlist.ts +21 -18
- package/src/apps/data/routes/tokens.test.ts +29 -0
- package/src/apps/data/routes/tokens.ts +38 -15
- package/src/apps/data/routes/transactions.ts +1 -1
- package/src/apps/data/routes/transfers.test.ts +3 -3
- package/src/apps/data/routes/transfers.ts +12 -9
- package/src/apps/data/routes/webhooks.ts +6 -2
- package/src/apps/data/routes/zones.test.ts +19 -13
- package/src/apps/funding/routes/chains.test.ts +211 -7
- package/src/apps/funding/routes/chains.ts +19 -12
- package/src/apps/funding/routes/deposit-addresses.test.ts +394 -0
- package/src/apps/funding/routes/deposit-addresses.ts +84 -72
- package/src/apps/funding/routes/providers.ts +9 -5
- package/src/apps/funding/routes/quotes.test.ts +46 -0
- package/src/apps/funding/routes/quotes.ts +8 -5
- package/src/apps/funding/routes/transfers.test.ts +35 -32
- package/src/apps/management/Billing.test.ts +26 -0
- package/src/apps/management/Billing.ts +24 -7
- package/src/apps/management/routes/api-keys.test.ts +178 -0
- package/src/apps/management/routes/api-keys.ts +203 -144
- package/src/apps/management/routes/billing.test.ts +209 -0
- package/src/apps/management/routes/billing.ts +254 -177
- package/src/apps/management/routes/faucet.test.ts +39 -0
- package/src/apps/management/routes/faucet.ts +75 -41
- package/src/apps/management/routes/invitations.test.ts +216 -0
- package/src/apps/management/routes/invitations.ts +186 -109
- package/src/apps/management/routes/invite-links.test.ts +263 -1
- package/src/apps/management/routes/invite-links.ts +295 -214
- package/src/apps/management/routes/me.test.ts +49 -0
- package/src/apps/management/routes/me.ts +42 -32
- package/src/apps/management/routes/members.test.ts +124 -1
- package/src/apps/management/routes/members.ts +81 -51
- package/src/apps/management/routes/orgs.test.ts +176 -0
- package/src/apps/management/routes/orgs.ts +101 -59
- package/src/apps/management/routes/projects.test.ts +183 -0
- package/src/apps/management/routes/projects.ts +124 -60
- package/src/apps/management/routes/scopes.test.ts +44 -0
- package/src/apps/management/routes/scopes.ts +37 -28
- package/src/apps/management/routes/usage.test.ts +92 -0
- package/src/apps/management/routes/usage.ts +186 -151
- package/src/apps/management/routes/verified-token-requests.test.ts +114 -0
- package/src/apps/management/routes/verified-token-requests.ts +166 -133
- package/src/apps/management/routes/webhooks.test.ts +234 -0
- package/src/apps/management/routes/webhooks.ts +191 -78
- package/src/apps/mpp/internal/Adapter.ts +13 -1
- package/src/db/Db.test.ts +41 -0
- package/src/db/Db.ts +62 -0
- package/src/db/Schema.ts +28 -3
- package/src/db/tables/earnVaults.test.ts +22 -0
- package/src/db/tables/earnVaults.ts +11 -1
- package/src/db/tables/webhookDeliveries.ts +13 -0
- package/src/db/tables/webhookQueueCompletions.ts +55 -0
- package/src/db/tables/webhookQueueEvents.ts +95 -61
- package/src/db/tables/webhookSubscriptions.ts +45 -6
- package/src/internal/Auth.ts +23 -5
- package/src/internal/Cache.ts +14 -7
- package/src/internal/EarnVaults.capabilities.test.ts +33 -0
- package/src/internal/EarnVaults.test.ts +79 -0
- package/src/internal/EarnVaults.ts +277 -0
- package/src/internal/OpenApi.ts +165 -49
- package/src/internal/Response.test.ts +95 -0
- package/src/internal/Response.ts +40 -2
- package/src/internal/Schema.test.ts +16 -0
- package/src/internal/Schema.ts +7 -7
- package/src/internal/Store.test.ts +186 -0
- package/src/internal/Store.ts +57 -17
- package/src/internal/Tidx.test.ts +19 -0
- package/src/internal/Tidx.ts +16 -4
- package/src/internal/Webhooks.test.ts +122 -8
- package/src/internal/Webhooks.ts +59 -29
- package/src/internal/funding/Deposit.ts +71 -64
- package/src/internal/funding/DepositAddress.ts +50 -43
- package/src/internal/funding/Provider.ts +164 -142
- package/src/internal/funding/providers/index.test.ts +185 -0
- package/src/internal/funding/providers/stargate.ts +184 -0
- package/src/providers/index.test.ts +1 -0
- package/src/providers/index.ts +9 -0
|
@@ -19,28 +19,31 @@ export namespace schema {
|
|
|
19
19
|
/** Schemas for the getRequestUsage operation. */
|
|
20
20
|
export namespace getRequestUsage {
|
|
21
21
|
/** Usage grouped by API key. */
|
|
22
|
-
export const KeyBreakdown =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
export const KeyBreakdown = OpenApi.component(
|
|
23
|
+
z
|
|
24
|
+
.object({
|
|
25
|
+
apiKeyId: z
|
|
26
|
+
.string()
|
|
27
|
+
.check(
|
|
28
|
+
z.describe('API key id (`key_…`).'),
|
|
29
|
+
z.meta({ examples: ['key_1a2b3c4d5e6f7g8h9j0k1m2n'] }),
|
|
30
|
+
),
|
|
31
|
+
averageDurationMs: z
|
|
32
|
+
.number()
|
|
33
|
+
.check(
|
|
34
|
+
z.describe('Average request duration in milliseconds.'),
|
|
35
|
+
z.meta({ examples: [12.3] }),
|
|
36
|
+
),
|
|
37
|
+
errors: z
|
|
37
38
|
.number()
|
|
38
39
|
.check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [3] })), // prettier-ignore
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
requests: z
|
|
41
|
+
.number()
|
|
42
|
+
.check(z.int(), z.describe('Total requests.'), z.meta({ examples: [120] })),
|
|
43
|
+
})
|
|
44
|
+
.check(z.describe('Usage grouped by API key.')),
|
|
45
|
+
'RequestUsageByKey',
|
|
46
|
+
)
|
|
44
47
|
|
|
45
48
|
/** Path parameters addressing one organization's usage. */
|
|
46
49
|
export const Params = z
|
|
@@ -86,147 +89,165 @@ export namespace schema {
|
|
|
86
89
|
.check(z.describe('Query parameters for request usage.'))
|
|
87
90
|
|
|
88
91
|
/** Usage grouped by route. */
|
|
89
|
-
export const RouteBreakdown =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
export const RouteBreakdown = OpenApi.component(
|
|
93
|
+
z
|
|
94
|
+
.object({
|
|
95
|
+
averageDurationMs: z
|
|
96
|
+
.number()
|
|
97
|
+
.check(
|
|
98
|
+
z.describe('Average request duration in milliseconds.'),
|
|
99
|
+
z.meta({ examples: [18.2] }),
|
|
100
|
+
),
|
|
101
|
+
errors: z
|
|
98
102
|
.number()
|
|
99
103
|
.check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [2] })), // prettier-ignore
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
requests: z
|
|
105
|
+
.number()
|
|
106
|
+
.check(z.int(), z.describe('Total requests.'), z.meta({ examples: [80] })),
|
|
107
|
+
route: z
|
|
108
|
+
.string()
|
|
109
|
+
.check(
|
|
110
|
+
z.describe('Matched route pattern.'),
|
|
111
|
+
z.meta({ examples: ['/v1/transactions/:hash'] }),
|
|
112
|
+
),
|
|
113
|
+
})
|
|
114
|
+
.check(z.describe('Usage grouped by route.')),
|
|
115
|
+
'RequestUsageByRoute',
|
|
116
|
+
)
|
|
111
117
|
|
|
112
118
|
/** One usage series point. */
|
|
113
|
-
export const SeriesPoint =
|
|
114
|
-
|
|
115
|
-
|
|
119
|
+
export const SeriesPoint = OpenApi.component(
|
|
120
|
+
z
|
|
121
|
+
.object({
|
|
122
|
+
errors: z
|
|
116
123
|
.number()
|
|
117
124
|
.check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [1] })), // prettier-ignore
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
requests: z
|
|
126
|
+
.number()
|
|
127
|
+
.check(z.int(), z.describe('Total requests.'), z.meta({ examples: [40] })),
|
|
128
|
+
time: z.iso
|
|
129
|
+
.datetime()
|
|
130
|
+
.check(
|
|
131
|
+
z.describe('Bucket start timestamp (ISO 8601).'),
|
|
132
|
+
z.meta({ examples: ['2026-01-01T00:00:00.000Z'] }),
|
|
133
|
+
),
|
|
134
|
+
})
|
|
135
|
+
.check(z.describe('One usage series point.')),
|
|
136
|
+
'RequestUsageSeriesPoint',
|
|
137
|
+
)
|
|
129
138
|
|
|
130
139
|
/** Usage grouped by status code. */
|
|
131
|
-
export const StatusBreakdown =
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
140
|
+
export const StatusBreakdown = OpenApi.component(
|
|
141
|
+
z
|
|
142
|
+
.object({
|
|
143
|
+
requests: z
|
|
144
|
+
.number()
|
|
145
|
+
.check(z.int(), z.describe('Total requests.'), z.meta({ examples: [100] })),
|
|
146
|
+
status: z
|
|
147
|
+
.number()
|
|
148
|
+
.check(z.int(), z.describe('HTTP status code.'), z.meta({ examples: [200] })),
|
|
149
|
+
})
|
|
150
|
+
.check(z.describe('Usage grouped by status code.')),
|
|
151
|
+
'RequestUsageByStatus',
|
|
152
|
+
)
|
|
141
153
|
|
|
142
154
|
/** Overall usage totals. */
|
|
143
|
-
export const Totals =
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
155
|
+
export const Totals = OpenApi.component(
|
|
156
|
+
z
|
|
157
|
+
.object({
|
|
158
|
+
averageDurationMs: z
|
|
159
|
+
.number()
|
|
160
|
+
.check(
|
|
161
|
+
z.describe('Average request duration in milliseconds.'),
|
|
162
|
+
z.meta({ examples: [15.6] }),
|
|
163
|
+
),
|
|
164
|
+
errors: z
|
|
152
165
|
.number()
|
|
153
166
|
.check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [5] })), // prettier-ignore
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
167
|
+
requests: z
|
|
168
|
+
.number()
|
|
169
|
+
.check(z.int(), z.describe('Total requests.'), z.meta({ examples: [200] })),
|
|
170
|
+
})
|
|
171
|
+
.check(z.describe('Overall usage totals.')),
|
|
172
|
+
'RequestUsageTotals',
|
|
173
|
+
)
|
|
159
174
|
|
|
160
175
|
/** Request usage. */
|
|
161
|
-
export const Response =
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
176
|
+
export const Response = OpenApi.component(
|
|
177
|
+
Schema.describe(
|
|
178
|
+
z.object({
|
|
179
|
+
byKey: z.array(KeyBreakdown).check(z.describe('Usage grouped by API key.'), z.meta({ examples: [[]] })), // prettier-ignore
|
|
180
|
+
byRoute: z.array(RouteBreakdown).check(z.describe('Usage grouped by route.'), z.meta({ examples: [[]] })), // prettier-ignore
|
|
181
|
+
byStatus: z.array(StatusBreakdown).check(z.describe('Usage grouped by status code.'), z.meta({ examples: [[]] })), // prettier-ignore
|
|
182
|
+
from: z.iso
|
|
183
|
+
.datetime()
|
|
184
|
+
.check(
|
|
185
|
+
z.describe('Inclusive lower timestamp bound used for the read (ISO 8601).'),
|
|
186
|
+
z.meta({ examples: ['2026-01-01T00:00:00.000Z'] }),
|
|
187
|
+
),
|
|
188
|
+
interval: z
|
|
189
|
+
.enum(['day', 'hour'])
|
|
190
|
+
.check(
|
|
191
|
+
z.describe('Bucket size used for the time series.'),
|
|
192
|
+
z.meta({ examples: ['day'] }),
|
|
193
|
+
),
|
|
194
|
+
series: z.array(SeriesPoint).check(z.describe('Usage grouped into time buckets.'), z.meta({ examples: [[]] })), // prettier-ignore
|
|
195
|
+
to: z.iso
|
|
196
|
+
.datetime()
|
|
197
|
+
.check(
|
|
198
|
+
z.describe('Inclusive upper timestamp bound used for the read (ISO 8601).'),
|
|
199
|
+
z.meta({ examples: ['2026-01-31T23:59:59.000Z'] }),
|
|
200
|
+
),
|
|
201
|
+
totals: Totals,
|
|
202
|
+
}),
|
|
203
|
+
'Request usage.',
|
|
204
|
+
),
|
|
205
|
+
'RequestUsage',
|
|
188
206
|
)
|
|
189
207
|
}
|
|
190
208
|
|
|
191
209
|
/** Schemas for the getSponsorshipUsage operation. */
|
|
192
210
|
export namespace getSponsorshipUsage {
|
|
193
211
|
/** One time bucket of sponsorship usage. */
|
|
194
|
-
export const Bucket =
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
failed: z
|
|
203
|
-
.number()
|
|
204
|
-
.check(
|
|
205
|
-
z.describe('Sponsored transactions in the bucket whose status is `failed`.'),
|
|
206
|
-
z.meta({ examples: [3] }),
|
|
207
|
-
),
|
|
208
|
-
feeTotal: z
|
|
209
|
-
.object({
|
|
210
|
-
amount: z.string().check(
|
|
211
|
-
z.describe('Committed fees as a decimal string: finalized fees plus in-flight fee caps; failed rows contribute zero.'), // prettier-ignore
|
|
212
|
-
z.meta({ examples: ['12.34'] }),
|
|
212
|
+
export const Bucket = OpenApi.component(
|
|
213
|
+
Schema.describe(
|
|
214
|
+
z.object({
|
|
215
|
+
count: z
|
|
216
|
+
.number()
|
|
217
|
+
.check(
|
|
218
|
+
z.describe('Sponsored transactions recorded in the bucket, any status.'),
|
|
219
|
+
z.meta({ examples: [42] }),
|
|
213
220
|
),
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
221
|
+
failed: z
|
|
222
|
+
.number()
|
|
223
|
+
.check(
|
|
224
|
+
z.describe('Sponsored transactions in the bucket whose status is `failed`.'),
|
|
225
|
+
z.meta({ examples: [3] }),
|
|
226
|
+
),
|
|
227
|
+
feeTotal: z
|
|
228
|
+
.object({
|
|
229
|
+
amount: z.string().check(
|
|
230
|
+
z.describe('Committed fees as a decimal string: finalized fees plus in-flight fee caps; failed rows contribute zero.'), // prettier-ignore
|
|
231
|
+
z.meta({ examples: ['12.34'] }),
|
|
232
|
+
),
|
|
233
|
+
currency: z
|
|
234
|
+
.enum(BillingSettings.currencies)
|
|
235
|
+
.check(z.describe('Currency of the fee figure.'), z.meta({ examples: ['usd'] })),
|
|
236
|
+
})
|
|
237
|
+
.check(
|
|
238
|
+
z.describe('Committed fees for the bucket.'),
|
|
239
|
+
z.meta({ examples: [{ amount: '12.34', currency: 'usd' }] }),
|
|
240
|
+
),
|
|
241
|
+
timestamp: z.iso
|
|
242
|
+
.datetime()
|
|
243
|
+
.check(
|
|
244
|
+
z.describe('Bucket start (ISO 8601), aligned to UTC calendar boundaries.'),
|
|
245
|
+
z.meta({ examples: ['2026-01-01T00:00:00.000Z'] }),
|
|
246
|
+
),
|
|
247
|
+
}),
|
|
248
|
+
'One time bucket of sponsorship usage.',
|
|
249
|
+
),
|
|
250
|
+
'SponsorshipUsageBucket',
|
|
230
251
|
)
|
|
231
252
|
|
|
232
253
|
/** Path parameters addressing one organization's usage. */
|
|
@@ -278,15 +299,19 @@ export namespace schema {
|
|
|
278
299
|
.check(z.describe('Query parameters scoping the sponsorship usage series.'))
|
|
279
300
|
|
|
280
301
|
/** Sponsorship usage bucketed over time. */
|
|
281
|
-
export const Response =
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
302
|
+
export const Response = OpenApi.component(
|
|
303
|
+
Schema.describe(
|
|
304
|
+
z.object({
|
|
305
|
+
data: z
|
|
306
|
+
.array(Bucket)
|
|
307
|
+
.check(
|
|
308
|
+
z.describe('Time-ordered usage buckets; buckets with no sponsorships are omitted.'),
|
|
309
|
+
z.meta({ examples: [[]] }),
|
|
310
|
+
),
|
|
311
|
+
}),
|
|
312
|
+
'Sponsorship usage bucketed over time.',
|
|
313
|
+
),
|
|
314
|
+
'SponsorshipUsage',
|
|
290
315
|
)
|
|
291
316
|
}
|
|
292
317
|
}
|
|
@@ -310,7 +335,10 @@ export function usage() {
|
|
|
310
335
|
operationId: 'getRequestUsage',
|
|
311
336
|
responses: OpenApi.responses({
|
|
312
337
|
errors: {
|
|
313
|
-
400: {
|
|
338
|
+
400: {
|
|
339
|
+
codes: ['param_invalid', 'query_invalid'],
|
|
340
|
+
description: 'Malformed API key, invalid path, or invalid query.',
|
|
341
|
+
},
|
|
314
342
|
404: {
|
|
315
343
|
codes: ['organization_not_found'],
|
|
316
344
|
description: 'No accessible organization was found for this id.',
|
|
@@ -414,7 +442,14 @@ export function usage() {
|
|
|
414
442
|
operationId: 'getSponsorshipUsage',
|
|
415
443
|
responses: OpenApi.responses({
|
|
416
444
|
errors: {
|
|
417
|
-
|
|
445
|
+
400: {
|
|
446
|
+
codes: ['param_invalid', 'query_invalid'],
|
|
447
|
+
description: 'Malformed API key, invalid path, or invalid query.',
|
|
448
|
+
},
|
|
449
|
+
404: {
|
|
450
|
+
codes: ['organization_not_found'],
|
|
451
|
+
description: 'No accessible organization was found for this id.',
|
|
452
|
+
},
|
|
418
453
|
},
|
|
419
454
|
success: {
|
|
420
455
|
description: "The organization's sponsorship usage series.",
|
|
@@ -52,6 +52,120 @@ const token = {
|
|
|
52
52
|
symbol: 'tUSD',
|
|
53
53
|
} satisfies Partial<z.input<typeof schema.CreateBody>>
|
|
54
54
|
|
|
55
|
+
test('publishes generator-ready OpenAPI contracts', async () => {
|
|
56
|
+
const { app } = createApp()
|
|
57
|
+
const spec = await (await app.request('/openapi.json')).json()
|
|
58
|
+
const collection = spec.paths['/v1/orgs/{orgId}/verified-token-requests']
|
|
59
|
+
const detail = spec.paths['/v1/orgs/{orgId}/verified-token-requests/{requestId}'].delete
|
|
60
|
+
|
|
61
|
+
expect({
|
|
62
|
+
components: [
|
|
63
|
+
'CancelVerifiedTokenRequestResponse',
|
|
64
|
+
'CreateVerifiedTokenRequestInput',
|
|
65
|
+
'VerifiedTokenRequest',
|
|
66
|
+
'VerifiedTokenRequestList',
|
|
67
|
+
].filter((name) => spec.components.schemas[name]),
|
|
68
|
+
create: {
|
|
69
|
+
errors: {
|
|
70
|
+
400: collection.post.responses[400].content['application/json'].schema,
|
|
71
|
+
404: collection.post.responses[404].content['application/json'].schema,
|
|
72
|
+
409: collection.post.responses[409].content['application/json'].schema,
|
|
73
|
+
},
|
|
74
|
+
operationId: collection.post.operationId,
|
|
75
|
+
request: collection.post.requestBody.content['application/json'].schema,
|
|
76
|
+
response: collection.post.responses[200].content['application/json'].schema,
|
|
77
|
+
},
|
|
78
|
+
delete: {
|
|
79
|
+
errors: {
|
|
80
|
+
400: detail.responses[400].content['application/json'].schema,
|
|
81
|
+
404: detail.responses[404].content['application/json'].schema,
|
|
82
|
+
409: detail.responses[409].content['application/json'].schema,
|
|
83
|
+
},
|
|
84
|
+
operationId: detail.operationId,
|
|
85
|
+
response: detail.responses[200].content['application/json'].schema,
|
|
86
|
+
},
|
|
87
|
+
list: {
|
|
88
|
+
errors: {
|
|
89
|
+
400: collection.get.responses[400].content['application/json'].schema,
|
|
90
|
+
404: collection.get.responses[404].content['application/json'].schema,
|
|
91
|
+
},
|
|
92
|
+
operationId: collection.get.operationId,
|
|
93
|
+
response: collection.get.responses[200].content['application/json'].schema,
|
|
94
|
+
},
|
|
95
|
+
timestamps: {
|
|
96
|
+
createdAt: spec.components.schemas.VerifiedTokenRequest.properties.createdAt.format,
|
|
97
|
+
reviewedAt:
|
|
98
|
+
spec.components.schemas.VerifiedTokenRequest.properties.reviewedAt.anyOf[0].format,
|
|
99
|
+
updatedAt: spec.components.schemas.VerifiedTokenRequest.properties.updatedAt.format,
|
|
100
|
+
},
|
|
101
|
+
}).toMatchInlineSnapshot(`
|
|
102
|
+
{
|
|
103
|
+
"components": [
|
|
104
|
+
"CancelVerifiedTokenRequestResponse",
|
|
105
|
+
"CreateVerifiedTokenRequestInput",
|
|
106
|
+
"VerifiedTokenRequest",
|
|
107
|
+
"VerifiedTokenRequestList",
|
|
108
|
+
],
|
|
109
|
+
"create": {
|
|
110
|
+
"errors": {
|
|
111
|
+
"400": {
|
|
112
|
+
"$ref": "#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError",
|
|
113
|
+
},
|
|
114
|
+
"404": {
|
|
115
|
+
"$ref": "#/components/schemas/OrganizationNotFoundError",
|
|
116
|
+
},
|
|
117
|
+
"409": {
|
|
118
|
+
"$ref": "#/components/schemas/RequestLimitReachedOrRequestPendingExistsOrVerifiedSymbolExistsOrVerifiedTokenExistsError",
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
"operationId": "createVerifiedTokenRequest",
|
|
122
|
+
"request": {
|
|
123
|
+
"$ref": "#/components/schemas/CreateVerifiedTokenRequestInput",
|
|
124
|
+
},
|
|
125
|
+
"response": {
|
|
126
|
+
"$ref": "#/components/schemas/VerifiedTokenRequest",
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
"delete": {
|
|
130
|
+
"errors": {
|
|
131
|
+
"400": {
|
|
132
|
+
"$ref": "#/components/schemas/ApiKeyMalformedOrParamInvalidError",
|
|
133
|
+
},
|
|
134
|
+
"404": {
|
|
135
|
+
"$ref": "#/components/schemas/OrganizationNotFoundOrVerifiedTokenRequestNotFoundError",
|
|
136
|
+
},
|
|
137
|
+
"409": {
|
|
138
|
+
"$ref": "#/components/schemas/RequestNotPendingError",
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
"operationId": "cancelVerifiedTokenRequest",
|
|
142
|
+
"response": {
|
|
143
|
+
"$ref": "#/components/schemas/CancelVerifiedTokenRequestResponse",
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
"list": {
|
|
147
|
+
"errors": {
|
|
148
|
+
"400": {
|
|
149
|
+
"$ref": "#/components/schemas/ApiKeyMalformedOrParamInvalidError",
|
|
150
|
+
},
|
|
151
|
+
"404": {
|
|
152
|
+
"$ref": "#/components/schemas/OrganizationNotFoundError",
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
"operationId": "listVerifiedTokenRequests",
|
|
156
|
+
"response": {
|
|
157
|
+
"$ref": "#/components/schemas/VerifiedTokenRequestList",
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
"timestamps": {
|
|
161
|
+
"createdAt": "date-time",
|
|
162
|
+
"reviewedAt": "date-time",
|
|
163
|
+
"updatedAt": "date-time",
|
|
164
|
+
},
|
|
165
|
+
}
|
|
166
|
+
`)
|
|
167
|
+
})
|
|
168
|
+
|
|
55
169
|
describe('POST /v1/orgs/:orgId/verified-token-requests', () => {
|
|
56
170
|
test('members submit requests', async () => {
|
|
57
171
|
const db = TestApp.database()
|