@reclaimprotocol/client 0.1.0 → 0.1.1
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 +37 -35
- package/lib/enckeys.d.ts +38 -31
- package/lib/enckeys.js +88 -13
- package/lib/encoding.d.ts +5 -0
- package/lib/encoding.js +19 -3
- package/lib/index.d.ts +3 -3
- package/lib/index.js +2 -2
- package/lib/keypair.d.ts +3 -2
- package/lib/keypair.js +15 -1
- package/lib/reclaim.d.ts +35 -32
- package/lib/reclaim.js +19 -15
- package/lib/result.d.ts +20 -16
- package/lib/result.js +68 -54
- package/lib/routes.gen.d.ts +48 -12
- package/lib/routes.gen.js +13 -4
- package/lib/secp.d.ts +1 -2
- package/lib/secp.js +1 -1
- package/lib/types/openapi.d.ts +2 -2
- package/lib/types/openapi.gen.d.ts +711 -122
- package/package.json +7 -2
- package/src/enckeys.ts +114 -35
- package/src/encoding.ts +21 -3
- package/src/index.ts +6 -3
- package/src/keypair.ts +20 -3
- package/src/reclaim.ts +54 -51
- package/src/result.ts +86 -65
- package/src/routes.gen.ts +13 -4
- package/src/secp.ts +1 -1
- package/src/types/openapi.gen.ts +711 -122
- package/src/types/openapi.ts +2 -2
package/src/types/openapi.gen.ts
CHANGED
|
@@ -31,7 +31,10 @@ export interface paths {
|
|
|
31
31
|
path?: never;
|
|
32
32
|
cookie?: never;
|
|
33
33
|
};
|
|
34
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Discover home — search a website to verify
|
|
36
|
+
* @description Default home page. A website-first search: the visitor types a website and picks one to continue to `/site/{domain}`, where they choose what data to prove. Renders popular websites below the search.
|
|
37
|
+
*/
|
|
35
38
|
get: operations["Index"];
|
|
36
39
|
put?: never;
|
|
37
40
|
post?: never;
|
|
@@ -102,6 +105,150 @@ export interface paths {
|
|
|
102
105
|
patch?: never;
|
|
103
106
|
trace?: never;
|
|
104
107
|
};
|
|
108
|
+
"/discover/websites": {
|
|
109
|
+
parameters: {
|
|
110
|
+
query?: never;
|
|
111
|
+
header?: never;
|
|
112
|
+
path?: never;
|
|
113
|
+
cookie?: never;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Suggest websites for the Discover flow
|
|
117
|
+
* @description Website-first autocomplete that backs the Discover home page (`/`). Returns the distinct websites (one entry per domain) that have at least one verification the caller can see, ranked by relevance to `q`. Each entry carries the aggregated list of data points provable for that website. With no `q`, returns popular websites (most verifications first).
|
|
118
|
+
*
|
|
119
|
+
* HTML / HTMX callers receive a fragment list (swapped into the search dropdown); JSON / SDK callers receive the suggestions document.
|
|
120
|
+
*/
|
|
121
|
+
get: operations["DiscoverWebsites"];
|
|
122
|
+
put?: never;
|
|
123
|
+
post?: never;
|
|
124
|
+
delete?: never;
|
|
125
|
+
options?: never;
|
|
126
|
+
head?: never;
|
|
127
|
+
patch?: never;
|
|
128
|
+
trace?: never;
|
|
129
|
+
};
|
|
130
|
+
"/site/{domain}": {
|
|
131
|
+
parameters: {
|
|
132
|
+
query?: never;
|
|
133
|
+
header?: never;
|
|
134
|
+
path?: never;
|
|
135
|
+
cookie?: never;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Website landing & data-point selection page
|
|
139
|
+
* @description SEO landing page for a website, and the data-point selection step of the Discover flow. Lists every data point Reclaim can currently prove for `{domain}` (aggregated across all verifications the caller can see) so a visitor can pick what to verify and continue. Organic search traffic ("verify github username") and the in-app `/` → website-select flow converge on this single canonical URL.
|
|
140
|
+
*
|
|
141
|
+
* HTML callers receive the full page; when `q` is present and the request is an HTMX request, only the filtered data-point list fragment is returned. JSON / SDK callers receive the website's data points as a document.
|
|
142
|
+
*/
|
|
143
|
+
get: operations["SitePage"];
|
|
144
|
+
put?: never;
|
|
145
|
+
post?: never;
|
|
146
|
+
delete?: never;
|
|
147
|
+
options?: never;
|
|
148
|
+
head?: never;
|
|
149
|
+
patch?: never;
|
|
150
|
+
trace?: never;
|
|
151
|
+
};
|
|
152
|
+
"/site/{domain}/panel": {
|
|
153
|
+
parameters: {
|
|
154
|
+
query?: never;
|
|
155
|
+
header?: never;
|
|
156
|
+
path?: never;
|
|
157
|
+
cookie?: never;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Discover summary panel fragment (htmx)
|
|
161
|
+
* @description HTMX-only fragment for the Discover site page. The data-point form fires this on every selection change (checkbox / mode / source pin), carrying the whole selection in the query string. Returns the summary panel aside (the swap target) plus an out-of-band swap of the Advanced source picker.
|
|
162
|
+
*/
|
|
163
|
+
get: operations["SitePanel"];
|
|
164
|
+
put?: never;
|
|
165
|
+
post?: never;
|
|
166
|
+
delete?: never;
|
|
167
|
+
options?: never;
|
|
168
|
+
head?: never;
|
|
169
|
+
patch?: never;
|
|
170
|
+
trace?: never;
|
|
171
|
+
};
|
|
172
|
+
"/site/{domain}/build": {
|
|
173
|
+
parameters: {
|
|
174
|
+
query?: never;
|
|
175
|
+
header?: never;
|
|
176
|
+
path?: never;
|
|
177
|
+
cookie?: never;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Build page — providers, try, and integration guide for a selection
|
|
181
|
+
* @description The step after data-point selection on `/site/{domain}`. Given the selected data points (plus optional pinned sources, provided values, and a resolution `mode`), shows which existing verification providers cover the selection, a member-only "Try verification" action, and a ready-to-paste integration guide. The whole selection travels in the query string so the page is server-rendered and back-navigable.
|
|
182
|
+
*/
|
|
183
|
+
get: operations["SiteBuild"];
|
|
184
|
+
put?: never;
|
|
185
|
+
post?: never;
|
|
186
|
+
delete?: never;
|
|
187
|
+
options?: never;
|
|
188
|
+
head?: never;
|
|
189
|
+
patch?: never;
|
|
190
|
+
trace?: never;
|
|
191
|
+
};
|
|
192
|
+
"/site/{domain}/try": {
|
|
193
|
+
parameters: {
|
|
194
|
+
query?: never;
|
|
195
|
+
header?: never;
|
|
196
|
+
path?: never;
|
|
197
|
+
cookie?: never;
|
|
198
|
+
};
|
|
199
|
+
get?: never;
|
|
200
|
+
put?: never;
|
|
201
|
+
/**
|
|
202
|
+
* Mint a SANDBOX test verification session for the selection
|
|
203
|
+
* @description Creates a real SANDBOX verification session under the signed-in member's personal organization for the selected data points, so they can test the flow on `/v/{sessionId}` without registering a callback subscription. Requires a signed-in member (session cookie); the provider set is recomputed server-side from the selection.
|
|
204
|
+
*/
|
|
205
|
+
post: operations["SiteBuildTry"];
|
|
206
|
+
delete?: never;
|
|
207
|
+
options?: never;
|
|
208
|
+
head?: never;
|
|
209
|
+
patch?: never;
|
|
210
|
+
trace?: never;
|
|
211
|
+
};
|
|
212
|
+
"/discover/teach": {
|
|
213
|
+
parameters: {
|
|
214
|
+
query?: never;
|
|
215
|
+
header?: never;
|
|
216
|
+
path?: never;
|
|
217
|
+
cookie?: never;
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* “Teach our agent” instructions for a missing website / data point
|
|
221
|
+
* @description Returns the "Teach our agent" panel shown when a website or data point a user wants does not exist yet: steps to install the Reclaim MCP server plus a ready-to-copy prompt, templated with the requested `domain` and (optionally) `dataPoint`, that instructs an agent to author the missing verification. HTML / HTMX only (a dialog fragment).
|
|
222
|
+
*/
|
|
223
|
+
get: operations["DiscoverTeachAgent"];
|
|
224
|
+
put?: never;
|
|
225
|
+
post?: never;
|
|
226
|
+
delete?: never;
|
|
227
|
+
options?: never;
|
|
228
|
+
head?: never;
|
|
229
|
+
patch?: never;
|
|
230
|
+
trace?: never;
|
|
231
|
+
};
|
|
232
|
+
"/discover/resolve": {
|
|
233
|
+
parameters: {
|
|
234
|
+
query?: never;
|
|
235
|
+
header?: never;
|
|
236
|
+
path?: never;
|
|
237
|
+
cookie?: never;
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* Resolve existing providers covering selected data points
|
|
241
|
+
* @description The "resolve" step behind the Discover CTAs. Given a website and the data points the user picked, returns the existing verifications on that domain whose data points COVER the whole selection (smallest / most specific first), so a caller can reuse one instead of building a new verification. When nothing covers the selection, `needsCreation` is `true` — synthesising a new provider by stitching is a later stage. JSON only.
|
|
242
|
+
*/
|
|
243
|
+
get: operations["DiscoverResolve"];
|
|
244
|
+
put?: never;
|
|
245
|
+
post?: never;
|
|
246
|
+
delete?: never;
|
|
247
|
+
options?: never;
|
|
248
|
+
head?: never;
|
|
249
|
+
patch?: never;
|
|
250
|
+
trace?: never;
|
|
251
|
+
};
|
|
105
252
|
"/providers/{providerId}/preview.png": {
|
|
106
253
|
parameters: {
|
|
107
254
|
query?: never;
|
|
@@ -393,6 +540,26 @@ export interface paths {
|
|
|
393
540
|
patch?: never;
|
|
394
541
|
trace?: never;
|
|
395
542
|
};
|
|
543
|
+
"/v/{sessionId}/dispose": {
|
|
544
|
+
parameters: {
|
|
545
|
+
query?: never;
|
|
546
|
+
header?: never;
|
|
547
|
+
path?: never;
|
|
548
|
+
cookie?: never;
|
|
549
|
+
};
|
|
550
|
+
get?: never;
|
|
551
|
+
put?: never;
|
|
552
|
+
/**
|
|
553
|
+
* Dispose the session's remote browser
|
|
554
|
+
* @description Tears down the Popcorn remote-browser session backing this verification and cancels any in-flight run. Called by the verification page's "close" button (and safe to call after a session is already terminal — the dispose is idempotent). Popcorn sessions are a scarce, expensive resource, so freeing them promptly rather than waiting for their TTL matters. Same model as the status fragment: possession of the session id; no body.
|
|
555
|
+
*/
|
|
556
|
+
post: operations["DisposeVerificationSession"];
|
|
557
|
+
delete?: never;
|
|
558
|
+
options?: never;
|
|
559
|
+
head?: never;
|
|
560
|
+
patch?: never;
|
|
561
|
+
trace?: never;
|
|
562
|
+
};
|
|
396
563
|
"/v/{sessionId}/sse": {
|
|
397
564
|
parameters: {
|
|
398
565
|
query?: never;
|
|
@@ -564,8 +731,7 @@ export interface paths {
|
|
|
564
731
|
delete?: never;
|
|
565
732
|
options?: never;
|
|
566
733
|
head?: never;
|
|
567
|
-
|
|
568
|
-
patch: operations["UpdateMe"];
|
|
734
|
+
patch?: never;
|
|
569
735
|
trace?: never;
|
|
570
736
|
};
|
|
571
737
|
"/users/{userId}": {
|
|
@@ -641,7 +807,11 @@ export interface paths {
|
|
|
641
807
|
path?: never;
|
|
642
808
|
cookie?: never;
|
|
643
809
|
};
|
|
644
|
-
|
|
810
|
+
/**
|
|
811
|
+
* List organization members, optionally filtered by email
|
|
812
|
+
* @description Returns the organization's members, optionally filtered by an email substring (`q`). Renders the members-list fragment for the org page's live filter; same visibility as the org page.
|
|
813
|
+
*/
|
|
814
|
+
get: operations["SearchOrgMembers"];
|
|
645
815
|
put?: never;
|
|
646
816
|
/**
|
|
647
817
|
* Invite a member to an organization
|
|
@@ -739,7 +909,7 @@ export interface paths {
|
|
|
739
909
|
patch: operations["UpdateTheme"];
|
|
740
910
|
trace?: never;
|
|
741
911
|
};
|
|
742
|
-
"/orgs/{orgId}/
|
|
912
|
+
"/orgs/{orgId}/keypair": {
|
|
743
913
|
parameters: {
|
|
744
914
|
query?: never;
|
|
745
915
|
header?: never;
|
|
@@ -747,21 +917,21 @@ export interface paths {
|
|
|
747
917
|
cookie?: never;
|
|
748
918
|
};
|
|
749
919
|
/**
|
|
750
|
-
* Get the organization's encryption
|
|
751
|
-
* @description Returns the organization's single
|
|
920
|
+
* Get the organization's encryption keypair
|
|
921
|
+
* @description Returns the organization's single Ethereum (secp256k1) encryption keypair — its public JWK, derived eth address, and `canEncryptResult` flag — or `404` when none is set (the org is keyless ⇒ plaintext delivery). Authenticated by the org's `OrgToken` or a human `BearerAuth` session for an active member of the org.
|
|
752
922
|
*/
|
|
753
|
-
get: operations["
|
|
923
|
+
get: operations["GetOrgKeypair"];
|
|
754
924
|
/**
|
|
755
|
-
* Set (or
|
|
756
|
-
* @description Upserts the organization's single
|
|
925
|
+
* Set (or rotate) the organization's encryption keypair
|
|
926
|
+
* @description Upserts the organization's single Ethereum (secp256k1) encryption keypair. The body carries the org's **eth public key** — as an uncompressed hex string (`0x04`+128 hex) or a secp256k1 public JWK (`{kty:'EC', crv:'secp256k1', x, y}`) — and `canEncryptResult`. The matching private key never leaves the consumer. Setting overwrites the single row (and creates it for a keyless org). When `canEncryptResult` is true, terminal results are delivered as an ECIES ciphertext encrypted to this key; otherwise plaintext. Authenticated by the org's `OrgToken` or a human `BearerAuth` session for an active member of the org.
|
|
757
927
|
*/
|
|
758
|
-
put: operations["
|
|
928
|
+
put: operations["SetOrgKeypair"];
|
|
759
929
|
post?: never;
|
|
760
930
|
/**
|
|
761
|
-
* Clear the organization's encryption
|
|
762
|
-
* @description Removes the organization's encryption
|
|
931
|
+
* Clear the organization's encryption keypair
|
|
932
|
+
* @description Removes the organization's encryption keypair (the org reverts to keyless ⇒ plaintext delivery, and loses its eth identity address) until a new keypair is set. Authenticated by the org's `OrgToken` or a human `BearerAuth` session for an active member of the org.
|
|
763
933
|
*/
|
|
764
|
-
delete: operations["
|
|
934
|
+
delete: operations["DeleteOrgKeypair"];
|
|
765
935
|
options?: never;
|
|
766
936
|
head?: never;
|
|
767
937
|
patch?: never;
|
|
@@ -879,6 +1049,26 @@ export interface paths {
|
|
|
879
1049
|
patch?: never;
|
|
880
1050
|
trace?: never;
|
|
881
1051
|
};
|
|
1052
|
+
"/attach": {
|
|
1053
|
+
parameters: {
|
|
1054
|
+
query?: never;
|
|
1055
|
+
header?: never;
|
|
1056
|
+
path?: never;
|
|
1057
|
+
cookie?: never;
|
|
1058
|
+
};
|
|
1059
|
+
/**
|
|
1060
|
+
* Device-pairing landing page
|
|
1061
|
+
* @description Page where a user enters the 5-character pairing code shown by their CLI / MCP. Submitting the form (`?code=`) redirects to the canonical `/attach/{code}` page; an invalid code re-renders the form with an error.
|
|
1062
|
+
*/
|
|
1063
|
+
get: operations["AttachLanding"];
|
|
1064
|
+
put?: never;
|
|
1065
|
+
post?: never;
|
|
1066
|
+
delete?: never;
|
|
1067
|
+
options?: never;
|
|
1068
|
+
head?: never;
|
|
1069
|
+
patch?: never;
|
|
1070
|
+
trace?: never;
|
|
1071
|
+
};
|
|
882
1072
|
"/attach/{code}": {
|
|
883
1073
|
parameters: {
|
|
884
1074
|
query?: never;
|
|
@@ -1195,9 +1385,9 @@ export interface paths {
|
|
|
1195
1385
|
* the presented `OrgToken` resolves to. The body is just `callbackUrl`
|
|
1196
1386
|
* and `events`. At least one subscription must exist for the org before a
|
|
1197
1387
|
* verification session can be created. Delivery is scoped by org: terminal
|
|
1198
|
-
* results are encrypted
|
|
1199
|
-
*
|
|
1200
|
-
* as plaintext.
|
|
1388
|
+
* results are ECIES-encrypted to the org's eth public key when its
|
|
1389
|
+
* `canEncryptResult` is enabled (see `PUT /orgs/{orgId}/keypair`), else
|
|
1390
|
+
* delivered as plaintext.
|
|
1201
1391
|
*/
|
|
1202
1392
|
post: operations["CreateCallbackSubscription"];
|
|
1203
1393
|
delete?: never;
|
|
@@ -1391,8 +1581,8 @@ export interface paths {
|
|
|
1391
1581
|
cookie?: never;
|
|
1392
1582
|
};
|
|
1393
1583
|
/**
|
|
1394
|
-
* Get the resolved provider
|
|
1395
|
-
* @description Returns the resolved provider
|
|
1584
|
+
* Get the resolved provider recipes for a session
|
|
1585
|
+
* @description Returns the session's resolved provider versions' recipes (`initialUrl` + `requests` per provider), in run order — what the Verification Client needs to run the session (each provider sequentially in one browser session). Authorized for the Verification Client (`X-VC-Token` service token) or the session creator (authenticated by the consumer's `OrgToken`; the resolved org must match the session), so it works regardless of the provider's visibility (unlike `GetProvider`, which 404s on PRIVATE providers for non-members).
|
|
1396
1586
|
*/
|
|
1397
1587
|
get: operations["GetVerificationRecipe"];
|
|
1398
1588
|
put?: never;
|
|
@@ -1501,7 +1691,7 @@ export interface paths {
|
|
|
1501
1691
|
};
|
|
1502
1692
|
/**
|
|
1503
1693
|
* List callback encryption keys for a session
|
|
1504
|
-
* @description Used by the Verification Client (X-VC-Token) after the terminal event: returns the session org's callback subscriptions that subscribe to that terminal event. Each item carries the org's `publicKeyJwk` (
|
|
1694
|
+
* @description Used by the Verification Client (X-VC-Token) after the terminal event: returns the session org's callback subscriptions that subscribe to that terminal event. Each item carries the org's `publicKeyJwk` (secp256k1) to ECIES-encrypt the result to when the org's `canEncryptResult` is enabled, or none (deliver plaintext).
|
|
1505
1695
|
*/
|
|
1506
1696
|
get: operations["ListSessionCallbackKeys"];
|
|
1507
1697
|
put?: never;
|
|
@@ -1527,7 +1717,7 @@ export interface paths {
|
|
|
1527
1717
|
put?: never;
|
|
1528
1718
|
/**
|
|
1529
1719
|
* Submit the signed, encrypted verification result
|
|
1530
|
-
* @description Used by the Verification Client (X-VC-Token) to submit the result after a terminal event. The VC signs the JWS and
|
|
1720
|
+
* @description Used by the Verification Client (X-VC-Token) to submit the result after a terminal event. The VC signs the JWS and, when the org's `canEncryptResult` is enabled, ECIES-encrypts it to the org's eth public key (from the callback-keys endpoint); it submits one payload per subscription. The Builder stores each payload, enqueues it for the delivery worker (retry → DLQ), and never sees the plaintext. The Verification Client does not contact the Consumer.
|
|
1531
1721
|
*/
|
|
1532
1722
|
post: operations["SubmitVerificationResult"];
|
|
1533
1723
|
delete?: never;
|
|
@@ -1618,18 +1808,18 @@ export interface webhooks {
|
|
|
1618
1808
|
* `timestamp` are *plaintext routing hints* so the consumer can
|
|
1619
1809
|
* route and dedupe before doing any crypto. Everything derived
|
|
1620
1810
|
* from the end-user (claims, extracted parameters, proofs,
|
|
1621
|
-
* context) is inside `data`:
|
|
1622
|
-
* result when the org
|
|
1811
|
+
* context) is inside `data`: an ECIES ciphertext wrapping the signed JWS
|
|
1812
|
+
* result when the org's `canEncryptResult` is enabled, else the
|
|
1623
1813
|
* plaintext signed JWS. The envelope is **not authenticated** —
|
|
1624
1814
|
* act only on the decrypted and signature-verified JWS contents,
|
|
1625
1815
|
* and check that its `reclaimSessionId` matches the session you
|
|
1626
1816
|
* expect.
|
|
1627
1817
|
*
|
|
1628
|
-
* **Decrypting `data`.** When the org
|
|
1629
|
-
*
|
|
1630
|
-
*
|
|
1631
|
-
*
|
|
1632
|
-
*
|
|
1818
|
+
* **Decrypting `data`.** When the org's `canEncryptResult` is enabled,
|
|
1819
|
+
* `data` is an ECIES ciphertext (base64url, secp256k1 + AES-256-GCM);
|
|
1820
|
+
* decrypt it with the matching eth private key to recover the inner
|
|
1821
|
+
* JWS. When the org is keyless or the flag is off, `data` is the JWS
|
|
1822
|
+
* directly.
|
|
1633
1823
|
* The JWS is an RFC 7515 result in General JSON serialization
|
|
1634
1824
|
* (`alg: ES256K`); verify it against
|
|
1635
1825
|
* `GET /.well-known/jwks.json` (`kid` = the signer's ETH address).
|
|
@@ -1856,8 +2046,8 @@ export interface components {
|
|
|
1856
2046
|
providers?: components["schemas"]["ProviderListItem"][];
|
|
1857
2047
|
/** @description Themes owned by this organization. */
|
|
1858
2048
|
themes?: components["schemas"]["Theme"][];
|
|
1859
|
-
/** @description The organization's single
|
|
1860
|
-
|
|
2049
|
+
/** @description The organization's single Ethereum (secp256k1) encryption keypair, if set. Only populated on the org-detail endpoint and only visible to active members. Absent ⇒ the org is keyless and results are delivered as plaintext. */
|
|
2050
|
+
keypair?: components["schemas"]["OrgKeypair"];
|
|
1861
2051
|
/** @description Billing record attached to the org, if any. Owner-visible only; absent for members. Presence promotes the org to production mode. */
|
|
1862
2052
|
billing?: components["schemas"]["OrgBilling"];
|
|
1863
2053
|
createMetadata: components["schemas"]["ActorMetadata"];
|
|
@@ -1888,26 +2078,43 @@ export interface components {
|
|
|
1888
2078
|
*/
|
|
1889
2079
|
status: components["schemas"]["EntityStatus"];
|
|
1890
2080
|
};
|
|
1891
|
-
/** @description
|
|
1892
|
-
|
|
2081
|
+
/** @description A secp256k1 (Ethereum) public key in JWK form (`{kty:'EC', crv:'secp256k1', x, y}`), used to ECIES-encrypt delivered verification results and to identify the org. The matching private key never leaves the consumer. Same shape published by the signing JWKS. */
|
|
2082
|
+
JwkSecp256k1Public: {
|
|
1893
2083
|
/** @enum {string} */
|
|
1894
|
-
kty: "
|
|
2084
|
+
kty: "EC";
|
|
1895
2085
|
/** @enum {string} */
|
|
1896
|
-
crv: "
|
|
1897
|
-
/** @description base64url-encoded
|
|
2086
|
+
crv: "secp256k1";
|
|
2087
|
+
/** @description base64url-encoded X coordinate (32 bytes). */
|
|
1898
2088
|
x: string;
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
2089
|
+
/** @description base64url-encoded Y coordinate (32 bytes). */
|
|
2090
|
+
y: string;
|
|
2091
|
+
};
|
|
2092
|
+
/** @description An organization's single Ethereum (secp256k1) encryption keypair: the public JWK, its derived eth address (which also identifies the org), and the `canEncryptResult` toggle. One per org, set/rotated via `PUT /orgs/{orgId}/keypair`. Absent ⇒ the org is keyless (plaintext delivery). */
|
|
2093
|
+
OrgKeypair: {
|
|
2094
|
+
publicKeyJwk: components["schemas"]["JwkSecp256k1Public"];
|
|
2095
|
+
/** @description Lowercase 0x eth address derived from the public key. */
|
|
2096
|
+
ethAddress: string;
|
|
2097
|
+
/** @description When true, terminal results are ECIES-encrypted to this key; when false (the default), they are delivered as plaintext. */
|
|
2098
|
+
canEncryptResult: boolean;
|
|
2099
|
+
/** @description Optional human-readable label set when the keypair was stored. */
|
|
1904
2100
|
label?: string;
|
|
1905
2101
|
createMetadata: components["schemas"]["ActorMetadata"];
|
|
1906
2102
|
updateMetadata: components["schemas"]["ActorMetadata"];
|
|
1907
2103
|
};
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
2104
|
+
OrgKeypairRequest: components["schemas"]["OrgKeypairHexRequest"] | components["schemas"]["OrgKeypairJwkRequest"];
|
|
2105
|
+
/** @description Body for `PUT /orgs/{orgId}/keypair`. Carries the org's eth public key as an uncompressed hex string (`0x04` + 128 hex) — the eth-native form wallets/ethers emit. The matching private key never leaves the consumer. */
|
|
2106
|
+
OrgKeypairHexRequest: {
|
|
2107
|
+
/** @description Uncompressed secp256k1 public key, `0x04` + 128 hex. */
|
|
2108
|
+
publicKey: string;
|
|
2109
|
+
/** @default false */
|
|
2110
|
+
canEncryptResult: boolean;
|
|
2111
|
+
label?: string;
|
|
2112
|
+
};
|
|
2113
|
+
/** @description Body for `PUT /orgs/{orgId}/keypair`. Carries the org's eth public key as a secp256k1 public JWK. */
|
|
2114
|
+
OrgKeypairJwkRequest: {
|
|
2115
|
+
publicKeyJwk: components["schemas"]["JwkSecp256k1Public"];
|
|
2116
|
+
/** @default false */
|
|
2117
|
+
canEncryptResult: boolean;
|
|
1911
2118
|
label?: string;
|
|
1912
2119
|
};
|
|
1913
2120
|
/** @description Response of `POST /orgs/{orgId}/token`. The plaintext `orgSecret` is shown **only once** here; the server stores only its HMAC. Use it as `Authorization: Bearer <orgSecret>` (the `OrgToken` scheme). */
|
|
@@ -1993,8 +2200,10 @@ export interface components {
|
|
|
1993
2200
|
writeRedactionMode?: components["schemas"]["WriteRedactionMode"];
|
|
1994
2201
|
/** @description Apply TLS configuration when creating the tunnel to the attestor. */
|
|
1995
2202
|
additionalClientOptions?: components["schemas"]["AdditionalTlsClientOptions"];
|
|
1996
|
-
/** @description
|
|
1997
|
-
|
|
2203
|
+
/** @description Conditions the (redacted) response must satisfy for the proof to be valid. Each runs against the union of the portions revealed by `responseRedactions` (or the whole response when there are none). Mirrors attestor-core `responseMatches`. */
|
|
2204
|
+
responseMatches?: components["schemas"]["ResponseMatch"][];
|
|
2205
|
+
/** @description Portions to select/reveal from the response, applied in order (xPath => jsonPath => regex). Done client-side; only the selected portions (plus the first response line) are sent to the attestor. An independent ordered list — NOT paired 1:1 with `responseMatches`. Mirrors attestor-core `responseRedactions`. */
|
|
2206
|
+
responseRedactions?: components["schemas"]["ResponseRedaction"][];
|
|
1998
2207
|
};
|
|
1999
2208
|
/** @description A template for selecting request */
|
|
2000
2209
|
RequestSelectionTemplate: components["schemas"]["RequestSelection"] & {
|
|
@@ -2042,11 +2251,9 @@ export interface components {
|
|
|
2042
2251
|
type: "regex" | "contains";
|
|
2043
2252
|
/** @description The pattern or value to look for in the response. When `type` is 'contains', supports template variable declaration using `{{variable}}` syntax. When `type` is 'regex', can be used to extract variables using regex named groups. */
|
|
2044
2253
|
value: string;
|
|
2045
|
-
/** @description Optional extractor describing which portion of the response to pin to the proof. When absent, the match runs against the raw response body. */
|
|
2046
|
-
extract?: components["schemas"]["ExtractDataSpecifier"];
|
|
2047
2254
|
};
|
|
2048
2255
|
/** @description Which portions to select from a response. These are selected in order, xpath => jsonPath => regex * These redactions are done client side and only the selected portions are sent to the attestor. The attestor will only be able to see the selected portions alongside the first line of the HTTP response (i.e. "HTTP/1.1 200 OK") */
|
|
2049
|
-
|
|
2256
|
+
ResponseRedaction: {
|
|
2050
2257
|
/** @description expect an HTML response, and to contain a certain xpath for eg. "/html/body/div.a1/div.a2/span.a5" */
|
|
2051
2258
|
xPath?: string;
|
|
2052
2259
|
/** @description expect a JSON response, retrieve the item at this path using dot notation for e.g. 'email.addresses.0' */
|
|
@@ -2222,6 +2429,43 @@ export interface components {
|
|
|
2222
2429
|
primaryDataPoint?: string;
|
|
2223
2430
|
dataPoints: string[];
|
|
2224
2431
|
};
|
|
2432
|
+
/** @description One website (distinct domain) in the Discover search results. Aggregates, across every verification the caller can see on that domain, the brand display fields and the union of provable data points. */
|
|
2433
|
+
WebsiteSuggestion: {
|
|
2434
|
+
/**
|
|
2435
|
+
* Format: hostname
|
|
2436
|
+
* @description Canonical root domain (e.g. `github.com`).
|
|
2437
|
+
*/
|
|
2438
|
+
domain: string;
|
|
2439
|
+
/** @description Display name for the website (scraped site name or derived from the domain). */
|
|
2440
|
+
brandName: string;
|
|
2441
|
+
/**
|
|
2442
|
+
* Format: uri
|
|
2443
|
+
* @description Favicon URL for the website.
|
|
2444
|
+
*/
|
|
2445
|
+
iconUrl?: string;
|
|
2446
|
+
/** @description Deduplicated names of every data point provable for this website. */
|
|
2447
|
+
dataPoints: string[];
|
|
2448
|
+
/** @description Number of verifications backing this website that the caller can see. */
|
|
2449
|
+
providerCount: number;
|
|
2450
|
+
};
|
|
2451
|
+
/** @description Body for `POST /site/{domain}/try`. Only the verification `context` (values for the resolved providers' `requiredContext` inputs). The selection (dataPoints / mode / pins) travels in the query string. */
|
|
2452
|
+
SiteBuildTryBody: {
|
|
2453
|
+
/** @description Input key → value the consumer's app supplies. */
|
|
2454
|
+
context?: {
|
|
2455
|
+
[key: string]: string;
|
|
2456
|
+
};
|
|
2457
|
+
};
|
|
2458
|
+
/** @description A single data point selectable on the `/site/{domain}` page, with how many visible verifications expose it and one example verification slug. */
|
|
2459
|
+
DataPointItem: {
|
|
2460
|
+
/** @description Data-point name (e.g. `username`, `followers_count`). */
|
|
2461
|
+
name: string;
|
|
2462
|
+
/** @description Human description of the data point, taken from the response match that declares it. Absent when no match supplies one. */
|
|
2463
|
+
description?: string;
|
|
2464
|
+
/** @description Number of visible verifications on the domain that expose this data point. */
|
|
2465
|
+
providerCount: number;
|
|
2466
|
+
/** @description Slug of one verification that exposes this data point. */
|
|
2467
|
+
exampleProviderSlug?: string;
|
|
2468
|
+
};
|
|
2225
2469
|
InterceptorOptions: {
|
|
2226
2470
|
/**
|
|
2227
2471
|
* @description How traffic interception is implemented.
|
|
@@ -2412,12 +2656,16 @@ export interface components {
|
|
|
2412
2656
|
/** @description Opaque bearer token. Send as `Authorization: Bearer <token>` on every authenticated request. */
|
|
2413
2657
|
token: string;
|
|
2414
2658
|
};
|
|
2415
|
-
/** @description
|
|
2416
|
-
UpdateUserRequest: {
|
|
2417
|
-
name?: string;
|
|
2418
|
-
};
|
|
2659
|
+
/** @description Body for `POST /orgs`. Explicitly-created orgs must declare their Ethereum (secp256k1) encryption public key — it identifies the org and, when `canEncryptResult` is enabled, encrypts delivered results. */
|
|
2419
2660
|
CreateOrgRequest: {
|
|
2420
2661
|
name: string;
|
|
2662
|
+
/** @description The org's eth public key, uncompressed hex (`0x04` + 128 hex) — the eth-native form wallets/ethers emit. The matching private key never leaves the consumer. */
|
|
2663
|
+
publicKey: string;
|
|
2664
|
+
/**
|
|
2665
|
+
* @description When true, terminal results are ECIES-encrypted to this key; when false (the default), they are delivered as plaintext.
|
|
2666
|
+
* @default false
|
|
2667
|
+
*/
|
|
2668
|
+
canEncryptResult: boolean;
|
|
2421
2669
|
};
|
|
2422
2670
|
UpdateOrgRequest: {
|
|
2423
2671
|
name?: string;
|
|
@@ -2607,9 +2855,10 @@ export interface components {
|
|
|
2607
2855
|
* @description Lifecycle event reported for a verification session. A healthy run
|
|
2608
2856
|
* proceeds through these in order; reading the gaps locates where a
|
|
2609
2857
|
* session stalled. Session-level terminal events trigger callback
|
|
2610
|
-
* delivery; request-level events are progress pings carrying a
|
|
2611
|
-
* `
|
|
2612
|
-
* clients MUST tolerate unknown
|
|
2858
|
+
* delivery; provider-/request-level events are progress pings carrying a
|
|
2859
|
+
* `provider_id` (and `request_id` for request-level ones) in their event
|
|
2860
|
+
* data. New values may be added over time; clients MUST tolerate unknown
|
|
2861
|
+
* values in responses.
|
|
2613
2862
|
*
|
|
2614
2863
|
* - `session_pending`: Session created; awaiting the end-user.
|
|
2615
2864
|
*
|
|
@@ -2618,6 +2867,10 @@ export interface components {
|
|
|
2618
2867
|
*
|
|
2619
2868
|
* - `verification_client_ready`: The client initialized.
|
|
2620
2869
|
*
|
|
2870
|
+
* - `verification_provider_started`: The client began verifying a provider
|
|
2871
|
+
* (`provider_id`/`resolved_version`/`ordinal` in `eventData`). One per
|
|
2872
|
+
* provider, in run order, for multi-provider sessions.
|
|
2873
|
+
*
|
|
2621
2874
|
* - `request_matched`: The target request was captured on the provider
|
|
2622
2875
|
* site. Absent (after opened) ⇒ the user didn't complete the journey.
|
|
2623
2876
|
*
|
|
@@ -2638,7 +2891,7 @@ export interface components {
|
|
|
2638
2891
|
* - `session_expired`: `expiresAt` passed before a terminal event.
|
|
2639
2892
|
* @enum {string}
|
|
2640
2893
|
*/
|
|
2641
|
-
VerificationEvent: "session_pending" | "verification_client_opened" | "verification_client_ready" | "request_matched" | "request_claim_created" | "request_claim_completed" | "request_claim_rejected" | "request_claim_failed" | "verification_success" | "verification_rejected" | "verification_error" | "session_expired";
|
|
2894
|
+
VerificationEvent: "session_pending" | "verification_client_opened" | "verification_client_ready" | "verification_provider_started" | "request_matched" | "request_claim_created" | "request_claim_completed" | "request_claim_rejected" | "request_claim_failed" | "verification_success" | "verification_rejected" | "verification_error" | "session_expired";
|
|
2642
2895
|
/**
|
|
2643
2896
|
* @description Status of a verification session, derived from its events. New values
|
|
2644
2897
|
* may be added over time; clients MUST tolerate unknown values in
|
|
@@ -2675,7 +2928,7 @@ export interface components {
|
|
|
2675
2928
|
* @enum {string}
|
|
2676
2929
|
*/
|
|
2677
2930
|
CallbackDeliveryStatus: "pending" | "delivered" | "attempt_failed" | "failed";
|
|
2678
|
-
/** @description A pre-registered destination for verification results, owned by an organization. A session's results go to every subscription on the session's org whose `events` include the terminal event. At least one subscription must exist for the org before a session can be created. Terminal results are encrypted
|
|
2931
|
+
/** @description A pre-registered destination for verification results, owned by an organization. A session's results go to every subscription on the session's org whose `events` include the terminal event. At least one subscription must exist for the org before a session can be created. Terminal results are ECIES-encrypted to the org's eth public key when its `canEncryptResult` is enabled (see `OrgKeypair`), else delivered as plaintext. */
|
|
2679
2932
|
CallbackSubscription: {
|
|
2680
2933
|
/** Format: uuid */
|
|
2681
2934
|
id: string;
|
|
@@ -2718,11 +2971,8 @@ export interface components {
|
|
|
2718
2971
|
* @description UUID v7 session id (also echoed in context as `reclaimSessionId`).
|
|
2719
2972
|
*/
|
|
2720
2973
|
id: string;
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
version?: string;
|
|
2724
|
-
/** @description Exact version resolved at creation time. */
|
|
2725
|
-
resolvedVersion: string;
|
|
2974
|
+
/** @description The providers this session verifies, in run order. The Verification Client runs each (sequentially, in one browser session) and submits one combined result; all are required. */
|
|
2975
|
+
providers: components["schemas"]["SessionProvider"][];
|
|
2726
2976
|
/** @description The organization that owns this session. */
|
|
2727
2977
|
orgId?: components["schemas"]["OrgID"];
|
|
2728
2978
|
/**
|
|
@@ -2749,16 +2999,29 @@ export interface components {
|
|
|
2749
2999
|
mode: components["schemas"]["CredentialMode"];
|
|
2750
3000
|
sandboxLimits?: components["schemas"]["SandboxLimits"];
|
|
2751
3001
|
};
|
|
2752
|
-
/** @description
|
|
2753
|
-
|
|
3002
|
+
/** @description One provider a session verifies, with its resolved version. */
|
|
3003
|
+
SessionProvider: {
|
|
3004
|
+
providerId: components["schemas"]["ProviderID"];
|
|
3005
|
+
/** @description Version constraint requested by the Consumer (empty = latest). */
|
|
3006
|
+
version?: string;
|
|
3007
|
+
/** @description Exact version resolved at creation time. */
|
|
3008
|
+
resolvedVersion: string;
|
|
3009
|
+
};
|
|
3010
|
+
/** @description A provider (+ optional version) to verify in a session. */
|
|
3011
|
+
SessionProviderInput: {
|
|
2754
3012
|
providerId: components["schemas"]["ProviderID"];
|
|
2755
3013
|
/** @description Semver constraint; empty resolves to the latest trunk version. */
|
|
2756
3014
|
version?: string;
|
|
2757
|
-
|
|
3015
|
+
};
|
|
3016
|
+
/** @description Body for `POST /verifications/sessions`. Authenticated by the consumer's `OrgToken`. Carries no callback URLs — they come from the org's callback subscriptions. The one shared `context` is validated against every provider's `requiredContext`. */
|
|
3017
|
+
CreateVerificationSessionRequest: {
|
|
3018
|
+
/** @description Providers to verify, in run order. The Verification Client runs each sequentially in one browser session and submits one combined result; all are required. */
|
|
3019
|
+
providers: components["schemas"]["SessionProviderInput"][];
|
|
3020
|
+
/** @description Consumer context, shared by all providers. Validated against EACH resolved provider version's `requiredContext` JSON Schema (a 400 is returned on mismatch); extra fields are always allowed. Recipe requests reference these values as `{{context.<key>}}`. Echoed back (plus `reclaimSessionId`) in the result. */
|
|
2758
3021
|
context: {
|
|
2759
3022
|
[key: string]: unknown;
|
|
2760
3023
|
};
|
|
2761
|
-
/** @description Must contain a `{sessionId}` placeholder. */
|
|
3024
|
+
/** @description Must contain a `{sessionId}` placeholder. Must be an http(s) URL. */
|
|
2762
3025
|
verificationClientUrl: string;
|
|
2763
3026
|
};
|
|
2764
3027
|
/** @description Body for `POST /verifications/sessions/{sessionId}/events`. Status ping only — never carries the proof (use the result endpoint for that). */
|
|
@@ -2802,7 +3065,7 @@ export interface components {
|
|
|
2802
3065
|
/** @description The event that produced this delivery. */
|
|
2803
3066
|
event: components["schemas"]["VerificationEvent"];
|
|
2804
3067
|
timestamp: components["schemas"]["Timestamp"];
|
|
2805
|
-
/** @description Payload interpreted per `event`. Terminal events: the signed result —
|
|
3068
|
+
/** @description Payload interpreted per `event`. Terminal events: the signed result — an **ECIES ciphertext** (base64url, secp256k1 + AES-256-GCM) wrapping the signed JWS when the org's `canEncryptResult` is enabled (decrypt with the matching eth private key to recover the inner JWS), else the JWS directly; the inner JWS parses as the `Jws` schema with payload `VerificationResultPayload`. Non-terminal events: plaintext JSON `{ event, eventData }` (unsigned). */
|
|
2806
3069
|
data: string;
|
|
2807
3070
|
};
|
|
2808
3071
|
/** @description The decoded JWS payload of a delivered verification result (the JWS itself is the `Jws` schema, signed ES256K by the key published at `/.well-known/jwks.json`). Consumers MUST check `reclaimSessionId` against the session they created and `verification_session.status` for the outcome. `results` is present on success; `problem` (RFC 9457 shape) is set when the run failed. */
|
|
@@ -2821,8 +3084,13 @@ export interface components {
|
|
|
2821
3084
|
verification_session: {
|
|
2822
3085
|
/** @enum {string} */
|
|
2823
3086
|
status: "success" | "rejected" | "error";
|
|
2824
|
-
|
|
2825
|
-
|
|
3087
|
+
/** @description The providers verified in this session, in run order. */
|
|
3088
|
+
providers: ({
|
|
3089
|
+
provider_id: components["schemas"]["ProviderID"];
|
|
3090
|
+
resolved_version: string;
|
|
3091
|
+
} & {
|
|
3092
|
+
[key: string]: unknown;
|
|
3093
|
+
})[];
|
|
2826
3094
|
/** Format: uuid */
|
|
2827
3095
|
org_id?: string | null;
|
|
2828
3096
|
/** Format: uuid */
|
|
@@ -2831,19 +3099,26 @@ export interface components {
|
|
|
2831
3099
|
} & {
|
|
2832
3100
|
[key: string]: unknown;
|
|
2833
3101
|
};
|
|
2834
|
-
/** @description One entry per
|
|
3102
|
+
/** @description One entry per verified provider (success only), in run order. Each carries that provider's proven requests. */
|
|
2835
3103
|
results?: ({
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
3104
|
+
provider_id: components["schemas"]["ProviderID"];
|
|
3105
|
+
resolved_version: string;
|
|
3106
|
+
/** @description One entry per proven request for this provider. */
|
|
3107
|
+
requests: ({
|
|
3108
|
+
request_id?: string;
|
|
3109
|
+
url?: string;
|
|
3110
|
+
method?: string;
|
|
3111
|
+
extracted_parameters?: {
|
|
3112
|
+
[key: string]: unknown;
|
|
3113
|
+
};
|
|
3114
|
+
content_hash?: string;
|
|
3115
|
+
identifier?: string;
|
|
3116
|
+
owner?: string;
|
|
3117
|
+
/** @description Base64url-encoded nested JWS (attestor proof). */
|
|
3118
|
+
proof?: unknown;
|
|
3119
|
+
} & {
|
|
2840
3120
|
[key: string]: unknown;
|
|
2841
|
-
};
|
|
2842
|
-
content_hash?: string;
|
|
2843
|
-
identifier?: string;
|
|
2844
|
-
owner?: string;
|
|
2845
|
-
/** @description Base64url-encoded nested JWS (attestor proof). */
|
|
2846
|
-
proof?: unknown;
|
|
3121
|
+
})[];
|
|
2847
3122
|
} & {
|
|
2848
3123
|
[key: string]: unknown;
|
|
2849
3124
|
})[];
|
|
@@ -2854,18 +3129,18 @@ export interface components {
|
|
|
2854
3129
|
} & {
|
|
2855
3130
|
[key: string]: unknown;
|
|
2856
3131
|
};
|
|
2857
|
-
/** @description A callback subscription's delivery key, returned to the Verification Client. When `publicKeyJwk` is present the VC
|
|
3132
|
+
/** @description A callback subscription's delivery key, returned to the Verification Client. When `publicKeyJwk` is present the VC ECIES-encrypts the result for that org (its `canEncryptResult` is enabled); when absent the VC submits the plaintext signed JWS. */
|
|
2858
3133
|
CallbackKey: {
|
|
2859
3134
|
/** Format: uuid */
|
|
2860
3135
|
subscriptionId: string;
|
|
2861
|
-
/** @description
|
|
2862
|
-
publicKeyJwk?: components["schemas"]["
|
|
3136
|
+
/** @description The org's secp256k1 (eth) public JWK to ECIES-encrypt the result to. Absent ⇒ deliver plaintext. */
|
|
3137
|
+
publicKeyJwk?: components["schemas"]["JwkSecp256k1Public"];
|
|
2863
3138
|
};
|
|
2864
|
-
/** @description One result payload for one callback subscription. The Verification Client signs the JWS and, when the org
|
|
3139
|
+
/** @description One result payload for one callback subscription. The Verification Client signs the JWS and, when the org's `canEncryptResult` is enabled, ECIES-encrypts it to the org's eth public key; otherwise it submits the plaintext JWS. Either way the payload is carried in `payload` and the Builder stores + delivers it as a blind relay. */
|
|
2865
3140
|
CallbackDelivery: {
|
|
2866
3141
|
/** Format: uuid */
|
|
2867
3142
|
subscriptionId: string;
|
|
2868
|
-
/** @description The signed result payload, as raw text
|
|
3143
|
+
/** @description The signed result payload, as raw text — an ECIES ciphertext (base64url) when the org's `canEncryptResult` is enabled, otherwise the plaintext JWS JSON. Same raw form the callback envelope's `data` carries. */
|
|
2869
3144
|
payload: string;
|
|
2870
3145
|
};
|
|
2871
3146
|
/** @description Body for `POST /verifications/sessions/{sessionId}/result`. The Verification Client signs the JWS, encrypts it per callback subscription (keys fetched from the callback-keys endpoint), and submits one ciphertext per subscription. The Builder stores + delivers them; it never sees the plaintext result. */
|
|
@@ -3004,7 +3279,7 @@ export interface operations {
|
|
|
3004
3279
|
Providers: {
|
|
3005
3280
|
parameters: {
|
|
3006
3281
|
query?: {
|
|
3007
|
-
/** @description Free-text search across `title`, `description`, `domain`, `primaryDataPoint`, `dataPoints`, and the latest version's `initialUrl`. Matched case-insensitively; returns results ranked by relevance (e.g., data point matches rank higher than description matches). */
|
|
3282
|
+
/** @description Free-text search across `title`, `description`, `domain`, `primaryDataPoint`, `dataPoints`, and the latest version's `initialUrl`. Matched case-insensitively; returns results ranked by relevance (e.g., data point matches rank higher than description matches). An empty value is treated as no query (the handler redirects to the bare catalog). */
|
|
3008
3283
|
q?: string;
|
|
3009
3284
|
/** @description Filter by tag. Repeat the parameter to OR multiple tags (a provider matching any of them is returned). Combined with `q` via AND. */
|
|
3010
3285
|
tag?: components["schemas"]["Tag"][];
|
|
@@ -3089,6 +3364,263 @@ export interface operations {
|
|
|
3089
3364
|
default: components["responses"]["ProblemResponse"];
|
|
3090
3365
|
};
|
|
3091
3366
|
};
|
|
3367
|
+
DiscoverWebsites: {
|
|
3368
|
+
parameters: {
|
|
3369
|
+
query?: {
|
|
3370
|
+
/** @description Free-text query matched against website domain, data points, brand title, and description. Omit for the popular-websites list. */
|
|
3371
|
+
q?: string;
|
|
3372
|
+
};
|
|
3373
|
+
header?: never;
|
|
3374
|
+
path?: never;
|
|
3375
|
+
cookie?: never;
|
|
3376
|
+
};
|
|
3377
|
+
requestBody?: never;
|
|
3378
|
+
responses: {
|
|
3379
|
+
/** @description Website suggestions. */
|
|
3380
|
+
200: {
|
|
3381
|
+
headers: {
|
|
3382
|
+
[name: string]: unknown;
|
|
3383
|
+
};
|
|
3384
|
+
content: {
|
|
3385
|
+
"application/json": {
|
|
3386
|
+
items: components["schemas"]["WebsiteSuggestion"][];
|
|
3387
|
+
};
|
|
3388
|
+
"text/html": components["schemas"]["HtmlContent"];
|
|
3389
|
+
};
|
|
3390
|
+
};
|
|
3391
|
+
default: components["responses"]["ProblemResponse"];
|
|
3392
|
+
};
|
|
3393
|
+
};
|
|
3394
|
+
SitePage: {
|
|
3395
|
+
parameters: {
|
|
3396
|
+
query?: {
|
|
3397
|
+
/** @description Case-insensitive substring filter on data-point names. Empty = no filter, so clearing the box doesn't need a client workaround. */
|
|
3398
|
+
q?: string;
|
|
3399
|
+
/** @description Currently selected data-point names — from a deep-link (the provider page's "Use provider") or the form's own htmx round-trips. Repeat to pass several; renders the summary panel and pre-checks the boxes. */
|
|
3400
|
+
dataPoints?: string[];
|
|
3401
|
+
/** @description Resolution mode reflected in the Continue URL. */
|
|
3402
|
+
mode?: "list" | "combine";
|
|
3403
|
+
/** @description Source pins from the form: `pins[<dataPoint>]=id,id`. Maps each data-point name to a comma-joined list of preferred providerIds (empty = Auto). */
|
|
3404
|
+
pins?: {
|
|
3405
|
+
[key: string]: string;
|
|
3406
|
+
};
|
|
3407
|
+
};
|
|
3408
|
+
header?: never;
|
|
3409
|
+
path: {
|
|
3410
|
+
/** @description Website domain (e.g. `github.com`). Normalized server-side (scheme / `www.` / port / path stripped). */
|
|
3411
|
+
domain: string;
|
|
3412
|
+
};
|
|
3413
|
+
cookie?: never;
|
|
3414
|
+
};
|
|
3415
|
+
requestBody?: never;
|
|
3416
|
+
responses: {
|
|
3417
|
+
/** @description The website's provable data points. */
|
|
3418
|
+
200: {
|
|
3419
|
+
headers: {
|
|
3420
|
+
[name: string]: unknown;
|
|
3421
|
+
};
|
|
3422
|
+
content: {
|
|
3423
|
+
"application/json": {
|
|
3424
|
+
/** Format: hostname */
|
|
3425
|
+
domain: string;
|
|
3426
|
+
brandName: string;
|
|
3427
|
+
/** Format: uri */
|
|
3428
|
+
iconUrl?: string;
|
|
3429
|
+
dataPoints: components["schemas"]["DataPointItem"][];
|
|
3430
|
+
};
|
|
3431
|
+
"text/html": components["schemas"]["HtmlContent"];
|
|
3432
|
+
};
|
|
3433
|
+
};
|
|
3434
|
+
404: components["responses"]["ProblemResponse"];
|
|
3435
|
+
default: components["responses"]["ProblemResponse"];
|
|
3436
|
+
};
|
|
3437
|
+
};
|
|
3438
|
+
SitePanel: {
|
|
3439
|
+
parameters: {
|
|
3440
|
+
query?: {
|
|
3441
|
+
/** @description Selected data-point names. Repeat to pass several. */
|
|
3442
|
+
dataPoints?: string[];
|
|
3443
|
+
/** @description Resolution mode reflected in the Continue URL. */
|
|
3444
|
+
mode?: "list" | "combine";
|
|
3445
|
+
/** @description Source pins from the form: `pins[<dataPoint>]=id,id`. Maps each data-point name to a comma-joined list of preferred providerIds (empty = Auto). */
|
|
3446
|
+
pins?: {
|
|
3447
|
+
[key: string]: string;
|
|
3448
|
+
};
|
|
3449
|
+
/** @description The data-point filter input rides along in the form submit; accepted and ignored here (the panel doesn't filter). */
|
|
3450
|
+
q?: string;
|
|
3451
|
+
};
|
|
3452
|
+
header?: never;
|
|
3453
|
+
path: {
|
|
3454
|
+
/** @description Website domain (normalized server-side). */
|
|
3455
|
+
domain: string;
|
|
3456
|
+
};
|
|
3457
|
+
cookie?: never;
|
|
3458
|
+
};
|
|
3459
|
+
requestBody?: never;
|
|
3460
|
+
responses: {
|
|
3461
|
+
/** @description The summary-panel fragment. */
|
|
3462
|
+
200: {
|
|
3463
|
+
headers: {
|
|
3464
|
+
[name: string]: unknown;
|
|
3465
|
+
};
|
|
3466
|
+
content: {
|
|
3467
|
+
"text/html": components["schemas"]["HtmlContent"];
|
|
3468
|
+
};
|
|
3469
|
+
};
|
|
3470
|
+
404: components["responses"]["ProblemResponse"];
|
|
3471
|
+
default: components["responses"]["ProblemResponse"];
|
|
3472
|
+
};
|
|
3473
|
+
};
|
|
3474
|
+
SiteBuild: {
|
|
3475
|
+
parameters: {
|
|
3476
|
+
query: {
|
|
3477
|
+
/** @description Selected data-point names. Repeat to pass several. */
|
|
3478
|
+
dataPoints: string[];
|
|
3479
|
+
/** @description `combine` (default) minimizes to the fewest providers (set-cover); `list` uses one provider per data point. */
|
|
3480
|
+
mode?: "list" | "combine";
|
|
3481
|
+
/** @description Source pins: `pins[<dataPoint>]=id,id`. Maps each data-point name to a comma-joined list of preferred providerIds. Omit for Auto. */
|
|
3482
|
+
pins?: {
|
|
3483
|
+
[key: string]: string;
|
|
3484
|
+
};
|
|
3485
|
+
/** @description Data-point names the consumer opts to SUPPLY themselves (as verification `context`) instead of having a provider prove — shrinks the provider set. Repeat to pass several. Only names that are a provider input are honoured. Subset of `dataPoints`. */
|
|
3486
|
+
provided?: string[];
|
|
3487
|
+
};
|
|
3488
|
+
header?: never;
|
|
3489
|
+
path: {
|
|
3490
|
+
/** @description Website domain (normalized server-side). */
|
|
3491
|
+
domain: string;
|
|
3492
|
+
};
|
|
3493
|
+
cookie?: never;
|
|
3494
|
+
};
|
|
3495
|
+
requestBody?: never;
|
|
3496
|
+
responses: {
|
|
3497
|
+
/** @description The build page. */
|
|
3498
|
+
200: {
|
|
3499
|
+
headers: {
|
|
3500
|
+
[name: string]: unknown;
|
|
3501
|
+
};
|
|
3502
|
+
content: {
|
|
3503
|
+
"text/html": components["schemas"]["HtmlContent"];
|
|
3504
|
+
};
|
|
3505
|
+
};
|
|
3506
|
+
404: components["responses"]["ProblemResponse"];
|
|
3507
|
+
default: components["responses"]["ProblemResponse"];
|
|
3508
|
+
};
|
|
3509
|
+
};
|
|
3510
|
+
SiteBuildTry: {
|
|
3511
|
+
parameters: {
|
|
3512
|
+
query: {
|
|
3513
|
+
/** @description Selected data-point names. Repeat to pass several. */
|
|
3514
|
+
dataPoints: string[];
|
|
3515
|
+
/** @description Resolution mode (`combine` default | `list`). */
|
|
3516
|
+
mode?: "list" | "combine";
|
|
3517
|
+
/** @description Source pins: `pins[<dataPoint>]=id,id`. Maps each data-point name to a comma-joined list of preferred providerIds. */
|
|
3518
|
+
pins?: {
|
|
3519
|
+
[key: string]: string;
|
|
3520
|
+
};
|
|
3521
|
+
/** @description Data-point names the consumer supplies themselves (as `context`) instead of proving. Repeat to pass several. Subset of `dataPoints`. */
|
|
3522
|
+
provided?: string[];
|
|
3523
|
+
};
|
|
3524
|
+
header?: never;
|
|
3525
|
+
path: {
|
|
3526
|
+
/** @description Website domain (normalized server-side). */
|
|
3527
|
+
domain: string;
|
|
3528
|
+
};
|
|
3529
|
+
cookie?: never;
|
|
3530
|
+
};
|
|
3531
|
+
/** @description The verification `context` — values for the resolved providers' requiredContext inputs (the build page's input fields). The selection itself travels in the query string. */
|
|
3532
|
+
requestBody?: {
|
|
3533
|
+
content: {
|
|
3534
|
+
"application/x-www-form-urlencoded": components["schemas"]["SiteBuildTryBody"];
|
|
3535
|
+
"application/json": components["schemas"]["SiteBuildTryBody"];
|
|
3536
|
+
};
|
|
3537
|
+
};
|
|
3538
|
+
responses: {
|
|
3539
|
+
/** @description Session created. */
|
|
3540
|
+
201: {
|
|
3541
|
+
headers: {
|
|
3542
|
+
[name: string]: unknown;
|
|
3543
|
+
};
|
|
3544
|
+
content: {
|
|
3545
|
+
"application/json": components["schemas"]["VerificationSession"];
|
|
3546
|
+
};
|
|
3547
|
+
};
|
|
3548
|
+
401: components["responses"]["ProblemResponse"];
|
|
3549
|
+
/** @description One or more selected data points are not covered by any provider. */
|
|
3550
|
+
422: {
|
|
3551
|
+
headers: {
|
|
3552
|
+
[name: string]: unknown;
|
|
3553
|
+
};
|
|
3554
|
+
content: {
|
|
3555
|
+
"application/problem+json": components["schemas"]["Problem"];
|
|
3556
|
+
};
|
|
3557
|
+
};
|
|
3558
|
+
/** @description Sandbox verification quota exceeded. */
|
|
3559
|
+
429: {
|
|
3560
|
+
headers: {
|
|
3561
|
+
[name: string]: unknown;
|
|
3562
|
+
};
|
|
3563
|
+
content: {
|
|
3564
|
+
"application/problem+json": components["schemas"]["Problem"];
|
|
3565
|
+
};
|
|
3566
|
+
};
|
|
3567
|
+
default: components["responses"]["ProblemResponse"];
|
|
3568
|
+
};
|
|
3569
|
+
};
|
|
3570
|
+
DiscoverTeachAgent: {
|
|
3571
|
+
parameters: {
|
|
3572
|
+
query?: {
|
|
3573
|
+
/** @description Website the user wanted to verify data from. */
|
|
3574
|
+
domain?: string;
|
|
3575
|
+
/** @description Specific data point the user could not find. */
|
|
3576
|
+
dataPoint?: string;
|
|
3577
|
+
};
|
|
3578
|
+
header?: never;
|
|
3579
|
+
path?: never;
|
|
3580
|
+
cookie?: never;
|
|
3581
|
+
};
|
|
3582
|
+
requestBody?: never;
|
|
3583
|
+
responses: {
|
|
3584
|
+
200: components["responses"]["HTMLResponse"];
|
|
3585
|
+
default: components["responses"]["ProblemResponse"];
|
|
3586
|
+
};
|
|
3587
|
+
};
|
|
3588
|
+
DiscoverResolve: {
|
|
3589
|
+
parameters: {
|
|
3590
|
+
query: {
|
|
3591
|
+
/** @description Website domain (normalized server-side). */
|
|
3592
|
+
domain: string;
|
|
3593
|
+
/** @description Selected data-point names. Repeat to pass several. */
|
|
3594
|
+
dataPoints: string[];
|
|
3595
|
+
};
|
|
3596
|
+
header?: never;
|
|
3597
|
+
path?: never;
|
|
3598
|
+
cookie?: never;
|
|
3599
|
+
};
|
|
3600
|
+
requestBody?: never;
|
|
3601
|
+
responses: {
|
|
3602
|
+
/** @description Covering providers (possibly none). */
|
|
3603
|
+
200: {
|
|
3604
|
+
headers: {
|
|
3605
|
+
[name: string]: unknown;
|
|
3606
|
+
};
|
|
3607
|
+
content: {
|
|
3608
|
+
"application/json": {
|
|
3609
|
+
/** @description The most specific covering provider's id, if any — a convenience for the common single-provider case. */
|
|
3610
|
+
providerId?: components["schemas"]["ProviderID"];
|
|
3611
|
+
/** @description True when no existing provider covers the full selection (a new one must be created/stitched). */
|
|
3612
|
+
needsCreation: boolean;
|
|
3613
|
+
providers: {
|
|
3614
|
+
providerId: components["schemas"]["ProviderID"];
|
|
3615
|
+
slug: string;
|
|
3616
|
+
dataPoints: string[];
|
|
3617
|
+
}[];
|
|
3618
|
+
};
|
|
3619
|
+
};
|
|
3620
|
+
};
|
|
3621
|
+
default: components["responses"]["ProblemResponse"];
|
|
3622
|
+
};
|
|
3623
|
+
};
|
|
3092
3624
|
ProviderPreviewImage: {
|
|
3093
3625
|
parameters: {
|
|
3094
3626
|
query?: {
|
|
@@ -3476,6 +4008,27 @@ export interface operations {
|
|
|
3476
4008
|
default: components["responses"]["ProblemResponse"];
|
|
3477
4009
|
};
|
|
3478
4010
|
};
|
|
4011
|
+
DisposeVerificationSession: {
|
|
4012
|
+
parameters: {
|
|
4013
|
+
query?: never;
|
|
4014
|
+
header?: never;
|
|
4015
|
+
path: {
|
|
4016
|
+
sessionId: components["schemas"]["SessionID"];
|
|
4017
|
+
};
|
|
4018
|
+
cookie?: never;
|
|
4019
|
+
};
|
|
4020
|
+
requestBody?: never;
|
|
4021
|
+
responses: {
|
|
4022
|
+
/** @description Dispose requested. */
|
|
4023
|
+
204: {
|
|
4024
|
+
headers: {
|
|
4025
|
+
[name: string]: unknown;
|
|
4026
|
+
};
|
|
4027
|
+
content?: never;
|
|
4028
|
+
};
|
|
4029
|
+
default: components["responses"]["ProblemResponse"];
|
|
4030
|
+
};
|
|
4031
|
+
};
|
|
3479
4032
|
VerificationSessionSse: {
|
|
3480
4033
|
parameters: {
|
|
3481
4034
|
query?: never;
|
|
@@ -3656,31 +4209,6 @@ export interface operations {
|
|
|
3656
4209
|
default: components["responses"]["ProblemResponse"];
|
|
3657
4210
|
};
|
|
3658
4211
|
};
|
|
3659
|
-
UpdateMe: {
|
|
3660
|
-
parameters: {
|
|
3661
|
-
query?: never;
|
|
3662
|
-
header?: never;
|
|
3663
|
-
path?: never;
|
|
3664
|
-
cookie?: never;
|
|
3665
|
-
};
|
|
3666
|
-
requestBody: {
|
|
3667
|
-
content: {
|
|
3668
|
-
"application/json": components["schemas"]["UpdateUserRequest"];
|
|
3669
|
-
};
|
|
3670
|
-
};
|
|
3671
|
-
responses: {
|
|
3672
|
-
/** @description Updated */
|
|
3673
|
-
200: {
|
|
3674
|
-
headers: {
|
|
3675
|
-
[name: string]: unknown;
|
|
3676
|
-
};
|
|
3677
|
-
content: {
|
|
3678
|
-
"application/json": components["schemas"]["User"];
|
|
3679
|
-
};
|
|
3680
|
-
};
|
|
3681
|
-
default: components["responses"]["ProblemResponse"];
|
|
3682
|
-
};
|
|
3683
|
-
};
|
|
3684
4212
|
GetUser: {
|
|
3685
4213
|
parameters: {
|
|
3686
4214
|
query?: never;
|
|
@@ -3760,7 +4288,10 @@ export interface operations {
|
|
|
3760
4288
|
};
|
|
3761
4289
|
GetOrg: {
|
|
3762
4290
|
parameters: {
|
|
3763
|
-
query?:
|
|
4291
|
+
query?: {
|
|
4292
|
+
/** @description Which section to show (server-rendered tab); unknown values fall back to the first. */
|
|
4293
|
+
tab?: "connect" | "providers" | "members" | "themes" | "sessions" | "billing";
|
|
4294
|
+
};
|
|
3764
4295
|
header?: never;
|
|
3765
4296
|
path: {
|
|
3766
4297
|
orgId: components["schemas"]["OrgID"];
|
|
@@ -3833,6 +4364,32 @@ export interface operations {
|
|
|
3833
4364
|
default: components["responses"]["ProblemResponse"];
|
|
3834
4365
|
};
|
|
3835
4366
|
};
|
|
4367
|
+
SearchOrgMembers: {
|
|
4368
|
+
parameters: {
|
|
4369
|
+
query?: {
|
|
4370
|
+
/** @description Case-insensitive email substring to filter by. */
|
|
4371
|
+
q?: string;
|
|
4372
|
+
};
|
|
4373
|
+
header?: never;
|
|
4374
|
+
path: {
|
|
4375
|
+
orgId: components["schemas"]["OrgID"];
|
|
4376
|
+
};
|
|
4377
|
+
cookie?: never;
|
|
4378
|
+
};
|
|
4379
|
+
requestBody?: never;
|
|
4380
|
+
responses: {
|
|
4381
|
+
/** @description The members-list fragment. */
|
|
4382
|
+
200: {
|
|
4383
|
+
headers: {
|
|
4384
|
+
[name: string]: unknown;
|
|
4385
|
+
};
|
|
4386
|
+
content: {
|
|
4387
|
+
"text/html": components["schemas"]["HtmlContent"];
|
|
4388
|
+
};
|
|
4389
|
+
};
|
|
4390
|
+
default: components["responses"]["ProblemResponse"];
|
|
4391
|
+
};
|
|
4392
|
+
};
|
|
3836
4393
|
AddOrgMember: {
|
|
3837
4394
|
parameters: {
|
|
3838
4395
|
query?: never;
|
|
@@ -4106,7 +4663,7 @@ export interface operations {
|
|
|
4106
4663
|
default: components["responses"]["ProblemResponse"];
|
|
4107
4664
|
};
|
|
4108
4665
|
};
|
|
4109
|
-
|
|
4666
|
+
GetOrgKeypair: {
|
|
4110
4667
|
parameters: {
|
|
4111
4668
|
query?: never;
|
|
4112
4669
|
header?: never;
|
|
@@ -4123,7 +4680,7 @@ export interface operations {
|
|
|
4123
4680
|
[name: string]: unknown;
|
|
4124
4681
|
};
|
|
4125
4682
|
content: {
|
|
4126
|
-
"application/json": components["schemas"]["
|
|
4683
|
+
"application/json": components["schemas"]["OrgKeypair"];
|
|
4127
4684
|
};
|
|
4128
4685
|
};
|
|
4129
4686
|
403: components["responses"]["ForbiddenResponse"];
|
|
@@ -4131,7 +4688,7 @@ export interface operations {
|
|
|
4131
4688
|
default: components["responses"]["ProblemResponse"];
|
|
4132
4689
|
};
|
|
4133
4690
|
};
|
|
4134
|
-
|
|
4691
|
+
SetOrgKeypair: {
|
|
4135
4692
|
parameters: {
|
|
4136
4693
|
query?: never;
|
|
4137
4694
|
header?: never;
|
|
@@ -4142,7 +4699,7 @@ export interface operations {
|
|
|
4142
4699
|
};
|
|
4143
4700
|
requestBody: {
|
|
4144
4701
|
content: {
|
|
4145
|
-
"application/json": components["schemas"]["
|
|
4702
|
+
"application/json": components["schemas"]["OrgKeypairRequest"];
|
|
4146
4703
|
};
|
|
4147
4704
|
};
|
|
4148
4705
|
responses: {
|
|
@@ -4152,7 +4709,7 @@ export interface operations {
|
|
|
4152
4709
|
[name: string]: unknown;
|
|
4153
4710
|
};
|
|
4154
4711
|
content: {
|
|
4155
|
-
"application/json": components["schemas"]["
|
|
4712
|
+
"application/json": components["schemas"]["OrgKeypair"];
|
|
4156
4713
|
};
|
|
4157
4714
|
};
|
|
4158
4715
|
400: components["responses"]["ProblemResponse"];
|
|
@@ -4160,7 +4717,7 @@ export interface operations {
|
|
|
4160
4717
|
default: components["responses"]["ProblemResponse"];
|
|
4161
4718
|
};
|
|
4162
4719
|
};
|
|
4163
|
-
|
|
4720
|
+
DeleteOrgKeypair: {
|
|
4164
4721
|
parameters: {
|
|
4165
4722
|
query?: never;
|
|
4166
4723
|
header?: never;
|
|
@@ -4381,6 +4938,29 @@ export interface operations {
|
|
|
4381
4938
|
default: components["responses"]["ProblemResponse"];
|
|
4382
4939
|
};
|
|
4383
4940
|
};
|
|
4941
|
+
AttachLanding: {
|
|
4942
|
+
parameters: {
|
|
4943
|
+
query?: {
|
|
4944
|
+
/** @description A submitted pairing code; redirects to `/attach/{code}`. */
|
|
4945
|
+
code?: string;
|
|
4946
|
+
};
|
|
4947
|
+
header?: never;
|
|
4948
|
+
path?: never;
|
|
4949
|
+
cookie?: never;
|
|
4950
|
+
};
|
|
4951
|
+
requestBody?: never;
|
|
4952
|
+
responses: {
|
|
4953
|
+
200: components["responses"]["HTMLResponse"];
|
|
4954
|
+
/** @description Redirect to the canonical `/attach/{code}` URL. */
|
|
4955
|
+
302: {
|
|
4956
|
+
headers: {
|
|
4957
|
+
[name: string]: unknown;
|
|
4958
|
+
};
|
|
4959
|
+
content?: never;
|
|
4960
|
+
};
|
|
4961
|
+
default: components["responses"]["ProblemResponse"];
|
|
4962
|
+
};
|
|
4963
|
+
};
|
|
4384
4964
|
AttachPage: {
|
|
4385
4965
|
parameters: {
|
|
4386
4966
|
query?: never;
|
|
@@ -5238,9 +5818,18 @@ export interface operations {
|
|
|
5238
5818
|
};
|
|
5239
5819
|
content: {
|
|
5240
5820
|
"application/json": {
|
|
5241
|
-
|
|
5242
|
-
|
|
5243
|
-
|
|
5821
|
+
/** @description One recipe per session provider, in run order. */
|
|
5822
|
+
recipes: {
|
|
5823
|
+
providerId: components["schemas"]["ProviderID"];
|
|
5824
|
+
resolvedVersion: string;
|
|
5825
|
+
initialUrl: string;
|
|
5826
|
+
/** @description The version's webSettings geoLocation template (`{{DYNAMIC_GEO}}` / '' / ISO code), applied to this provider's requests. */
|
|
5827
|
+
geoLocation?: string;
|
|
5828
|
+
/** @description The version's webSettings.jsUserScripts — page JavaScript the Verification Client installs to run before every page load (before navigating to initialUrl), to drive login/navigation so the target requests fire. */
|
|
5829
|
+
jsUserScripts?: string;
|
|
5830
|
+
requests: {
|
|
5831
|
+
[key: string]: unknown;
|
|
5832
|
+
}[];
|
|
5244
5833
|
}[];
|
|
5245
5834
|
};
|
|
5246
5835
|
};
|
|
@@ -5384,7 +5973,7 @@ export interface operations {
|
|
|
5384
5973
|
/** Format: uuid */
|
|
5385
5974
|
subscriptionId: string;
|
|
5386
5975
|
event: components["schemas"]["VerificationEvent"];
|
|
5387
|
-
/** @description The result payload, as raw text
|
|
5976
|
+
/** @description The result payload, as raw text: an ECIES ciphertext (base64url) wrapping the signed result JWS when the org's `canEncryptResult` is enabled, else the plaintext signed JWS JSON. */
|
|
5388
5977
|
payload: string;
|
|
5389
5978
|
deliveryStatus: components["schemas"]["CallbackDeliveryStatus"];
|
|
5390
5979
|
createdAt: components["schemas"]["Timestamp"];
|