@reclaimprotocol/client 0.1.32 → 0.1.34

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.
@@ -1,5 +1,5 @@
1
1
  // AUTO-GENERATED by packages/app/scripts/openapi-typegen.ts
2
- // from packages/app/openapi.yaml (spec v0.1.0, source sha256:099a5bcf4fba).
2
+ // from packages/app/openapi.yaml (spec v0.1.0, source sha256:e2db795ab15c).
3
3
  // The hash catches drift the version misses (a spec can change without a
4
4
  // version bump) — do not remove it as "redundant" with the version.
5
5
  // Run `npm run openapi:gen --workspace=packages/app` to regenerate. Do not edit by hand.
@@ -17,8 +17,8 @@ export interface paths {
17
17
  cookie?: never;
18
18
  };
19
19
  /**
20
- * Discover home — search a website to verify
21
- * @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, plus tag pills to narrow them.
20
+ * Home — sign-in or the Dashboard
21
+ * @description Signed in, redirects to the Dashboard (`GET /orgs/{orgId}`) of the console's selected org, else the viewer's default org. Signed out, renders the sign-in page; a signed-out link carrying Discover's `q` / `tag` redirects to `/discover` with them.
22
22
  */
23
23
  get: operations["Index"];
24
24
  put?: never;
@@ -29,6 +29,26 @@ export interface paths {
29
29
  patch?: never;
30
30
  trace?: never;
31
31
  };
