@reclaimprotocol/client 0.1.42 → 0.1.44

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.
@@ -741,6 +741,66 @@ export interface paths {
741
741
  patch?: never;
742
742
  trace?: never;
743
743
  };
744
+ "/admin/orgs/{orgId}/ai-app-key": {
745
+ parameters: {
746
+ query?: never;
747
+ header?: never;
748
+ path?: never;
749
+ cookie?: never;
750
+ };
751
+ /**
752
+ * Get an org's AI application key (admin-only)
753
+ * @description Admin only. Returns the metadata of the organization's active AI application key. Returns `404` if the organization has no key yet; Builder creates one when the organization starts its first AI session. The response never includes the secret.
754
+ */
755
+ get: operations["AdminGetOrgAiAppKey"];
756
+ put?: never;
757
+ post?: never;
758
+ delete?: never;
759
+ options?: never;
760
+ head?: never;
761
+ patch?: never;
762
+ trace?: never;
763
+ };
764
+ "/admin/orgs/{orgId}/ai-app-key/rotate": {
765
+ parameters: {
766
+ query?: never;
767
+ header?: never;
768
+ path?: never;
769
+ cookie?: never;
770
+ };
771
+ get?: never;
772
+ put?: never;
773
+ /**
774
+ * Rotate an org's AI application key (admin-only)
775
+ * @description Admin only. Creates and registers a new AI application key and makes it the organization's active key. Builder disables the previous key in Builder only, so sessions that already started keep working until they expire. If the organization has no active key because staff disabled it, this issues a fresh key and so re-enables AI sessions for the organization. Returns `404` only if the organization doesn't exist. Returns the new key's metadata, never its secret.
776
+ */
777
+ post: operations["AdminRotateOrgAiAppKey"];
778
+ delete?: never;
779
+ options?: never;
780
+ head?: never;
781
+ patch?: never;
782
+ trace?: never;
783
+ };
784
+ "/admin/orgs/{orgId}/ai-app-key/disable": {
785
+ parameters: {
786
+ query?: never;
787
+ header?: never;
788
+ path?: never;
789
+ cookie?: never;
790
+ };
791
+ get?: never;
792
+ put?: never;
793
+ /**
794
+ * Disable an org's AI application key (admin-only)
795
+ * @description Admin only. Disables the organization's active AI application key at the AI SDK backend first, then in Builder. If the AI SDK backend call fails, the response is `503` and the key stays active, so you can retry. The disable persists: the organization's AI sessions fail with `403` until staff rotate the key with `POST /admin/orgs/{orgId}/ai-app-key/rotate`. Returns `404` if the organization has no active key. Returns the disabled key's metadata, never its secret.
796
+ */
797
+ post: operations["AdminDisableOrgAiAppKey"];
798
+ delete?: never;
799
+ options?: never;
800
+ head?: never;
801
+ patch?: never;
802
+ trace?: never;
803
+ };
744
804
  "/admin/orgs/{orgId}/credits": {
745
805
  parameters: {
746
806
  query?: never;
@@ -2943,6 +3003,20 @@ export interface paths {
2943
3003
  * the prompt states, such as the user's name, merged with the `context`
2944
3004
  * you send. Your values take precedence.
2945
3005
  *
3006
+ * You can also send `dataPoints` (the values to verify, each with a
3007
+ * `name`, a `description`, and an optional `isOptional` flag) and
3008
+ * `loginUrls` (pages where the user signs in). Send a `prompt`, at least
3009
+ * one data point, or both. When you send `loginUrls`, Builder lists them
3010
+ * first as candidates and skips the web search. When you send
3011
+ * `dataPoints`, Builder keeps them and adds only optional ones. Every
3012
+ * required data point must appear in the verified proofs; optional ones
3013
+ * can be absent. Set
3014
+ * `isEmailVerificationAllowed` to `true` to let the user choose
3015
+ * email verification on the share page.
3016
+ *
3017
+ * The first AI session of an organization creates and registers an
3018
+ * application key for the organization. You don't manage this key.
3019
+ *
2946
3020
  * On `201`, the session has no providers: the AI agent works out how to
2947
3021
  * verify. The organization needs a callback subscription. The session
2948
3022
  * uses one verification from the quota pool of the
@@ -2958,14 +3032,31 @@ export interface paths {
2958
3032
  * curl -X POST $BASE/verifications/ai-sessions \
2959
3033
  * -H "Authorization: Bearer $ORG_TOKEN" \
2960
3034
  * -H 'Content-Type: application/json' \
2961
- * -d '{"prompt":"verify I am a student at Manipal University"}'
3035
+ * -d '{
3036
+ * "prompt": "verify I am a student at Manipal University",
3037
+ * "dataPoints": [
3038
+ * {"name": "fullName", "description": "Name of the student"},
3039
+ * {"name": "studentId", "description": "Student ID", "isOptional": true}
3040
+ * ],
3041
+ * "loginUrls": ["https://learner.manipal.edu/login"],
3042
+ * "isEmailVerificationAllowed": false
3043
+ * }'
2962
3044
  *
2963
3045
  * Errors:
2964
3046
  *
2965
3047
  * - `400`: Builder rejects the prompt (for example, it targets an
2966
- * internal host), `context` contains `attestationNonce` or
2967
- * `attestationNonceData`, or `verificationClientUrl` isn't a
2968
- * registered client.
3048
+ * internal host), the request has no `prompt` and no `dataPoints`,
3049
+ * `dataPoints` has duplicate names or no required item, a login URL
3050
+ * isn't a public `http` or `https` URL, the prompt and data points
3051
+ * together exceed 10,000 characters, `context` contains a reserved key
3052
+ * (`attestationNonce`, `attestationNonceData`, `reclaimSessionId`,
3053
+ * `extractedParameters`, or `builderSessionId`), or
3054
+ * `verificationClientUrl` isn't a registered client.
3055
+ * - `403`: Reclaim staff disabled AI sessions for the organization.
3056
+ * Contact Reclaim support.
3057
+ * - `503`: Builder couldn't create or register the organization's
3058
+ * application key. Builder doesn't charge a verification. Retry the
3059
+ * request.
2969
3060
  * - `409`: The organization has no callback subscription.
2970
3061
  * - `429` or `402`: The quota or credits are spent. The body has
2971
3062
  * `event: billing_required` and a terminal `sessionId`.
@@ -2995,10 +3086,13 @@ export interface paths {
2995
3086
  * `error`. Poll every second or two while it's `resolving`.
2996
3087
  *
2997
3088
  * `candidates` lists the pages to open, best first, each with a
2998
- * `source` of `catalog` or `web`. It usually has one page. It has
2999
- * several (up to 3) only when their `confidence` values are within 0.1
3000
- * of the best page's value. In that case, the user picks one on the
3001
- * session's `verificationUrl`.
3089
+ * `source` of `caller`, `catalog`, or `web`. URLs you sent in
3090
+ * `loginUrls` come first, up to 10 candidates in all. Without
3091
+ * `loginUrls`, it usually has one page, and several (up to 3) only when
3092
+ * their `confidence` values are within 0.1 of the best page's value. In
3093
+ * that case, the user picks one on the session's `verificationUrl`.
3094
+ * After the user picks a page, `status` is `started` and
3095
+ * `selectedLoginUrl` holds it.
3002
3096
  *
3003
3097
  * The `OrgToken` must resolve to the session's organization. To track
3004
3098
  * the session's status, call `GET /verifications/sessions/{sessionId}`.
@@ -3015,6 +3109,66 @@ export interface paths {
3015
3109
  patch?: never;
3016
3110
  trace?: never;
3017
3111
  };
3112
+ "/verifications/ai-sessions/{sessionId}/start": {
3113
+ parameters: {
3114
+ query?: never;
3115
+ header?: never;
3116
+ path?: never;
3117
+ cookie?: never;
3118
+ };
3119
+ get?: never;
3120
+ put?: never;
3121
+ /**
3122
+ * Start an AI verification session on a chosen page
3123
+ * @description Starts the verification on one of the session's `candidates` and returns the URL of the remote browser where the user signs in. The share page calls this endpoint. The registered `x-reclaim-vc-id` must match the client selected when the session was created. `loginUrl` must be one of the session's candidates. The call is idempotent: after the session starts, it returns the same `verificationUrl` and ignores `loginUrl`. The call returns `409` while the lookup is `resolving` or after it `failed`, and when the session has finished.
3124
+ */
3125
+ post: operations["StartAiVerificationSession"];
3126
+ delete?: never;
3127
+ options?: never;
3128
+ head?: never;
3129
+ patch?: never;
3130
+ trace?: never;
3131
+ };
3132
+ "/verifications/ai-sessions/{sessionId}/proofs": {
3133
+ parameters: {
3134
+ query?: never;
3135
+ header?: never;
3136
+ path?: never;
3137
+ cookie?: never;
3138
+ };
3139
+ get?: never;
3140
+ put?: never;
3141
+ /**
3142
+ * Receive the proofs of an AI verification session
3143
+ * @description Callback that Reclaim Popcorn calls when the user finishes an AI verification. Consumers don't call this endpoint. The body is the array of proofs. Builder verifies them, checks that any values in the session's `context` match the extracted values (ignoring case and surrounding whitespace), and records the result. Every required data point must have a non-empty extracted value. If any is missing, the session ends as `rejected` with `reasonCode` `missing-data-points`, and the problem detail names the missing data points, never their values. It then delivers the result, with the proofs and extracted parameters, to your callback subscriptions. The `x-reclaim-session-id` header must equal the ID that Builder stored when it started the session; otherwise the endpoint returns `404`. The endpoint returns `400` for invalid proofs and doesn't change the session. If the session has already finished, the endpoint returns `200` and does nothing.
3144
+ */
3145
+ post: operations["ReceiveAiVerificationProofs"];
3146
+ delete?: never;
3147
+ options?: never;
3148
+ head?: never;
3149
+ patch?: never;
3150
+ trace?: never;
3151
+ };
3152
+ "/verifications/ai-sessions/{sessionId}/cancel": {
3153
+ parameters: {
3154
+ query?: never;
3155
+ header?: never;
3156
+ path?: never;
3157
+ cookie?: never;
3158
+ };
3159
+ get?: never;
3160
+ put?: never;
3161
+ /**
3162
+ * Receive the cancellation of an AI verification session
3163
+ * @description Callback that Reclaim Popcorn calls when an AI verification is cancelled or fails. Consumers don't call this endpoint. Builder ends the session with status `error`, using `message` from the body (a string of up to 500 characters) as the error message, and delivers the failure to your `verification_error` callbacks. The `x-reclaim-session-id` header must equal the ID that Builder stored when it started the session; otherwise the endpoint returns `404`. If the session has already finished, the endpoint returns `200` and does nothing.
3164
+ */
3165
+ post: operations["ReceiveAiVerificationCancel"];
3166
+ delete?: never;
3167
+ options?: never;
3168
+ head?: never;
3169
+ patch?: never;
3170
+ trace?: never;
3171
+ };
3018
3172
  "/verifications/sessions/{sessionId}": {
3019
3173
  parameters: {
3020
3174
  query?: never;
@@ -3408,13 +3562,19 @@ export interface paths {
3408
3562
  * has exhausted its `ZKFETCH` pool is refused (`402`/`429`) and never
3409
3563
  * receives a usable token.
3410
3564
  *
3565
+ * Attestor authentication is optional. If the deployment doesn't use
3566
+ * it (no `ATTESTOR_AUTH_PRIVATE_KEY`), the request is still
3567
+ * authenticated, counted against the `ZKFETCH` pool, and logged, but
3568
+ * the response is an empty object. In that case, connect to the
3569
+ * attestor without an auth request.
3570
+ *
3411
3571
  * `host` is recorded for observability only — the minted token is
3412
3572
  * **not** restricted to it and today authorizes a proof against any
3413
3573
  * host, exactly like every other Builder-issued attestor token. Host
3414
3574
  * enforcement, if it ships, will be a server-side change rather than a
3415
3575
  * breaking one.
3416
3576
  *
3417
- * `expiresAt` is always about ten seconds after issuance. The attestor
3577
+ * When present, `expiresAt` is about ten seconds after issuance. The attestor
3418
3578
  * checks expiry only once, at the auth handshake — never again for the
3419
3579
  * life of the connection — so this window only has to cover Builder
3420
3580
  * issuing the token and the caller opening its attestor connection; the
@@ -3514,11 +3674,24 @@ export interface components {
3514
3674
  ProviderID: string;
3515
3675
  /** Format: uuid */
3516
3676
  OrgID: string;
3517
- /** @description Body for `POST /verifications/ai-sessions`. */
3677
+ /** @description Body for `POST /verifications/ai-sessions`. Send a `prompt`, at least one entry in `dataPoints`, or both. */
3518
3678
  CreateAiVerificationSessionRequest: {
3519
- /** @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. */
3520
- prompt: string;
3521
- /** @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. */
3679
+ /** @description What to verify, in plain language, such as "verify I'm a student at Manipal University". Required unless `dataPoints` has at least one item. Builder rejects a prompt that contains credentials, card numbers, instructions for the AI, or a sensitive claim. The prompt and the data point lines together can't exceed 10,000 characters. */
3680
+ prompt?: string;
3681
+ /** @description The values to verify. Required unless you send a `prompt`. Names must be unique, and at least one data point must be required (its `isOptional` is `false` or absent). When you send data points, Builder keeps them and adds only optional data points that the prompt implies. When you send none, Builder chooses the data points from the prompt. Every required data point must appear in the verified proofs. If one is missing, the session ends as `rejected` with `reasonCode` `missing-data-points`. */
3682
+ dataPoints?: {
3683
+ /** @description Name of the value, such as `username`. Starts with a letter or underscore, followed by up to 63 letters, digits, or underscores. */
3684
+ name: string;
3685
+ /** @description What the value is and why it proves the claim. */
3686
+ description: string;
3687
+ /** @description Defaults to `false`. If `true`, the claim can be proven without this value, and the proofs can omit it. If `false` or absent, the data point is required, and a session whose proofs omit it ends as `rejected` with `reasonCode` `missing-data-points`. */
3688
+ isOptional?: boolean;
3689
+ }[];
3690
+ /** @description Pages where the user signs in, such as `https://portal.example.edu/login`. Builder shows them first as candidates with source `caller`, and skips the web search. Each URL must use `http` or `https`, can't contain credentials, and must resolve to a public host. */
3691
+ loginUrls?: string[];
3692
+ /** @description Defaults to `false`. If `true`, the share page offers the user a choice to verify using email instead of signing in. If you omit it, the page doesn't offer that choice. */
3693
+ isEmailVerificationAllowed?: boolean;
3694
+ /** @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. Also must not contain `reclaimSessionId`, `extractedParameters`, or `builderSessionId`. Omit if you have none. */
3522
3695
  context?: {
3523
3696
  [key: string]: unknown;
3524
3697
  };
@@ -3527,6 +3700,45 @@ export interface components {
3527
3700
  /** @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. */
3528
3701
  geoLocation?: string;
3529
3702
  };
3703
+ /** @description Body for `POST /verifications/ai-sessions/{sessionId}/start`. */
3704
+ StartAiVerificationSessionRequest: {
3705
+ /**
3706
+ * Format: uri
3707
+ * @description The page to open. Must be the `loginUrl` of one of the session's `candidates`.
3708
+ */
3709
+ loginUrl: string;
3710
+ };
3711
+ StartAiVerificationSessionResponse: {
3712
+ /**
3713
+ * Format: uri
3714
+ * @description URL of the remote browser where the user signs in.
3715
+ */
3716
+ verificationUrl: string;
3717
+ };
3718
+ AiVerificationCallbackAck: {
3719
+ /** @description Always `true`. */
3720
+ ok: boolean;
3721
+ };
3722
+ /** @description Metadata of an organization's AI application key. The response never includes the key's secret. */
3723
+ AdminOrgAiAppKey: {
3724
+ /** @description Public identifier (an Ethereum address) of the key. */
3725
+ appId: string;
3726
+ /**
3727
+ * Format: date-time
3728
+ * @description When Builder created the key.
3729
+ */
3730
+ createdAt: string;
3731
+ /**
3732
+ * Format: date-time
3733
+ * @description When Builder registered the key with the AI SDK backend, or `null` if registration hasn't completed.
3734
+ */
3735
+ registeredAt: string | null;
3736
+ /**
3737
+ * Format: date-time
3738
+ * @description When the key was disabled, or `null` if it's active.
3739
+ */
3740
+ disabledAt: string | null;
3741
+ };
3530
3742
  /** @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. */
3531
3743
  AiVerificationSession: {
3532
3744
  /**
@@ -3535,27 +3747,34 @@ export interface components {
3535
3747
  */
3536
3748
  sessionId: string;
3537
3749
  /**
3538
- * @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.
3750
+ * @description `resolving` while Builder looks up the pages and data points. `ready` when `candidates` and `dataPoints` are set. `started` when the user has picked a page and the verification is running; the session's own status stays `pending` until it finishes. `failed` when the lookup failed: `error` says why, the session ended with status `error`, and its verification was refunded.
3539
3751
  * @enum {string}
3540
3752
  */
3541
- status: "resolving" | "ready" | "failed";
3753
+ status: "resolving" | "ready" | "started" | "failed";
3542
3754
  /** @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. */
3543
3755
  error?: components["schemas"]["Problem"];
3544
- /** @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. */
3756
+ /** @description Only when `status` is `ready` or `started`. The data points to verify, required data points first. They combine the data points you sent with any optional ones Builder added. If you sent none, Builder chooses the fewest that prove the prompt's claim. A data point for a value the prompt or `context` states is always required. */
3545
3757
  dataPoints?: {
3546
- /** @description Short camelCase name, such as `username`. */
3758
+ /** @description Name of the value, such as `username`. */
3547
3759
  name: string;
3548
3760
  /** @description What the value is and why it proves the claim. */
3549
3761
  description: string;
3550
- /** @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. */
3551
- isOptional?: boolean;
3762
+ /** @description If `true`, the claim can be proven without this value, as with `isOptional` on a provider's `ResponseMatch`. If `false`, the data point is required. */
3763
+ isOptional: boolean;
3552
3764
  }[];
3553
3765
  /** @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. */
3554
3766
  context: {
3555
3767
  [key: string]: unknown;
3556
3768
  };
3557
- /** @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. */
3769
+ /** @description Only when `status` is `ready` or `started`. 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. URLs you sent in `loginUrls` come first (source `caller`, confidence 1), up to 10 candidates in all. Otherwise it's usually one page, and 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. */
3558
3770
  candidates?: components["schemas"]["ResolvedLoginPage"][];
3771
+ /** @description Whether the share page offers the user a choice to verify using email. Matches the value you sent when you created the session. */
3772
+ isEmailVerificationAllowed: boolean;
3773
+ /**
3774
+ * Format: uri
3775
+ * @description The page the user picked. Only when `status` is `started`.
3776
+ */
3777
+ selectedLoginUrl?: string;
3559
3778
  };
3560
3779
  /** @description A page for the user to open and sign in to. */
3561
3780
  ResolvedLoginPage: {
@@ -3567,10 +3786,10 @@ export interface components {
3567
3786
  /** @description Estimated likelihood, from 0 to 1, that signing in here shows the claim. Candidates below 0.5 are never returned. */
3568
3787
  confidence: number;
3569
3788
  /**
3570
- * @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.
3789
+ * @description Where the page came from. `caller` is a URL you sent in `loginUrls`. `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.
3571
3790
  * @enum {string}
3572
3791
  */
3573
- source: "catalog" | "web";
3792
+ source: "caller" | "catalog" | "web";
3574
3793
  };
3575
3794
  /** @description A verification client id used as a filter. Hyphens are ignored. */
3576
3795
  VerificationClientIDFilter: string;
@@ -3617,14 +3836,14 @@ export interface components {
3617
3836
  */
3618
3837
  host: string;
3619
3838
  };
3620
- /** @description A short-lived attestor authorization for one zkFetch call. */
3839
+ /** @description A short-lived attestor authorization for one zkFetch call. Both `token` and `expiresAt` are absent when the deployment doesn't use attestor authentication. The caller then connects to the attestor without an auth request. */
3621
3840
  FetchAuthorization: {
3622
3841
  /**
3623
3842
  * Format: byte
3624
3843
  * @description Base64-encoded legacy attestor authorization — the same form `POST /verifications/sessions/{sessionId}/attestor-auth` returns. Decode it back into the native `AuthenticationRequest` to open the attestor connection.
3625
3844
  */
3626
- token: string;
3627
- expiresAt: components["schemas"]["Timestamp"];
3845
+ token?: string;
3846
+ expiresAt?: components["schemas"]["Timestamp"];
3628
3847
  };
3629
3848
  /**
3630
3849
  * Format: uuid
@@ -4508,6 +4727,29 @@ export interface components {
4508
4727
  orgId: components["schemas"]["OrgID"];
4509
4728
  orgName: string;
4510
4729
  }[];
4730
+ /** @description Prompts callers sent to `POST /verifications/ai-sessions` in the window, most recent first, with how each resolved and ended. Never holds proofs, extracted values or the verification URL. */
4731
+ aiSessionPrompts: {
4732
+ /** Format: uuid */
4733
+ sessionId: string;
4734
+ /** Format: date-time */
4735
+ createdAt: string;
4736
+ orgId: components["schemas"]["OrgID"];
4737
+ orgName: string;
4738
+ prompt: string;
4739
+ geoLocation?: string;
4740
+ requiredDataPoints: string[];
4741
+ optionalDataPoints: string[];
4742
+ /** @enum {string} */
4743
+ taskStatus: "resolving" | "ready" | "started" | "failed";
4744
+ /** @description Login pages found, by host only. */
4745
+ candidates: {
4746
+ host: string;
4747
+ source: string;
4748
+ }[];
4749
+ errorTitle?: string;
4750
+ sessionStatus: string;
4751
+ outcomeReasonCode?: string;
4752
+ }[];
4511
4753
  /** @description Coding-agent activity reported by the Reclaim MCP server in the window. `toolCalls` and `clients` come from a daily rollup that refreshes every 15 minutes. The `orgId` filter doesn't apply here. */
4512
4754
  agents: {
4513
4755
  /**
@@ -6282,7 +6524,7 @@ export interface components {
6282
6524
  * @description UUID v7 session id (also echoed in context as `reclaimSessionId`).
6283
6525
  */
6284
6526
  id: string;
6285
- /** @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. */
6527
+ /** @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. AI sessions have no providers, so the array is empty. */
6286
6528
  providers: components["schemas"]["SessionProvider"][];
6287
6529
  /** @description The organization that owns this session. */
6288
6530
  orgId: components["schemas"]["OrgID"];
@@ -6703,10 +6945,12 @@ export interface components {
6703
6945
  } & {
6704
6946
  [key: string]: unknown;
6705
6947
  };
6706
- /** @description One entry per verified provider (success only), in run order. Each carries that provider's proven requests. */
6948
+ /** @description One entry per verified provider (success only), in run order. Each carries that provider's proven requests. AI sessions have no provider, so they carry a single entry without `provider_id` and `resolved_version`. */
6707
6949
  results?: ({
6708
- provider_id: components["schemas"]["ProviderID"];
6709
- resolved_version: string;
6950
+ /** @description Absent for AI sessions. */
6951
+ provider_id?: components["schemas"]["ProviderID"];
6952
+ /** @description Absent for AI sessions. */
6953
+ resolved_version?: string;
6710
6954
  /** @description One entry per proven request for this provider. */
6711
6955
  requests: ({
6712
6956
  request_id?: string;
@@ -7692,7 +7936,7 @@ export interface operations {
7692
7936
  /** @description Set to `csv` to download one section as a spreadsheet instead of rendering the page. Pair it with `section`. A CSV export returns up to 1000 rows, where the page shows only the leading rows of each ranked section. */
7693
7937
  format?: "csv";
7694
7938
  /** @description Which section `format=csv` exports. Each section has its own columns, so one download holds one section. Defaults to `providers`. */
7695
- section?: "providers" | "revenue" | "usage" | "goals" | "tools" | "agents" | "funnel";
7939
+ section?: "providers" | "revenue" | "usage" | "goals" | "ai-session-prompts" | "tools" | "agents" | "funnel";
7696
7940
  };
7697
7941
  header?: never;
7698
7942
  path?: never;
@@ -8054,6 +8298,81 @@ export interface operations {
8054
8298
  default: components["responses"]["ProblemResponse"];
8055
8299
  };
8056
8300
  };
8301
+ AdminGetOrgAiAppKey: {
8302
+ parameters: {
8303
+ query?: never;
8304
+ header?: never;
8305
+ path: {
8306
+ orgId: components["schemas"]["OrgID"];
8307
+ };
8308
+ cookie?: never;
8309
+ };
8310
+ requestBody?: never;
8311
+ responses: {
8312
+ /** @description The key's metadata. */
8313
+ 200: {
8314
+ headers: {
8315
+ [name: string]: unknown;
8316
+ };
8317
+ content: {
8318
+ "application/json": components["schemas"]["AdminOrgAiAppKey"];
8319
+ };
8320
+ };
8321
+ 403: components["responses"]["ForbiddenResponse"];
8322
+ 404: components["responses"]["ProblemResponse"];
8323
+ default: components["responses"]["ProblemResponse"];
8324
+ };
8325
+ };
8326
+ AdminRotateOrgAiAppKey: {
8327
+ parameters: {
8328
+ query?: never;
8329
+ header?: never;
8330
+ path: {
8331
+ orgId: components["schemas"]["OrgID"];
8332
+ };
8333
+ cookie?: never;
8334
+ };
8335
+ requestBody?: never;
8336
+ responses: {
8337
+ /** @description The key's metadata. */
8338
+ 200: {
8339
+ headers: {
8340
+ [name: string]: unknown;
8341
+ };
8342
+ content: {
8343
+ "application/json": components["schemas"]["AdminOrgAiAppKey"];
8344
+ };
8345
+ };
8346
+ 403: components["responses"]["ForbiddenResponse"];
8347
+ 404: components["responses"]["ProblemResponse"];
8348
+ default: components["responses"]["ProblemResponse"];
8349
+ };
8350
+ };
8351
+ AdminDisableOrgAiAppKey: {
8352
+ parameters: {
8353
+ query?: never;
8354
+ header?: never;
8355
+ path: {
8356
+ orgId: components["schemas"]["OrgID"];
8357
+ };
8358
+ cookie?: never;
8359
+ };
8360
+ requestBody?: never;
8361
+ responses: {
8362
+ /** @description The key's metadata. */
8363
+ 200: {
8364
+ headers: {
8365
+ [name: string]: unknown;
8366
+ };
8367
+ content: {
8368
+ "application/json": components["schemas"]["AdminOrgAiAppKey"];
8369
+ };
8370
+ };
8371
+ 403: components["responses"]["ForbiddenResponse"];
8372
+ 404: components["responses"]["ProblemResponse"];
8373
+ default: components["responses"]["ProblemResponse"];
8374
+ };
8375
+ };
8057
8376
  AdminGrantOrgCredit: {
8058
8377
  parameters: {
8059
8378
  query?: never;
@@ -11676,6 +11995,15 @@ export interface operations {
11676
11995
  "application/problem+json": components["schemas"]["Problem"];
11677
11996
  };
11678
11997
  };
11998
+ /** @description Reclaim staff disabled AI sessions for the organization. Contact Reclaim support. */
11999
+ 403: {
12000
+ headers: {
12001
+ [name: string]: unknown;
12002
+ };
12003
+ content: {
12004
+ "application/problem+json": components["schemas"]["Problem"];
12005
+ };
12006
+ };
11679
12007
  /** @description The organization has no callback subscription. */
11680
12008
  409: {
11681
12009
  headers: {
@@ -11694,6 +12022,15 @@ export interface operations {
11694
12022
  "application/problem+json": components["schemas"]["Problem"];
11695
12023
  };
11696
12024
  };
12025
+ /** @description Builder couldn't create or register the organization's AI application key. Nothing is charged. */
12026
+ 503: {
12027
+ headers: {
12028
+ [name: string]: unknown;
12029
+ };
12030
+ content: {
12031
+ "application/problem+json": components["schemas"]["Problem"];
12032
+ };
12033
+ };
11697
12034
  default: components["responses"]["ProblemResponse"];
11698
12035
  };
11699
12036
  };
@@ -11729,6 +12066,110 @@ export interface operations {
11729
12066
  default: components["responses"]["ProblemResponse"];
11730
12067
  };
11731
12068
  };
12069
+ StartAiVerificationSession: {
12070
+ parameters: {
12071
+ query?: never;
12072
+ header?: never;
12073
+ path: {
12074
+ sessionId: components["schemas"]["SessionID"];
12075
+ };
12076
+ cookie?: never;
12077
+ };
12078
+ requestBody: {
12079
+ content: {
12080
+ "application/json": components["schemas"]["StartAiVerificationSessionRequest"];
12081
+ };
12082
+ };
12083
+ responses: {
12084
+ /** @description The session started. */
12085
+ 200: {
12086
+ headers: {
12087
+ [name: string]: unknown;
12088
+ };
12089
+ content: {
12090
+ "application/json": components["schemas"]["StartAiVerificationSessionResponse"];
12091
+ };
12092
+ };
12093
+ 404: components["responses"]["ProblemResponse"];
12094
+ /** @description The lookup is still `resolving`, it `failed`, or the session has finished. */
12095
+ 409: {
12096
+ headers: {
12097
+ [name: string]: unknown;
12098
+ };
12099
+ content: {
12100
+ "application/problem+json": components["schemas"]["Problem"];
12101
+ };
12102
+ };
12103
+ default: components["responses"]["ProblemResponse"];
12104
+ };
12105
+ };
12106
+ ReceiveAiVerificationProofs: {
12107
+ parameters: {
12108
+ query?: never;
12109
+ header: {
12110
+ /** @description ID of the AI SDK session that Popcorn is reporting. */
12111
+ "x-reclaim-session-id": string;
12112
+ };
12113
+ path: {
12114
+ sessionId: components["schemas"]["SessionID"];
12115
+ };
12116
+ cookie?: never;
12117
+ };
12118
+ requestBody: {
12119
+ content: {
12120
+ "application/json": {
12121
+ [key: string]: unknown;
12122
+ }[];
12123
+ };
12124
+ };
12125
+ responses: {
12126
+ /** @description Builder accepted the proofs. */
12127
+ 200: {
12128
+ headers: {
12129
+ [name: string]: unknown;
12130
+ };
12131
+ content: {
12132
+ "application/json": components["schemas"]["AiVerificationCallbackAck"];
12133
+ };
12134
+ };
12135
+ 400: components["responses"]["ProblemResponse"];
12136
+ 404: components["responses"]["ProblemResponse"];
12137
+ default: components["responses"]["ProblemResponse"];
12138
+ };
12139
+ };
12140
+ ReceiveAiVerificationCancel: {
12141
+ parameters: {
12142
+ query?: never;
12143
+ header: {
12144
+ /** @description ID of the AI SDK session that Popcorn is reporting. */
12145
+ "x-reclaim-session-id": string;
12146
+ };
12147
+ path: {
12148
+ sessionId: components["schemas"]["SessionID"];
12149
+ };
12150
+ cookie?: never;
12151
+ };
12152
+ requestBody: {
12153
+ content: {
12154
+ "application/json": {
12155
+ [key: string]: unknown;
12156
+ };
12157
+ };
12158
+ };
12159
+ responses: {
12160
+ /** @description Builder recorded the cancellation. */
12161
+ 200: {
12162
+ headers: {
12163
+ [name: string]: unknown;
12164
+ };
12165
+ content: {
12166
+ "application/json": components["schemas"]["AiVerificationCallbackAck"];
12167
+ };
12168
+ };
12169
+ 404: components["responses"]["ProblemResponse"];
12170
+ default: components["responses"]["ProblemResponse"];
12171
+ };
12172
+ };
11732
12173
  GetVerificationSession: {
11733
12174
  parameters: {
11734
12175
  query?: never;
@@ -12178,7 +12619,7 @@ export interface operations {
12178
12619
  };
12179
12620
  };
12180
12621
  responses: {
12181
- /** @description Attestor authorization minted. */
12622
+ /** @description Attestor authorization minted, or an empty object if the deployment doesn't use attestor authentication. */
12182
12623
  200: {
12183
12624
  headers: {
12184
12625
  [name: string]: unknown;