32
+ "/discover": {
33
+ parameters: {
34
+ query?: never;
35
+ header?: never;
36
+ path?: never;
37
+ cookie?: never;
38
+ };
39
+ /**
40
+ * Discover — search a website to verify
41
+ * @description The Catalog. 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, plus tag pills to narrow them.
42
+ */
43
+ get: operations["Discover"];
44
+ put?: never;
45
+ post?: never;
46
+ delete?: never;
47
+ options?: never;
48
+ head?: never;
49
+ patch?: never;
50
+ trace?: never;
51
+ };
32
52
  "/providers": {
33
53
  parameters: {
34
54
  query?: never;
@@ -218,7 +238,7 @@ export interface paths {
218
238
  put?: never;
219
239
  /**
220
240
  * Mint a SANDBOX test verification session for the selection
221
- * @description Creates a real SANDBOX verification session for the selected data points, so the signed-in member can test the flow on `/v/{sessionId}` without registering a callback subscription. Runs under an organization the member owns (`orgId` in the body; defaults to their personal organization). The provider set is recomputed server-side from the selection.
241
+ * @description Creates a real SANDBOX verification session for the selected data points, so the signed-in member can test the flow on `/v/{sessionId}` without registering a callback subscription. Runs under an organization the member owns (`orgId` in the body; defaults to their default organization). The provider set is recomputed server-side from the selection.
222
242
  */
223
243
  post: operations["SiteBuildTry"];
224
244
  delete?: never;
@@ -227,26 +247,6 @@ export interface paths {
227
247
  patch?: never;
228
248
  trace?: never;
229
249
  };
230
- "/site/{domain}/repair": {
231
- parameters: {
232
- query?: never;
233
- header?: never;
234
- path?: never;
235
- cookie?: never;
236
- };
237
- /**
238
- * Failure-aware "Repair with an AI coding agent" wizard fragment
239
- * @description Body of the build page's repair dialog, lazy-loaded after a sandbox Try fails so the agent prompt includes the REAL failure (which provider(s) failed + the error reason, read from the session's event log) and the resolved provider set. HTML / HTMX fragment.
240
- */
241
- get: operations["SiteBuildRepair"];
242
- put?: never;
243
- post?: never;
244
- delete?: never;
245
- options?: never;
246
- head?: never;
247
- patch?: never;
248
- trace?: never;
249
- };
250
250
  "/site/{domain}/alternative": {
251
251
  parameters: {
252
252
  query?: never;
@@ -267,7 +267,7 @@ export interface paths {
267
267
  patch?: never;
268
268
  trace?: never;
269
269
  };
270
- "/discover/teach": {
270
+ "/integrate": {
271
271
  parameters: {
272
272
  query?: never;
273
273
  header?: never;
@@ -275,10 +275,10 @@ export interface paths {
275
275
  cookie?: never;
276
276
  };
277
277
  /**
278
- * “Teach our agent” instructions for a missing website / data point
279
- * @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 provider. HTML / HTMX only (a dialog fragment).
278
+ * Go to the Integrate page
279
+ * @description Where the "Build it with an agent" links lead, from pages that don't know the viewer's organization. Signed in, redirects to the Integrate page of the console's selected organization (else the viewer's default organization), on its coding-agent track. Signed out, redirects to sign-in and back here.
280
280
  */
281
- get: operations["DiscoverTeachAgent"];
281
+ get: operations["OpenIntegrate"];
282
282
  put?: never;
283
283
  post?: never;
284
284
  delete?: never;
@@ -287,26 +287,6 @@ export interface paths {
287
287
  patch?: never;
288
288
  trace?: never;
289
289
  };
290
- "/discover/agent-wizard": {
291
- parameters: {
292
- query?: never;
293
- header?: never;
294
- path?: never;
295
- cookie?: never;
296
- };
297
- get?: never;
298
- put?: never;
299
- /**
300
- * Setup and prompt for the coding agent picked in the wizard
301
- * @description Returns the last step of the "Build with an AI coding agent" wizard for the picked `agent`: how to attach the Reclaim MCP server, and the `basePrompt` with the optional `building` description appended. HTML / HTMX only (a fragment swapped into the open wizard).
302
- */
303
- post: operations["DiscoverAgentWizard"];
304
- delete?: never;
305
- options?: never;
306
- head?: never;
307
- patch?: never;
308
- trace?: never;
309
- };
310
290
  "/discover/resolve": {
311
291
  parameters: {
312
292
  query?: never;
@@ -1136,6 +1116,8 @@ export interface paths {
1136
1116
  * - `zkfetch` — a static informational page. zkFetch has no claimant
1137
1117
  * step; nothing ever redirects a browser here by design.
1138
1118
  *
1119
+ * A session from `POST /verifications/ai-sessions` never redirects for now. While its lookup runs, the page shows a loading state and reloads itself. Then it shows the candidate pages, and asks the user to pick one when there are several (nothing happens after the pick yet). When the lookup failed, the page shows an error and closes itself after 5 seconds. A session that is no longer pending shows that it ended.
1120
+ * `redirectUrl`, `redirectUrlOptions`, `cancelRedirectUrl`, and `cancelRedirectUrlOptions` in the query are added to the session's `launchOptions`, where every Verification Client can read them, unless the session already has that option: options set at creation, or by an earlier visit, win. They're validated as at creation (`https:` only); an invalid one is a 400. The `portals` redirect carries the session's launch options, and any other query parameters, on to the portal.
1139
1121
  * Sets `Referrer-Policy: no-referrer`, so a `sessionId` never rides along in a `Referer` header to wherever a client eventually redirects.
1140
1122
  */
1141
1123
  get: operations["SharePage"];
@@ -1261,8 +1243,8 @@ export interface paths {
1261
1243
  get: operations["FixWithAiRecovery"];
1262
1244
  put?: never;
1263
1245
  /**
1264
- * Create or reopen a billed AI repair session
1265
- * @description Creates one idempotent repair attempt for the selected failed provider. The source organization is charged only when a new child is created. Repeated requests reopen a pending or successful child. After a child ends in error, rejection, or expiry, a later request creates a new, separately billed attempt. The server derives the exact failed version and repair prompt.
1246
+ * Create a billed AI repair session
1247
+ * @description Creates a verification session that pins the selected failed provider's exact version with `preferAiAgent`, charged to the source organization. Its verification page runs the AI authoring agent instead of the stored recipe. A proven recipe is published for the provider's own organization, or submitted for admin review otherwise. Every request creates a new, separately billed session.
1266
1248
  */
1267
1249
  post: operations["CreateFixWithAiSession"];
1268
1250
  delete?: never;
@@ -1271,26 +1253,6 @@ export interface paths {
1271
1253
  patch?: never;
1272
1254
  trace?: never;
1273
1255
  };
1274
- "/v/{sessionId}/fix-with-ai/activate": {
1275
- parameters: {
1276
- query?: never;
1277
- header?: never;
1278
- path?: never;
1279
- cookie?: never;
1280
- };
1281
- get?: never;
1282
- put?: never;
1283
- /**
1284
- * Start a pending AI repair after the verification page loads
1285
- * @description Idempotently queues a pending repair session. The server derives the claimant country from the request and publishes no browser credentials.
1286
- */
1287
- post: operations["ActivateFixWithAiRepair"];
1288
- delete?: never;
1289
- options?: never;
1290
- head?: never;
1291
- patch?: never;
1292
- trace?: never;
1293
- };
1294
1256
  "/.well-known/jwks.json": {
1295
1257
  parameters: {
1296
1258
  query?: never;
@@ -1581,7 +1543,7 @@ export interface paths {
1581
1543
  put?: never;
1582
1544
  /**
1583
1545
  * Create an organization
1584
- * @description Creates a new `ORG`-kind organization with the caller as its first `OWNER`. The personal org is created automatically at user signup and is not created via this endpoint.
1546
+ * @description Creates a new `ORG`-kind organization with the caller as its first `OWNER`. Every user gets a default organization at sign-up, and it counts toward their org-creation limit (1 active organization unless Reclaim support raises it). Past the limit this returns `409`; contact support@reclaimprotocol.org to raise the limit or archive an organization.
1585
1547
  */
1586
1548
  post: operations["CreateOrg"];
1587
1549
  delete?: never;
@@ -1642,8 +1604,8 @@ export interface paths {
1642
1604
  put?: never;
1643
1605
  post?: never;
1644
1606
  /**
1645
- * Delete a shared organization
1646
- * @description Owner only. `PERSONAL` organizations cannot be deleted independently of their owning user; deleting a personal org happens implicitly via `DELETE /me`.
1607
+ * Archive an organization
1608
+ * @description Reclaim staff only; owners ask support@reclaimprotocol.org to archive. Archives the organization, which frees a slot under its creator's org-creation limit. `403` for anyone else.
1647
1609
  */
1648
1610
  delete: operations["DeleteOrg"];
1649
1611
  options?: never;
@@ -1655,26 +1617,6 @@ export interface paths {
1655
1617
  patch: operations["UpdateOrg"];
1656
1618
  trace?: never;
1657
1619
  };
1658
- "/orgs/{orgId}/convert": {
1659
- parameters: {
1660
- query?: never;
1661
- header?: never;
1662
- path?: never;
1663
- cookie?: never;
1664
- };
1665
- get?: never;
1666
- put?: never;
1667
- /**
1668
- * Convert a personal organization to a regular organization
1669
- * @description Owner only. One-way: flips a `PERSONAL` organization (auto-provisioned at sign-up, sandbox-only, single-member) to a regular `ORG`, unlocking billing, plan & usage, and member invites. All providers, sessions, credentials and themes carry over. `409` when the organization is not `PERSONAL`.
1670
- */
1671
- post: operations["ConvertOrgToRegular"];
1672
- delete?: never;
1673
- options?: never;
1674
- head?: never;
1675
- patch?: never;
1676
- trace?: never;
1677
- };
1678
1620
  "/orgs/{orgId}/members": {
1679
1621
  parameters: {
1680
1622
  query?: never;
@@ -1690,7 +1632,7 @@ export interface paths {
1690
1632
  put?: never;
1691
1633
  /**
1692
1634
  * Invite a member to an organization
1693
- * @description Owner only. Invites a user to the organization by email. The invitee does **not** need to be a registered user — an invite is created in either case, and an invite email with an accept link is dispatched. The new row is returned with `status: PENDING`; it flips to `ACTIVE` only when the invitee explicitly accepts via `POST /orgs/{orgId}/invite`. `PERSONAL` organizations reject this call (409).
1635
+ * @description Owner only. Invites a user to the organization by email. The invitee does **not** need to be a registered user — an invite is created in either case, and an invite email with an accept link is dispatched. The new row is returned with `status: PENDING`; it flips to `ACTIVE` only when the invitee explicitly accepts via `POST /orgs/{orgId}/invite`.
1694
1636
  */
1695
1637
  post: operations["AddOrgMember"];
1696
1638
  delete?: never;
@@ -1822,7 +1764,7 @@ export interface paths {
1822
1764
  get: operations["GetOrgKeypair"];
1823
1765
  /**
1824
1766
  * Set (or rotate) the organization's encryption keypair
1825
- * @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.
1767
+ * @description Sets 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. The call creates the key for a keyless org and is idempotent for the same key. If the org has a different key, it returns `409` unless `replace` is true. 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.
1826
1768
  */
1827
1769
  put: operations["SetOrgKeypair"];
1828
1770
  post?: never;
@@ -2084,6 +2026,26 @@ export interface paths {
2084
2026
  patch?: never;
2085
2027
  trace?: never;
2086
2028
  };
2029
+ "/orgs/{orgId}/billing/card": {
2030
+ parameters: {
2031
+ query?: never;
2032
+ header?: never;
2033
+ path?: never;
2034
+ cookie?: never;
2035
+ };
2036
+ get?: never;
2037
+ put?: never;
2038
+ /**
2039
+ * Save a card for the organization
2040
+ * @description Owner only. Returns a Stripe Checkout URL that only saves a card (no charge), creating the organization's Stripe customer on first use. The saved card becomes the default that plans and overage bill. Stripe returns the owner to the Billing tab with `?billing=card`.
2041
+ */
2042
+ post: operations["CreateCardSetupSession"];
2043
+ delete?: never;
2044
+ options?: never;
2045
+ head?: never;
2046
+ patch?: never;
2047
+ trace?: never;
2048
+ };
2087
2049
  "/orgs/{orgId}/billing/subscription": {
2088
2050
  parameters: {
2089
2051
  query?: never;
@@ -2380,7 +2342,7 @@ export interface paths {
2380
2342
  };
2381
2343
  /**
2382
2344
  * Get a specific provider version
2383
- * @description Fetches one exact canonical version. Trunk is public when the provider is public. Non-trunk versions are visible to admins and members of the provider's organization. A member of the organization that paid for a successful AI repair may also read only the exact `fixed` version created by that repair.
2345
+ * @description Fetches one exact canonical version. Trunk is public when the provider is public. Non-trunk versions are visible to admins and members of the provider's organization.
2384
2346
  */
2385
2347
  get: operations["GetProviderVersion"];
2386
2348
  put?: never;
@@ -2725,7 +2687,7 @@ export interface paths {
2725
2687
  };
2726
2688
  /**
2727
2689
  * Verification outcomes by day, device, and country
2728
- * @description Organization-scoped creation cohorts in UTC. Outcomes are current at query time. Unknown device and country values have their own buckets.
2690
+ * @description Organization-scoped creation cohorts in UTC. Outcomes are current at query time. Unknown device and country values have their own buckets. A signed-in browser asking for HTML is redirected to the org's Dashboard (`GET /orgs/{orgId}`), which shows these analytics, with the same query.
2729
2691
  */
2730
2692
  get: operations["GetOrgVerificationAnalytics"];
2731
2693
  put?: never;
@@ -2748,16 +2710,32 @@ export interface paths {
2748
2710
  /**
2749
2711
  * Create a verification session
2750
2712
  * @description Creates a verification session for an end-user to complete.
2713
+ *
2714
+ * **The response's `verificationUrl` is the one thing you need.** Send
2715
+ * your end user to it (redirect, link, or QR code): that is where they
2716
+ * verify. Everything else in the response is for tracking the session.
2717
+ *
2751
2718
  * Authenticated by the consumer's `OrgToken`; the session is scoped to
2752
2719
  * the resolved organization. The request carries no callback URLs —
2753
2720
  * results are delivered to the org's pre-registered callback
2754
2721
  * subscriptions.
2755
2722
  *
2723
+ * `verificationClientUrl` picks where the user verifies. Omit it to use
2724
+ * the Reclaim Portal. The built-in clients are:
2725
+ *
2726
+ * | Client | `verificationClientUrl` |
2727
+ * | --- | --- |
2728
+ * | Reclaim Portal (default) | `https://build.reclaimprotocol.org/share/portals` |
2729
+ * | Verifier app | `https://build.reclaimprotocol.org/share/verifier-app` |
2730
+ * | Browser extension | `https://build.reclaimprotocol.org/share/reclaim-browser-extension` |
2731
+ * | Builder browser | `https://build.reclaimprotocol.org/share/builder` |
2732
+ * | In-app SDK | `https://build.reclaimprotocol.org/share/inapp-sdk` |
2733
+ *
2756
2734
  * curl -X POST $BASE/verifications/sessions \
2757
2735
  * -H "Authorization: Bearer $ORG_TOKEN" \
2758
2736
  * -H 'Content-Type: application/json' \
2759
2737
  * -d '{"providers":[{"providerId":"…","version":"^1.2.0"}],"context":{},
2760
- * "verificationClientUrl":"https://verify.example.com/"}'
2738
+ * "verificationClientUrl":"https://build.reclaimprotocol.org/share/portals"}'
2761
2739
  *
2762
2740
  * Fails with `409 Conflict` if the organization has no callback
2763
2741
  * subscription (there would be nowhere to deliver the result).
@@ -2772,6 +2750,118 @@ export interface paths {
2772
2750
  patch?: never;
2773
2751
  trace?: never;
2774
2752
  };
2753
+ "/verifications/ai-sessions": {
2754
+ parameters: {
2755
+ query?: never;
2756
+ header?: never;
2757
+ path?: never;
2758
+ cookie?: never;
2759
+ };
2760
+ get?: never;
2761
+ put?: never;
2762
+ /**
2763
+ * Start an AI verification session from a prompt
2764
+ * @description Starts a verification from a plain-language prompt, such as "verify
2765
+ * I'm a student at Manipal University", instead of a list of providers.
2766
+ * Builder creates the session at once and returns it, as
2767
+ * `POST /verifications/sessions` does. Send the user to its
2768
+ * `verificationUrl`. In the background, Builder looks up the
2769
+ * `candidates` (pages the user opens and signs in to) and the
2770
+ * `dataPoints` to verify there, usually within a few seconds. Poll
2771
+ * `GET /verifications/ai-sessions/{sessionId}` until its `status` is
2772
+ * `ready` or `failed`. The share page at `verificationUrl` shows a
2773
+ * loading state meanwhile.
2774
+ *
2775
+ * Builder searches the provider catalog (public providers and your
2776
+ * organization's own providers) and the web. The web search finds a
2777
+ * portal the catalog lacks, or one that replaced a stale catalog page.
2778
+ * Builder caches a web result for a week, or for a day when it finds
2779
+ * nothing. A URL or domain in the prompt is a hint: pages on it rank
2780
+ * first.
2781
+ *
2782
+ * Deterministic checks run before any AI model. Builder rejects a
2783
+ * prompt that contains a password, card number, or Aadhaar number, that
2784
+ * contains instructions for the AI, or that makes a sensitive claim,
2785
+ * without calling a model. Builder withholds personal values the prompt
2786
+ * states, such as a name, email address, phone number, or student ID,
2787
+ * from the model and from the cache.
2788
+ *
2789
+ * Once the lookup is ready, the session's `context` holds the values
2790
+ * the prompt states, such as the user's name, merged with the `context`
2791
+ * you send. Your values take precedence.
2792
+ *
2793
+ * On `201`, the session has no providers: the AI agent works out how to
2794
+ * verify. The organization needs a callback subscription. The session
2795
+ * uses one verification from the quota pool of the
2796
+ * `verificationClientUrl` client. A prompt the checks above reject
2797
+ * creates no session and is free. If the lookup then fails (the prompt
2798
+ * isn't a request to verify something about the user, no login page
2799
+ * is found, or the model or web search stays unavailable), Builder
2800
+ * refunds the verification, ends the session with status `error`, and
2801
+ * sends the failure to your `verification_error` callbacks. Builder
2802
+ * caches lookups, so a repeated prompt resolves faster, even when it
2803
+ * names a different person.
2804
+ *
2805
+ * curl -X POST $BASE/verifications/ai-sessions \
2806
+ * -H "Authorization: Bearer $ORG_TOKEN" \
2807
+ * -H 'Content-Type: application/json' \
2808
+ * -d '{"prompt":"verify I am a student at Manipal University"}'
2809
+ *
2810
+ * Errors:
2811
+ *
2812
+ * - `400`: Builder rejects the prompt (for example, it targets an
2813
+ * internal host), `context` contains `attestationNonce` or
2814
+ * `attestationNonceData`, or `verificationClientUrl` isn't a
2815
+ * registered client.
2816
+ * - `409`: The organization has no callback subscription.
2817
+ * - `429` or `402`: The quota or credits are spent. The body has
2818
+ * `event: billing_required` and a terminal `sessionId`.
2819
+ *
2820
+ * A failed lookup isn't an error of this request: it shows in the
2821
+ * `error` of `GET /verifications/ai-sessions/{sessionId}`.
2822
+ */
2823
+ post: operations["CreateAiVerificationSession"];
2824
+ delete?: never;
2825
+ options?: never;
2826
+ head?: never;
2827
+ patch?: never;
2828
+ trace?: never;
2829
+ };
2830
+ "/verifications/ai-sessions/{sessionId}": {
2831
+ parameters: {
2832
+ query?: never;
2833
+ header?: never;
2834
+ path?: never;
2835
+ cookie?: never;
2836
+ };
2837
+ /**
2838
+ * Get what an AI verification session's prompt resolved to
2839
+ * @description Returns the lookup that `POST /verifications/ai-sessions` started for
2840
+ * the session. `status` is `resolving` until it finishes, then `ready`
2841
+ * with the pages and data points it found, or `failed` with an
2842
+ * `error`. Poll every second or two while it's `resolving`.
2843
+ *
2844
+ * `candidates` lists the pages to open, best first, each with a
2845
+ * `source` of `catalog` or `web`. It usually has one page. It has
2846
+ * several (up to 3) only when their `confidence` values are within 0.1
2847
+ * of the best page's value. In that case, the user picks one on the
2848
+ * session's `verificationUrl`.
2849
+ *
2850
+ * The `OrgToken` must resolve to the session's organization. To track
2851
+ * the session's status, call `GET /verifications/sessions/{sessionId}`.
2852
+ *
2853
+ * curl $BASE/verifications/ai-sessions/$SESSION_ID \
2854
+ * -H "Authorization: Bearer $ORG_TOKEN"
2855
+ */
2856
+ get: operations["GetAiVerificationSession"];
2857
+ put?: never;
2858
+ post?: never;
2859
+ delete?: never;
2860
+ options?: never;
2861
+ head?: never;
2862
+ patch?: never;
2863
+ trace?: never;
2864
+ };
2775
2865
  "/verifications/sessions/{sessionId}": {
2776
2866
  parameters: {
2777
2867
  query?: never;
@@ -3065,8 +3155,8 @@ export interface paths {
3065
3155
  cookie?: never;
3066
3156
  };
3067
3157
  /**
3068
- * Get the stored encrypted result(s) for a session
3069
- * @description Returns the stored Builder-signed result payloads for this session — one item per callback subscription. Readable only by the consumer that created the session. The consumer's `OrgToken` must resolve to the session's organization. A pull-based companion to push delivery: when the organization enables encryption, Builder returns an ECIES ciphertext (base64url) that the holder of the matching private key decrypts client-side, else plaintext. Empty `items` until the session reaches a terminal state and a result has been submitted. Treat every returned payload as untrusted until `verifyResultFull` succeeds with the Builder issuer and JWKS URL.
3158
+ * Get the stored result(s) for a session
3159
+ * @description Returns the session's callback deliveries with their payloads — one item per callback subscription and event. Readable only by the consumer that created the session. The consumer's `OrgToken` must resolve to the session's organization. A recovery companion to push delivery, not a replacement for the callback: a signed result's `payload` (which can carry proofs) is kept only until its callback is delivered, or for 7 days while undelivered, then becomes `null`. When the organization enables encryption, a signed result is an ECIES ciphertext (base64url) that the holder of the matching private key decrypts client-side, else plaintext. Empty `items` until the session reaches a terminal state and a result has been submitted. Treat every returned payload as untrusted until `verifyResultFull` succeeds with the Builder issuer and JWKS URL.
3070
3160
  */
3071
3161
  get: operations["GetVerificationResult"];
3072
3162
  put?: never;
@@ -3088,7 +3178,7 @@ export interface paths {
3088
3178
  put?: never;
3089
3179
  /**
3090
3180
  * Re-enqueue callback delivery for a session
3091
- * @description Re-enqueues delivery of a session's stored result to its callback subscriptions. Use this after `list_verification_deliveries` shows a `failed` or dead-lettered delivery, once the consumer's callback endpoint is reachable again and answers 2xx — it re-attempts every not-yet-delivered callback for the session. Usable by the session creator (authenticated by the consumer's `OrgToken`) to recover from a transient consumer-side outage.
3181
+ * @description Re-enqueues delivery of a session's stored result to its callback subscriptions. Use this after `list_verification_deliveries` shows a `failed` or dead-lettered delivery, once the consumer's callback endpoint is reachable again and answers 2xx — it re-attempts every not-yet-delivered callback for the session. Usable by the session creator (authenticated by the consumer's `OrgToken`) to recover from a transient consumer-side outage. A result left undelivered for 7 days is purged and can no longer be retried.
3092
3182
  */
3093
3183
  post: operations["RetryVerificationCallback"];
3094
3184
  delete?: never;
@@ -3128,7 +3218,7 @@ export interface paths {
3128
3218
  put?: never;
3129
3219
  /**
3130
3220
  * Retry a dead-lettered callback (admin-only)
3131
- * @description Admin only. Re-enqueues a specific DLQ entry for delivery.
3221
+ * @description Admin only. Re-enqueues a specific DLQ entry for delivery. 410 when the result was undelivered for 7 days and has been purged.
3132
3222
  */
3133
3223
  post: operations["RetryCallbackDlq"];
3134
3224
  delete?: never;
@@ -3270,6 +3360,64 @@ export interface components {
3270
3360
  ProviderID: string;
3271
3361
  /** Format: uuid */
3272
3362
  OrgID: string;
3363
+ /** @description Body for `POST /verifications/ai-sessions`. */
3364
+ CreateAiVerificationSessionRequest: {
3365
+ /** @description What to verify, in plain language, such as "verify I'm a student at Manipal University". Builder rejects a prompt that contains credentials, card numbers, instructions for the AI, or a sensitive claim. */
3366
+ prompt: string;
3367
+ /** @description Values you already know, such as `{"fullName": "Asha Rao"}`. Builder merges them over the values the prompt states and returns the result in `context`. Must not contain `attestationNonce` or `attestationNonceData`; bind those after you create the session. Omit if you have none. */
3368
+ context?: {
3369
+ [key: string]: unknown;
3370
+ };
3371
+ /** @description Base URL of the registered verification client the user verifies with, as for `POST /verifications/sessions`. Builder charges this client's quota pool. If you omit it, Builder uses the default (`portals`) client. */
3372
+ verificationClientUrl?: string;
3373
+ /** @description ISO 3166-1 alpha-2 country code, such as `IN`. Builder searches the web from this country (Google's `gl` parameter), so portals for that country rank first. If you omit it, the search has no country preference. */
3374
+ geoLocation?: string;
3375
+ };
3376
+ /** @description The lookup `POST /verifications/ai-sessions` started for a session: its status, and once `ready`, the pages to open and the data points to verify there. */
3377
+ AiVerificationSession: {
3378
+ /**
3379
+ * Format: uuid
3380
+ * @description ID of the verification session. To track the session, call `GET /verifications/sessions/{sessionId}`.
3381
+ */
3382
+ sessionId: string;
3383
+ /**
3384
+ * @description `resolving` while Builder looks up the pages and data points. `ready` when `candidates` and `dataPoints` are set. `failed` when the lookup failed: `error` says why, the session ended with status `error`, and its verification was refunded.
3385
+ * @enum {string}
3386
+ */
3387
+ status: "resolving" | "ready" | "failed";
3388
+ /** @description Why the lookup failed. Only when `status` is `failed`. Its `status` is 422 when the prompt isn't a request to verify something about the user, 404 when no login page was found, and 503 when the AI model or web search stayed unavailable. */
3389
+ error?: components["schemas"]["Problem"];
3390
+ /** @description Only when `status` is `ready`. The fewest data points that prove the prompt's claim, required data points first. A data point for a value the prompt states is always required. */
3391
+ dataPoints?: {
3392
+ /** @description Short camelCase name, such as `username`. */
3393
+ name: string;
3394
+ /** @description What the value is and why it proves the claim. */
3395
+ description: string;
3396
+ /** @description If `true`, the claim can be proven without this value, as with `isOptional` on a provider's `ResponseMatch`. If absent, the data point is required. */
3397
+ isOptional?: boolean;
3398
+ }[];
3399
+ /** @description Values the signed-in account must show, such as `{"fullName": "Asha Rao"}`. Each key is the `dataPoints` name that the value pins. It combines the values the prompt states with the request's `context`. It's empty if neither has any. It's the session's `context`. If the prompt names a specific page, such as a post, `pageUrl` holds it: the page to open after the user logs in on the candidate's site. */
3400
+ context: {
3401
+ [key: string]: unknown;
3402
+ };
3403
+ /** @description Only when `status` is `ready`. Pages to open, best first. Each is the page that shows the data after the user signs in (it sends the user to sign in first), or else the sign-in page. Usually one page. Several pages appear only when the choice is ambiguous, such as a college with two or three student portals whose `confidence` values are within 0.1 of the best. In that case, the user picks one on the session's `verificationUrl`. At most one page per host. */
3404
+ candidates?: components["schemas"]["ResolvedLoginPage"][];
3405
+ };
3406
+ /** @description A page for the user to open and sign in to. */
3407
+ ResolvedLoginPage: {
3408
+ /**
3409
+ * Format: uri
3410
+ * @description URL of the page to open. For a `web` page, Builder removes the query and fragment.
3411
+ */
3412
+ loginUrl: string;
3413
+ /** @description Estimated likelihood, from 0 to 1, that signing in here shows the claim. Candidates below 0.5 are never returned. */
3414
+ confidence: number;
3415
+ /**
3416
+ * @description Where the page came from. `catalog` is the page of a provider in the catalog (public, or your organization's own). `web` is a page that a web search found; it has no provider yet.
3417
+ * @enum {string}
3418
+ */
3419
+ source: "catalog" | "web";
3420
+ };
3273
3421
  /** @description A verification client id used as a filter. Hyphens are ignored. */
3274
3422
  VerificationClientIDFilter: string;
3275
3423
  /** @description An organization id used as a filter. Hyphens are ignored, so it matches with or without them; an id that matches no organization returns nothing. */
@@ -3397,11 +3545,9 @@ export interface components {
3397
3545
  */
3398
3546
  EntityStatus: "ACTIVE" | "ARCHIVED";
3399
3547
  /**
3400
- * @description - `PERSONAL`: Auto-provisioned at user signup. Exactly one
3401
- * `OWNER`, no other members.
3402
- *
3403
- * - `ORG`: Explicitly created via `POST /orgs`. Multiple
3404
- * members, always ≥ 1 active `OWNER`.
3548
+ * @description - `ORG`: A user's organization: the default one made at sign-up,
3549
+ * or one created via `POST /orgs`. Multiple members, always ≥ 1
3550
+ * active `OWNER`.
3405
3551
  *
3406
3552
  * - `ANONYMOUS`: System-managed, member-less org auto-created to
3407
3553
  * anchor an unaffiliated ETH credential's org-level settings
@@ -3410,7 +3556,7 @@ export interface components {
3410
3556
  * created or named by clients; has no members.
3411
3557
  * @enum {string}
3412
3558
  */
3413
- OrganizationKind: "PERSONAL" | "ORG" | "ANONYMOUS";
3559
+ OrganizationKind: "ORG" | "ANONYMOUS";
3414
3560
  /** @description A free-form label attached to an entity for grouping and filtering in listings. Must start and end with an alphanumeric character; only ASCII letters, digits, spaces, and hyphens are allowed between. */
3415
3561
  Tag: string;
3416
3562
  ActorMetadata: {
@@ -3419,7 +3565,7 @@ export interface components {
3419
3565
  /** @description Free-form notes from actor describing this change */
3420
3566
  notes?: string;
3421
3567
  };
3422
- /** @description A registered user of the platform. Every newly created user is automatically granted a personal organization (see `Organization.kind = PERSONAL`) whose id is exposed here as `personalOrgId`. */
3568
+ /** @description A registered user of the platform. Every newly created user gets a default organization, whose id is exposed here as `defaultOrgId`. */
3423
3569
  User: {
3424
3570
  id: components["schemas"]["UserID"];
3425
3571
  /**
@@ -3441,13 +3587,13 @@ export interface components {
3441
3587
  * @enum {string}
3442
3588
  */
3443
3589
  role?: "user" | "admin";
3444
- /** @description ID of the user's auto-created personal organization. This organization is provisioned the moment the user is created and cannot be deleted independently of the user. */
3445
- personalOrgId: components["schemas"]["OrgID"];
3590
+ /** @description ID of the organization created for the user at sign-up. It is a regular organization and counts toward the user's org-creation limit. */
3591
+ defaultOrgId: components["schemas"]["OrgID"];
3446
3592
  createMetadata: components["schemas"]["ActorMetadata"];
3447
3593
  updateMetadata: components["schemas"]["ActorMetadata"];
3448
3594
  };
3449
3595
  /**
3450
- * @description Role a user holds in an organization. `OWNER` can invite, promote, demote, and remove members, and delete the org. `MEMBER` has read/write access to resources owned by the org but cannot manage membership. `PERSONAL` orgs have exactly one `OWNER` and reject all member-mutating operations.
3596
+ * @description Role a user holds in an organization. `OWNER` can invite, promote, demote, and remove members, and delete the org. `MEMBER` has read/write access to resources owned by the org but cannot manage membership.
3451
3597
  * @enum {string}
3452
3598
  */
3453
3599
  OrganizationMemberRole: "OWNER" | "MEMBER";
@@ -3482,12 +3628,12 @@ export interface components {
3482
3628
  /** @description Timestamp the invite was accepted. Absent while `status` is `PENDING`. */
3483
3629
  joinedAt?: components["schemas"]["Timestamp"];
3484
3630
  };
3485
- /** @description A workspace that owns providers and other resources. Every user gets exactly one `PERSONAL` organization on signup; additional `ORG` organizations can be created and have multiple members. System-managed `ANONYMOUS` organizations have no members (see `OrganizationKind`). */
3631
+ /** @description A workspace that owns providers and other resources. Every user gets a default `ORG` organization on signup; more can be created up to the user's org-creation limit, and any can have multiple members. System-managed `ANONYMOUS` organizations have no members (see `OrganizationKind`). */
3486
3632
  Organization: {
3487
3633
  id: components["schemas"]["OrgID"];
3488
- /** @description Display name of the organization. For `PERSONAL` orgs this defaults to the owner's name and may be edited by the owner. */
3634
+ /** @description Display name of the organization. A user's default org starts with their name and may be renamed by an owner. */
3489
3635
  name: string;
3490
- /** @description Whether this is a user's personal org or a shared org. */
3636
+ /** @description Whether this is a user's org or a system-managed anonymous one. */
3491
3637
  kind: components["schemas"]["OrganizationKind"];
3492
3638
  /**
3493
3639
  * Format: uri
@@ -3496,7 +3642,7 @@ export interface components {
3496
3642
  iconUrl?: string;
3497
3643
  /** @description Marker for system-managed singleton orgs. `'reclaim-staff'` identifies the auto-membership org that every `@reclaimprotocol.org` user is enrolled into on login (PRD-1 §3). Absent on normal user-created orgs. Names, status, and lifecycle of system-managed orgs are server-protected — clients cannot rename, archive, or delete them. */
3498
3644
  readonly systemId?: string;
3499
- /** @description All users with a role in this organization. `PERSONAL` and `ORG` orgs always contain at least one active `OWNER` (`PERSONAL` orgs contain exactly one member); `ANONYMOUS` orgs have no members, so this array is empty for them. */
3645
+ /** @description All users with a role in this organization. `ORG` orgs always contain at least one active `OWNER`; `ANONYMOUS` orgs have no members, so this array is empty for them. */
3500
3646
  members: components["schemas"]["OrganizationMember"][];
3501
3647
  /** @description Providers owned by this organization. */
3502
3648
  providers?: components["schemas"]["ProviderListItem"][];
@@ -3776,6 +3922,11 @@ export interface components {
3776
3922
  /** @default false */
3777
3923
  canEncryptResult: boolean;
3778
3924
  label?: string;
3925
+ /**
3926
+ * @description Set to true to replace an existing, different public key. Without it, the call returns 409 when the organization already has another key. Results encrypted to the old key can no longer be decrypted.
3927
+ * @default false
3928
+ */
3929
+ replace: boolean;
3779
3930
  };
3780
3931
  /** @description Body for `PUT /orgs/{orgId}/keypair`. Carries the org's eth public key as a secp256k1 public JWK. */
3781
3932
  OrgKeypairJwkRequest: {
@@ -3783,6 +3934,11 @@ export interface components {
3783
3934
  /** @default false */
3784
3935
  canEncryptResult: boolean;
3785
3936
  label?: string;
3937
+ /**
3938
+ * @description Set to true to replace an existing, different public key. Without it, the call returns 409 when the organization already has another key. Results encrypted to the old key can no longer be decrypted.
3939
+ * @default false
3940
+ */
3941
+ replace: boolean;
3786
3942
  };
3787
3943
  /** @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). An org may hold several keys; issuing a new one does not affect the others. */
3788
3944
  OrgToken: {
@@ -5235,7 +5391,7 @@ export interface components {
5235
5391
  webSettings: components["schemas"]["ProviderWebSettings"];
5236
5392
  requiredContext?: components["schemas"]["ProviderRequiredContext"];
5237
5393
  };
5238
- /** @description Body for `POST /orgs` — just a name. Every org is created keyless, like auto-provisioned personal orgs; its Ethereum (secp256k1) key pair is published separately via `PUT /orgs/{orgId}/keypair`, which is also where `canEncryptResult` is set. Creation deliberately collects nothing else so it never blocks on generating and safeguarding a private key. */
5394
+ /** @description Body for `POST /orgs` — just a name. Every org is created keyless, like each user's default org; its Ethereum (secp256k1) key pair is published separately via `PUT /orgs/{orgId}/keypair`, which is also where `canEncryptResult` is set. Creation deliberately collects nothing else so it never blocks on generating and safeguarding a private key. */
5239
5395
  CreateOrgRequest: {
5240
5396
  name: string;
5241
5397
  };
@@ -5742,7 +5898,7 @@ export interface components {
5742
5898
  resolvedVersion: string;
5743
5899
  /** Format: uri */
5744
5900
  initialUrl: string;
5745
- /** @description Legacy-only preference. Builder clients always run the structured recipe and never enable AI or manual verification from this value. */
5901
+ /** @description Effective AI-agent preference: the session's choice, else whether the version is an `llm` provider. When true, the Builder verification page runs the AI authoring agent instead of the structured recipe. */
5746
5902
  preferAiAgent: boolean;
5747
5903
  geoLocation?: string;
5748
5904
  jsUserScripts?: string;
@@ -5792,7 +5948,7 @@ export interface components {
5792
5948
  preferredLocale?: string;
5793
5949
  /** @description When the organization-bound legacy TEE nonce context was first stored. The nonce data itself is present in `context` as `attestationNonce` and `attestationNonceData`. */
5794
5950
  teeNonceBoundAt?: components["schemas"]["Timestamp"];
5795
- /** @description Legacy-only preference echoed for compatibility. Builder-mode clients run the structured recipe and do not enable AI or manual verification. */
5951
+ /** @description The creator's AI-agent preference. When true, the Builder verification page runs the AI authoring agent instead of the structured recipe. */
5796
5952
  preferAiAgent?: boolean;
5797
5953
  /** @description Whether this session was created with diagnostic mode enabled (see CreateVerificationSessionRequest.diagnostics). Set once at creation and never changes afterward. Gates whether Builder records claimant IP addresses and how much detail diagnostic events carry; the `diag` parameter on `verificationUrl` mirrors this value and is not itself authoritative. */
5798
5954
  diagnostics: boolean;
@@ -5816,7 +5972,7 @@ export interface components {
5816
5972
  * @description Id of the registered verification client whose base URL was used (see `verification_clients`).
5817
5973
  */
5818
5974
  verificationClientId: string;
5819
- /** @description Ready-to-share URL: the registered base URL with the session id attached by the Builder — substituted into a `{sessionId}` placeholder, or appended as a `?sessionId=…` query parameter. It always includes `api=2`, which selects Builder mode in dual-mode Verification Clients. The Consumer may append its own redirect query fields before opening the URL for the claimant; the Builder does not store or execute those redirects. */
5975
+ /** @description The URL to send your end user to: this is where they verify. Ready-to-share: the registered base URL with the session id attached by the Builder — substituted into a `{sessionId}` placeholder, or appended as a `?sessionId=…` query parameter. It always includes `api=2`, which selects Builder mode in dual-mode Verification Clients. The Consumer may append its own redirect query fields before opening the URL for the claimant; the Builder does not store or execute those redirects. */
5820
5976
  verificationUrl: string;
5821
5977
  createdAt: components["schemas"]["Timestamp"];
5822
5978
  /** @description When the session stops being completable. After this, a still- `pending` session becomes `expired` on the next sweep and the end-user can no longer finish it. */
@@ -5847,13 +6003,20 @@ export interface components {
5847
6003
  context: {
5848
6004
  [key: string]: unknown;
5849
6005
  };
5850
- /** @description Optional. Must exactly equal the base URL of a registered verification client (see the `verification_clients` registry / `/admin/verification-clients`). Omit to use the default (`portals`) client. The Builder resolves and stores the registered client UUID, then returns the ready-to-share `verificationUrl` with the session id and `api=2`. A URL that is not a registered client's base is rejected with 400. Consumers append any client-owned redirect parameters after receiving the URL; Builder does not manage them. */
6006
+ /**
6007
+ * @description Optional. Must exactly equal the base URL of a registered verification client (see the `verification_clients` registry / `/admin/verification-clients`). Omit to use the default (`portals`) client. The Builder resolves and stores the registered client UUID, then returns the ready-to-share `verificationUrl` with the session id and `api=2`. A URL that is not a registered client's base is rejected with 400. Consumers append any client-owned redirect parameters after receiving the URL; Builder does not manage them. The built-in clients are `{origin}/share/{name}`, listed in the examples.
6008
+ * @example https://build.reclaimprotocol.org/share/portals
6009
+ * @example https://build.reclaimprotocol.org/share/verifier-app
6010
+ * @example https://build.reclaimprotocol.org/share/reclaim-browser-extension
6011
+ * @example https://build.reclaimprotocol.org/share/builder
6012
+ * @example https://build.reclaimprotocol.org/share/inapp-sdk
6013
+ */
5851
6014
  verificationClientUrl?: string;
5852
6015
  /** @description Optional active theme owned by the organization. When omitted, Builder snapshots the organization's most recently updated active theme. If the organization has no active theme, the Verification Client uses its default presentation. */
5853
6016
  themeId?: components["schemas"]["ThemeID"];
5854
6017
  /** @description Optional locale override for this verification session. It takes precedence over the organization theme's preferred locale. */
5855
6018
  preferredLocale?: string;
5856
- /** @description Legacy-only preference. Builder mode runs the structured recipe and does not enable AI or manual verification. Omit this field for Builder-mode sessions; dual-mode clients may continue to interpret it only on their legacy path. */
6019
+ /** @description When true, the Builder verification page runs the AI authoring agent instead of the providers' structured recipes. A proven recipe is published only for the provider's own organization; for any other provider it is submitted for admin review. Omit it to run the stored recipes. */
5857
6020
  preferAiAgent?: boolean;
5858
6021
  /** @description Optional; omit or send false for a normal session. Opts this session into diagnostic mode. A diagnostic session records more event detail, including personal data such as the claimant's IP addresses (see ClaimantDetails.network). Builder appends `diag=1` to the returned `verificationUrl` for a diagnostic session and strips any `diag` value the Consumer's own `verificationClientUrl` carries, so this field — not the URL — is the only way to turn diagnostics on. Treat a diagnostic verification URL as sensitive, and don't hand it to a claimant by default. */
5859
6022
  diagnostics?: boolean;
@@ -6310,6 +6473,31 @@ export interface components {
6310
6473
  export type $defs = Record<string, never>;
6311
6474
  export interface operations {
6312
6475
  Index: {
6476
+ parameters: {
6477
+ query?: {
6478
+ /** @description Free-text query matched against website domain, data points, brand title, and description. Restores the search box and results on a shared/bookmarked link. */
6479
+ q?: string;
6480
+ /** @description Narrow to websites with at least one visible provider carrying ANY of these tags. Repeat to pass several (OR-combined). */
6481
+ tag?: string[];
6482
+ };
6483
+ header?: never;
6484
+ path?: never;
6485
+ cookie?: never;
6486
+ };
6487
+ requestBody?: never;
6488
+ responses: {
6489
+ 200: components["responses"]["HTMLResponse"];
6490
+ /** @description Signed in; redirects to the Dashboard. */
6491
+ 302: {
6492
+ headers: {
6493
+ [name: string]: unknown;
6494
+ };
6495
+ content?: never;
6496
+ };
6497
+ default: components["responses"]["ProblemResponse"];
6498
+ };
6499
+ };
6500
+ Discover: {
6313
6501
  parameters: {
6314
6502
  query?: {
6315
6503
  /** @description Free-text query matched against website domain, data points, brand title, and description. Restores the search box and results on a shared/bookmarked link. */
@@ -6678,40 +6866,6 @@ export interface operations {
6678
6866
  default: components["responses"]["ProblemResponse"];
6679
6867
  };
6680
6868
  };
6681
- SiteBuildRepair: {
6682
- parameters: {
6683
- query: {
6684
- /** @description The failing sandbox session whose analytics seed the prompt. */
6685
- sessionId: components["schemas"]["SessionID"];
6686
- dataPoints?: string[];
6687
- mode?: components["schemas"]["ResolveMode"];
6688
- provided?: string[];
6689
- /** @description Source pins: `pins[<dataPoint>]=<providerId>`. Pins the provider that must prove that data point; a pinned provider is taken first and is never pruned. Omit (or send empty) for Auto. A comma-separated list is also accepted — the first id that covers the point wins. */
6690
- pins?: {
6691
- [key: string]: string;
6692
- };
6693
- exclude?: components["schemas"]["ProviderID"][];
6694
- };
6695
- header?: never;
6696
- path: {
6697
- domain: string;
6698
- };
6699
- cookie?: never;
6700
- };
6701
- requestBody?: never;
6702
- responses: {
6703
- /** @description The repair wizard fragment. */
6704
- 200: {
6705
- headers: {
6706
- [name: string]: unknown;
6707
- };
6708
- content: {
6709
- "text/html": components["schemas"]["HtmlContent"];
6710
- };
6711
- };
6712
- default: components["responses"]["ProblemResponse"];
6713
- };
6714
- };
6715
6869
  SiteBuildAlternative: {
6716
6870
  parameters: {
6717
6871
  query: {
@@ -6753,49 +6907,22 @@ export interface operations {
6753
6907
  default: components["responses"]["ProblemResponse"];
6754
6908
  };
6755
6909
  };
6756
- DiscoverTeachAgent: {
6910
+ OpenIntegrate: {
6757
6911
  parameters: {
6758
- query?: {
6759
- /** @description Website the user wanted to verify data from. */
6760
- domain?: string;
6761
- /** @description Specific data point the user could not find. */
6762
- dataPoint?: string;
6763
- };
6912
+ query?: never;
6764
6913
  header?: never;
6765
6914
  path?: never;
6766
6915
  cookie?: never;
6767
6916
  };
6768
6917
  requestBody?: never;
6769
6918
  responses: {
6770
- 200: components["responses"]["HTMLResponse"];
6771
- default: components["responses"]["ProblemResponse"];
6772
- };
6773
- };
6774
- DiscoverAgentWizard: {
6775
- parameters: {
6776
- query?: never;
6777
- header?: never;
6778
- path?: never;
6779
- cookie?: never;
6780
- };
6781
- requestBody: {
6782
- content: {
6783
- "application/x-www-form-urlencoded": {
6784
- /** @description The wizard's ready-to-paste task prompt. */
6785
- basePrompt: string;
6786
- /** @description Prefix of the wizard's element ids, so copy targets stay unique. */
6787
- idPrefix: string;
6788
- /** @description Picked coding agent; unknown values fall back to the first. */
6789
- agent?: string;
6790
- /** @description What the user is building, appended to the prompt. */
6791
- building?: string;
6792
- /** @description Label for `building` in the prompt. Defaults to "What I'm building". */
6793
- lead?: string;
6919
+ /** @description Redirect to the Integrate page, or to sign-in. */
6920
+ 302: {
6921
+ headers: {
6922
+ [name: string]: unknown;
6794
6923
  };
6924
+ content?: never;
6795
6925
  };
6796
- };
6797
- responses: {
6798
- 200: components["responses"]["HTMLResponse"];
6799
6926
  default: components["responses"]["ProblemResponse"];
6800
6927
  };
6801
6928
  };
@@ -7077,7 +7204,7 @@ export interface operations {
7077
7204
  AdminUsers: {
7078
7205
  parameters: {
7079
7206
  query?: {
7080
- /** @description Matches email, name, user id, or personal organization id (hyphens optional in ids). */
7207
+ /** @description Matches email, name, user id, or default organization id (hyphens optional in ids). */
7081
7208
  q?: string;
7082
7209
  };
7083
7210
  header?: never;
@@ -8081,6 +8208,14 @@ export interface operations {
8081
8208
  api?: "2";
8082
8209
  /** @description Backend-derived echo of the session's `diagnostics` field, carried through to the launched destination unchanged. See the same parameter on `VerificationPage`. */
8083
8210
  diag?: "1";
8211
+ /** @description Added to the session's `launchOptions` if it has none. */
8212
+ redirectUrl?: string;
8213
+ /** @description JSON `VerificationLaunchRedirectOptions`. Added to the session's `launchOptions` if it has none. */
8214
+ redirectUrlOptions?: string;
8215
+ /** @description Added to the session's `launchOptions` if it has none. */
8216
+ cancelRedirectUrl?: string;
8217
+ /** @description JSON `VerificationLaunchRedirectOptions`. Added to the session's `launchOptions` if it has none. */
8218
+ cancelRedirectUrlOptions?: string;
8084
8219
  };
8085
8220
  header?: never;
8086
8221
  path: {
@@ -8247,7 +8382,7 @@ export interface operations {
8247
8382
  "text/html": components["schemas"]["HtmlContent"];
8248
8383
  };
8249
8384
  };
8250
- /** @description The new or existing repair session. */
8385
+ /** @description The new repair session. */
8251
8386
  201: {
8252
8387
  headers: {
8253
8388
  [name: string]: unknown;
@@ -8259,28 +8394,6 @@ export interface operations {
8259
8394
  default: components["responses"]["ProblemResponse"];
8260
8395
  };
8261
8396
  };
8262
- ActivateFixWithAiRepair: {
8263
- parameters: {
8264
- query?: never;
8265
- header?: never;
8266
- path: {
8267
- sessionId: components["schemas"]["SessionID"];
8268
- };
8269
- cookie?: never;
8270
- };
8271
- requestBody?: never;
8272
- responses: {
8273
- /** @description The repair was queued or was already active. */
8274
- 204: {
8275
- headers: {
8276
- [name: string]: unknown;
8277
- };
8278
- content?: never;
8279
- };
8280
- 409: components["responses"]["ProblemResponse"];
8281
- default: components["responses"]["ProblemResponse"];
8282
- };
8283
- };
8284
8397
  JwksJson: {
8285
8398
  parameters: {
8286
8399
  query?: never;
@@ -8754,9 +8867,11 @@ export interface operations {
8754
8867
  /** @description Integrate tab only. Which integration path to show: a coding agent over MCP, the client package, or plain HTTP. */
8755
8868
  track?: "agent" | "sdk" | "http";
8756
8869
  /** @description Integrate tab, agent track only. Which coding agent's install command to show. */
8757
- agent?: "claude" | "cursor" | "opencode" | "codex" | "others";
8758
- /** @description Dashboard tab only. Scopes the report to sessions that ran this provider. Options come from `GET /orgs/{orgId}/providers/used`. */
8759
- providerId?: components["schemas"]["ProviderID"];
8870
+ agent?: "claude" | "copilot" | "cursor" | "omp" | "opencode" | "codex" | "antigravity" | "others";
8871
+ /** @description Integrate tab, agent track only. What users prove, as typed into the prompt's goal field; kept when another agent is picked. */
8872
+ goal?: string;
8873
+ /** @description Integrate tab: the providers to show in the examples in place of placeholder ids, for example when arriving from a provider page or a build page. Repeat to pass several. Dashboard tab: scopes the report to sessions that ran this provider (the first one); options come from `GET /orgs/{orgId}/providers/used`. */
8874
+ providerId?: components["schemas"]["ProviderID"][];
8760
8875
  /** @description Integrate tab, HTTP track only. Which Verification Client the create-session example targets. `auto` (the default) leaves `verificationClientUrl` out. */
8761
8876
  client?: "auto" | "portals" | "verifier-app" | "reclaim-browser-extension" | "builder" | "inapp-sdk";
8762
8877
  /** @description Dashboard tab only. Start of the reporting period; defaults to 30 days before `to`. */
@@ -8772,7 +8887,7 @@ export interface operations {
8772
8887
  /** @description Providers tab only. Renders the New provider dialog already open, so a link from another page can land on it. */
8773
8888
  newProvider?: boolean;
8774
8889
  /** @description Post-checkout status signal set by Stripe redirect (`success_url` / `cancel_url`), the card-save flow, and the credit top-up. Drives a one-shot notice and deep-links to the Billing tab; nothing else about the page depends on it. */
8775
- billing?: "success" | "cancelled" | "changed" | "credits";
8890
+ billing?: "success" | "cancelled" | "changed" | "credits" | "card";
8776
8891
  };
8777
8892
  header?: never;
8778
8893
  path: {
@@ -8846,31 +8961,6 @@ export interface operations {
8846
8961
  default: components["responses"]["ProblemResponse"];
8847
8962
  };
8848
8963
  };
8849
- ConvertOrgToRegular: {
8850
- parameters: {
8851
- query?: never;
8852
- header?: never;
8853
- path: {
8854
- orgId: components["schemas"]["OrgID"];
8855
- };
8856
- cookie?: never;
8857
- };
8858
- requestBody?: never;
8859
- responses: {
8860
- /** @description Converted */
8861
- 200: {
8862
- headers: {
8863
- [name: string]: unknown;
8864
- };
8865
- content: {
8866
- "application/json": components["schemas"]["Organization"];
8867
- };
8868
- };
8869
- 403: components["responses"]["ForbiddenResponse"];
8870
- 409: components["responses"]["ProblemResponse"];
8871
- default: components["responses"]["ProblemResponse"];
8872
- };
8873
- };
8874
8964
  SearchOrgMembers: {
8875
8965
  parameters: {
8876
8966
  query?: {
@@ -9257,6 +9347,7 @@ export interface operations {
9257
9347
  };
9258
9348
  400: components["responses"]["ProblemResponse"];
9259
9349
  403: components["responses"]["ForbiddenResponse"];
9350
+ 409: components["responses"]["ProblemResponse"];
9260
9351
  default: components["responses"]["ProblemResponse"];
9261
9352
  };
9262
9353
  };
@@ -9665,6 +9756,33 @@ export interface operations {
9665
9756
  default: components["responses"]["ProblemResponse"];
9666
9757
  };
9667
9758
  };
9759
+ CreateCardSetupSession: {
9760
+ parameters: {
9761
+ query?: never;
9762
+ header?: never;
9763
+ path: {
9764
+ orgId: components["schemas"]["OrgID"];
9765
+ };
9766
+ cookie?: never;
9767
+ };
9768
+ requestBody?: never;
9769
+ responses: {
9770
+ /** @description Checkout session created */
9771
+ 200: {
9772
+ headers: {
9773
+ [name: string]: unknown;
9774
+ };
9775
+ content: {
9776
+ "application/json": {
9777
+ /** Format: uri */
9778
+ url: string;
9779
+ };
9780
+ };
9781
+ };
9782
+ 403: components["responses"]["ForbiddenResponse"];
9783
+ default: components["responses"]["ProblemResponse"];
9784
+ };
9785
+ };
9668
9786
  CancelBillingSubscription: {
9669
9787
  parameters: {
9670
9788
  query?: never;
@@ -10861,10 +10979,16 @@ export interface operations {
10861
10979
  [name: string]: unknown;
10862
10980
  };
10863
10981
  content: {
10864
- "text/html": components["schemas"]["HtmlContent"];
10865
10982
  "application/json": components["schemas"]["VerificationAnalytics"];
10866
10983
  };
10867
10984
  };
10985
+ /** @description A browser; redirects to the org's Dashboard. */
10986
+ 302: {
10987
+ headers: {
10988
+ [name: string]: unknown;
10989
+ };
10990
+ content?: never;
10991
+ };
10868
10992
  403: components["responses"]["ForbiddenResponse"];
10869
10993
  default: components["responses"]["ProblemResponse"];
10870
10994
  };
@@ -10930,6 +11054,90 @@ export interface operations {
10930
11054
  default: components["responses"]["ProblemResponse"];
10931
11055
  };
10932
11056
  };
11057
+ CreateAiVerificationSession: {
11058
+ parameters: {
11059
+ query?: never;
11060
+ header?: never;
11061
+ path?: never;
11062
+ cookie?: never;
11063
+ };
11064
+ requestBody: {
11065
+ content: {
11066
+ "application/json": components["schemas"]["CreateAiVerificationSessionRequest"];
11067
+ };
11068
+ };
11069
+ responses: {
11070
+ /** @description Session created */
11071
+ 201: {
11072
+ headers: {
11073
+ [name: string]: unknown;
11074
+ };
11075
+ content: {
11076
+ "application/json": components["schemas"]["VerificationSession"];
11077
+ };
11078
+ };
11079
+ /** @description Overage is paused: the organization is past its plan allowance, and its prepaid credits and credit-exhaustion allowance are spent (`event: billing_required`). */
11080
+ 402: {
11081
+ headers: {
11082
+ [name: string]: unknown;
11083
+ };
11084
+ content: {
11085
+ "application/problem+json": components["schemas"]["Problem"];
11086
+ };
11087
+ };
11088
+ /** @description The organization has no callback subscription. */
11089
+ 409: {
11090
+ headers: {
11091
+ [name: string]: unknown;
11092
+ };
11093
+ content: {
11094
+ "application/problem+json": components["schemas"]["Problem"];
11095
+ };
11096
+ };
11097
+ /** @description The verification quota is exceeded (`event: billing_required` with a terminal `sessionId`). */
11098
+ 429: {
11099
+ headers: {
11100
+ [name: string]: unknown;
11101
+ };
11102
+ content: {
11103
+ "application/problem+json": components["schemas"]["Problem"];
11104
+ };
11105
+ };
11106
+ default: components["responses"]["ProblemResponse"];
11107
+ };
11108
+ };
11109
+ GetAiVerificationSession: {
11110
+ parameters: {
11111
+ query?: never;
11112
+ header?: never;
11113
+ path: {
11114
+ sessionId: components["schemas"]["SessionID"];
11115
+ };
11116
+ cookie?: never;
11117
+ };
11118
+ requestBody?: never;
11119
+ responses: {
11120
+ /** @description Ok */
11121
+ 200: {
11122
+ headers: {
11123
+ [name: string]: unknown;
11124
+ };
11125
+ content: {
11126
+ "application/json": components["schemas"]["AiVerificationSession"];
11127
+ };
11128
+ };
11129
+ /** @description No session with this ID, or the session wasn't created by `POST /verifications/ai-sessions`. */
11130
+ 404: {
11131
+ headers: {
11132
+ [name: string]: unknown;
11133
+ };
11134
+ content: {
11135
+ "application/problem+json": components["schemas"]["Problem"];
11136
+ };
11137
+ };
11138
+ default: components["responses"]["ProblemResponse"];
11139
+ };
11140
+ };
10933
11141
  GetVerificationSession: {
10934
11142
  parameters: {
10935
11143
  query?: never;
@@ -11275,8 +11483,8 @@ export interface operations {
11275
11483
  /** Format: uuid */
11276
11484
  subscriptionId: string;
11277
11485
  event: components["schemas"]["VerificationEvent"];
11278
- /** @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. */
11279
- payload: string;
11486
+ /** @description The payload, as raw text. For a signed result: an ECIES ciphertext (base64url) wrapping the signed result JWS when the org's `canEncryptResult` is enabled, else the plaintext signed JWS JSON. For an event notification: `{event, eventData}` JSON. `null` once a signed result was delivered, or after 7 days undelivered. */
11487
+ payload: string | null;
11280
11488
  deliveryStatus: components["schemas"]["CallbackDeliveryStatus"];
11281
11489
  createdAt: components["schemas"]["Timestamp"];
11282
11490
  }[];
@@ -11353,6 +11561,7 @@ export interface operations {
11353
11561
  };
11354
11562
  403: components["responses"]["ForbiddenResponse"];
11355
11563
  404: components["responses"]["ProblemResponse"];
11564
+ 410: components["responses"]["ProblemResponse"];
11356
11565
  default: components["responses"]["ProblemResponse"];
11357
11566
  };
11358
11567
  };