@reclaimprotocol/client 0.1.1 → 0.1.3

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.
@@ -52,17 +52,17 @@ export interface paths {
52
52
  cookie?: never;
53
53
  };
54
54
  /**
55
- * Search verifications
56
- * @description Search published Reclaim verifications by domain or data point. A verification is the recipe an end-user follows to prove something about themselves (e.g. "I have N followers on Twitter"). Returns a list of matches. Call this BEFORE `create_provider` — most popular domains already have a public verification you can reuse.
57
- * Catalog page listing all verifications. Returns a paginated list of verifications the caller can see. Public verifications are visible to everyone; private verifications are only visible to org members.
55
+ * Search providers
56
+ * @description Search published Reclaim providers by domain or data point. A provider is the recipe an end-user follows to prove something about themselves (e.g. "I have N followers on Twitter"). Returns a list of matches. Call this BEFORE `create_provider` — most popular domains already have a public provider you can reuse.
57
+ * Catalog page listing all providers. Returns a paginated list of providers the caller can see. Public providers are visible to everyone; private providers are only visible to org members.
58
58
  */
59
59
  get: operations["Providers"];
60
60
  put?: never;
61
61
  /**
62
- * Create a verification
63
- * @description Create a new Reclaim verification. Use this only after `providers` returned nothing useful for the domain. The caller must be an active member of the target organization.
64
- * Creates a new verification in the specified organization. `visibility` is coerced to `PRIVATE` at creation regardless of what's sent; the author may toggle to `PUBLIC` later via `PATCH /providers/{id}`. While `PRIVATE`, versions go to the go live freely; once `PUBLIC`, non-admin versions need admin review. See `Provider.visibility`.
65
- * The server also seeds an initial `0.1.0` version on the `draft` branch in the same transaction so the verification is immediately editable. Its `initialUrl` defaults to `https://<domain>`; all other version fields fall back to their schema-declared defaults (structured verification, empty requests, empty web settings). `Provider.latestVersion` stays `null` until the draft is promoted to the live channel.
62
+ * Create a provider
63
+ * @description Create a new Reclaim provider. Use this only after `providers` returned nothing useful for the domain. The caller must be an active member of the target organization.
64
+ * Creates a new provider in the specified organization. `visibility` is coerced to `PRIVATE` at creation regardless of what's sent; the author may toggle to `PUBLIC` later via `PATCH /providers/{id}`. While `PRIVATE`, versions go to the go live freely; once `PUBLIC`, non-admin versions need admin review. See `Provider.visibility`.
65
+ * The server also seeds an initial `0.1.0` version on the `draft` branch in the same transaction so the provider is immediately editable. Its `initialUrl` defaults to `https://<domain>`; all other version fields fall back to their schema-declared defaults (a `structured` verificationType, empty requests, empty web settings). `Provider.latestVersion` stays `null` until the draft is promoted to the live channel.
66
66
  */
67
67
  post: operations["CreateProvider"];
68
68
  delete?: never;
@@ -81,7 +81,7 @@ export interface paths {
81
81
  get?: never;
82
82
  put?: never;
83
83
  /**
84
- * Suggest verification fields from a domain/URL scrape
84
+ * Suggest provider fields from a domain/URL scrape
85
85
  * @description Pre-flight for `POST /providers`. Accepts a URL or bare
86
86
  * domain, scrapes the page head with a short timeout, and
87
87
  * returns suggested values (`title`, `slug`, `iconUrl`, brand
@@ -90,7 +90,7 @@ export interface paths {
90
90
  *
91
91
  * - HTML / HTMX callers receive the step-2 form HTML
92
92
  * pre-filled with the suggestions (swapped into the
93
- * create-verification dialog body).
93
+ * create-provider dialog body).
94
94
  * - JSON / SDK / agent callers receive the same suggestions
95
95
  * as a JSON document so they can build their own UI or
96
96
  * submit the create request directly.
@@ -114,7 +114,7 @@ export interface paths {
114
114
  };
115
115
  /**
116
116
  * Suggest websites for the Discover flow
117
- * @description Website-first autocomplete that backs the Discover home page (`/`). Returns the distinct websites (one entry per domain) that have at least one verification the caller can see, ranked by relevance to `q`. Each entry carries the aggregated list of data points provable for that website. With no `q`, returns popular websites (most verifications first).
117
+ * @description Website-first autocomplete that backs the Discover home page (`/`). Returns the distinct websites (one entry per domain) that have at least one provider the caller can see, ranked by relevance to `q`. Each entry carries the aggregated list of data points provable for that website. With no `q`, returns popular websites (most providers first).
118
118
  *
119
119
  * HTML / HTMX callers receive a fragment list (swapped into the search dropdown); JSON / SDK callers receive the suggestions document.
120
120
  */
@@ -136,7 +136,7 @@ export interface paths {
136
136
  };
137
137
  /**
138
138
  * Website landing & data-point selection page
139
- * @description SEO landing page for a website, and the data-point selection step of the Discover flow. Lists every data point Reclaim can currently prove for `{domain}` (aggregated across all verifications the caller can see) so a visitor can pick what to verify and continue. Organic search traffic ("verify github username") and the in-app `/` → website-select flow converge on this single canonical URL.
139
+ * @description SEO landing page for a website, and the data-point selection step of the Discover flow. Lists every data point Reclaim can currently prove for `{domain}` (aggregated across all providers the caller can see) so a visitor can pick what to verify and continue. Organic search traffic ("verify github username") and the in-app `/` → website-select flow converge on this single canonical URL.
140
140
  *
141
141
  * HTML callers receive the full page; when `q` is present and the request is an HTMX request, only the filtered data-point list fragment is returned. JSON / SDK callers receive the website's data points as a document.
142
142
  */
@@ -178,7 +178,7 @@ export interface paths {
178
178
  };
179
179
  /**
180
180
  * Build page — providers, try, and integration guide for a selection
181
- * @description The step after data-point selection on `/site/{domain}`. Given the selected data points (plus optional pinned sources, provided values, and a resolution `mode`), shows which existing verification providers cover the selection, a member-only "Try verification" action, and a ready-to-paste integration guide. The whole selection travels in the query string so the page is server-rendered and back-navigable.
181
+ * @description The step after data-point selection on `/site/{domain}`. Given the selected data points (plus optional pinned sources, provided values, and a resolution `mode`), shows which existing providers cover the selection, a member-only "Try verification" action, and a ready-to-paste integration guide. The whole selection travels in the query string so the page is server-rendered and back-navigable.
182
182
  */
183
183
  get: operations["SiteBuild"];
184
184
  put?: never;
@@ -209,6 +209,86 @@ export interface paths {
209
209
  patch?: never;
210
210
  trace?: never;
211
211
  };
212
+ "/site/{domain}/repair": {
213
+ parameters: {
214
+ query?: never;
215
+ header?: never;
216
+ path?: never;
217
+ cookie?: never;
218
+ };
219
+ /**
220
+ * Failure-aware "Repair with an AI coding agent" wizard fragment
221
+ * @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.
222
+ */
223
+ get: operations["SiteBuildRepair"];
224
+ put?: never;
225
+ post?: never;
226
+ delete?: never;
227
+ options?: never;
228
+ head?: never;
229
+ patch?: never;
230
+ trace?: never;
231
+ };
232
+ "/site/{domain}/alternative": {
233
+ parameters: {
234
+ query?: never;
235
+ header?: never;
236
+ path?: never;
237
+ cookie?: never;
238
+ };
239
+ /**
240
+ * Re-resolve excluding a failed provider, else hand off to repair
241
+ * @description After a sandbox Try fails, reads which provider(s) failed from the session analytics and re-resolves the selection with them excluded. If the rest still cover it, responds with an `HX-Redirect` to the build page (failed providers excluded — the alternative set). Otherwise emits an `openRepair` HX-Trigger so the client opens the repair wizard.
242
+ */
243
+ get: operations["SiteBuildAlternative"];
244
+ put?: never;
245
+ post?: never;
246
+ delete?: never;
247
+ options?: never;
248
+ head?: never;
249
+ patch?: never;
250
+ trace?: never;
251
+ };
252
+ "/site/{domain}/ai-provider": {
253
+ parameters: {
254
+ query?: never;
255
+ header?: never;
256
+ path?: never;
257
+ cookie?: never;
258
+ };
259
+ get?: never;
260
+ put?: never;
261
+ /**
262
+ * Author an AI (llm) provider and go to its build screen
263
+ * @description Creates an `llm`-verification provider under the signed-in member's personal org, seeded with an extraction prompt for the selected/missing data points (and carrying the working response matches from the resolved structured providers). If `fromProviderId` is an editable draft the viewer owns, it versions THAT instead. Returns the build page's AI dialog body (the editable prompt + "Try with AI"). HTML / HTMX fragment.
264
+ */
265
+ post: operations["SiteAiProvider"];
266
+ delete?: never;
267
+ options?: never;
268
+ head?: never;
269
+ patch?: never;
270
+ trace?: never;
271
+ };
272
+ "/site/{domain}/try-ai": {
273
+ parameters: {
274
+ query?: never;
275
+ header?: never;
276
+ path?: never;
277
+ cookie?: never;
278
+ };
279
+ get?: never;
280
+ put?: never;
281
+ /**
282
+ * Mint a SANDBOX test session for an AI (llm) provider
283
+ * @description Mints a sandbox verification session for the given AI provider's draft and opens it in the verification client. An edited `prompt` in the body is saved as a new draft build first (the "edit prompt / try again" loop). Requires a signed-in member.
284
+ */
285
+ post: operations["SiteTryAi"];
286
+ delete?: never;
287
+ options?: never;
288
+ head?: never;
289
+ patch?: never;
290
+ trace?: never;
291
+ };
212
292
  "/discover/teach": {
213
293
  parameters: {
214
294
  query?: never;
@@ -218,7 +298,7 @@ export interface paths {
218
298
  };
219
299
  /**
220
300
  * “Teach our agent” instructions for a missing website / data point
221
- * @description Returns the "Teach our agent" panel shown when a website or data point a user wants does not exist yet: steps to install the Reclaim MCP server plus a ready-to-copy prompt, templated with the requested `domain` and (optionally) `dataPoint`, that instructs an agent to author the missing verification. HTML / HTMX only (a dialog fragment).
301
+ * @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).
222
302
  */
223
303
  get: operations["DiscoverTeachAgent"];
224
304
  put?: never;
@@ -237,8 +317,10 @@ export interface paths {
237
317
  cookie?: never;
238
318
  };
239
319
  /**
240
- * Resolve existing providers covering selected data points
241
- * @description The "resolve" step behind the Discover CTAs. Given a website and the data points the user picked, returns the existing verifications on that domain whose data points COVER the whole selection (smallest / most specific first), so a caller can reuse one instead of building a new verification. When nothing covers the selection, `needsCreation` is `true` — synthesising a new provider by stitching is a later stage. JSON only.
320
+ * Resolve a website + data points to providers
321
+ * @description Provider resolution: given a website and the data points the user wants their users to prove, return the smallest set of existing providers whose data points COVER the selection (greedy combine), the `requiredContext` inputs the consumer must supply, and any `uncovered` points no provider exposes yet (`needsCreation` is true then — author a provider with the agent tools). When the chosen providers can be fused into one (same start page, no clashing page scripts) `merge.mergeable` is true.
322
+ *
323
+ * Agent flow: pick a website (`GET /discover/data-points` lists what's verifiable there), confirm the data points with the user, call this to get the `providers` + `requiredContext`, collect those context values from the user, then `POST /verifications/sessions` with `providers` (pass every id) and `context` to mint a verification.
242
324
  */
243
325
  get: operations["DiscoverResolve"];
244
326
  put?: never;
@@ -249,6 +331,26 @@ export interface paths {
249
331
  patch?: never;
250
332
  trace?: never;
251
333
  };
334
+ "/discover/data-points": {
335
+ parameters: {
336
+ query?: never;
337
+ header?: never;
338
+ path?: never;
339
+ cookie?: never;
340
+ };
341
+ /**
342
+ * List the verifiable data points on a website
343
+ * @description The data points existing providers can prove on a website — the menu to pick from before `GET /discover/resolve`. Optionally filter by `q`.
344
+ */
345
+ get: operations["DiscoverDataPoints"];
346
+ put?: never;
347
+ post?: never;
348
+ delete?: never;
349
+ options?: never;
350
+ head?: never;
351
+ patch?: never;
352
+ trace?: never;
353
+ };
252
354
  "/providers/{providerId}/preview.png": {
253
355
  parameters: {
254
356
  query?: never;
@@ -257,8 +359,8 @@ export interface paths {
257
359
  cookie?: never;
258
360
  };
259
361
  /**
260
- * Get the verification's OG preview image
261
- * @description Returns the 1200x630 PNG used in `<meta property="og:image">` for this verification (`Provider.previewImageUrl` points at this route). Rendered server-side on first read, then cached by the standard HTTP cache. The URL is keyed off the verification's preview ETag so it changes whenever the image-affecting fields change (title, iconUrl, effective primaryDataPoint — see `Provider.previewImageUrl`).
362
+ * Get the provider's OG preview image
363
+ * @description Returns the 1200x630 PNG used in `<meta property="og:image">` for this provider (`Provider.previewImageUrl` points at this route). Rendered server-side on first read, then cached by the standard HTTP cache. The URL is keyed off the provider's preview ETag so it changes whenever the image-affecting fields change (title, iconUrl, effective primaryDataPoint — see `Provider.previewImageUrl`).
262
364
  */
263
365
  get: operations["ProviderPreviewImage"];
264
366
  put?: never;
@@ -317,8 +419,8 @@ export interface paths {
317
419
  cookie?: never;
318
420
  };
319
421
  /**
320
- * All verifications (admin-only)
321
- * @description Admin only. Lists all verifications across all organizations. Supports filtering by visibility, status, and free-text search on title/domain/slug.
422
+ * All providers (admin-only)
423
+ * @description Admin only. Lists all providers across all organizations. Supports filtering by visibility, status, and free-text search on title/domain/slug.
322
424
  */
323
425
  get: operations["AdminProviders"];
324
426
  put?: never;
@@ -453,8 +555,8 @@ export interface paths {
453
555
  get?: never;
454
556
  put?: never;
455
557
  /**
456
- * Transfer a verification to a different workspace
457
- * @description Admin-only. Moves the verification's `orgId` to the supplied workspace; preserves slug, versions, members. SQL function `builder.transfer_provider` enforces the admin gate and target existence atomically.
558
+ * Transfer a provider to a different workspace
559
+ * @description Admin-only. Moves the provider's `orgId` to the supplied workspace; preserves slug, versions, members. SQL function `builder.transfer_provider` enforces the admin gate and target existence atomically.
458
560
  */
459
561
  post: operations["TransferProvider"];
460
562
  delete?: never;
@@ -1117,16 +1219,16 @@ export interface paths {
1117
1219
  cookie?: never;
1118
1220
  };
1119
1221
  /**
1120
- * Get a verification
1121
- * @description Fetch a single Reclaim verification by id. Returns every field needed
1222
+ * Get a provider
1223
+ * @description Fetch a single Reclaim provider by id. Returns every field needed
1122
1224
  * to integrate it into a flow: domain, the live version (initialUrl + requests),
1123
1225
  * and the data points it can prove. Use `providers` first if you only
1124
1226
  * have a query string.
1125
1227
  *
1126
- * Returns the verification record.
1228
+ * Returns the provider record.
1127
1229
  *
1128
1230
  * **Canonical URL.** For SEO and stable sharing, the canonical
1129
- * HTML URL for a verification is `/providers/{providerId}/{slug}`
1231
+ * HTML URL for a provider is `/providers/{providerId}/{slug}`
1130
1232
  * (see `GetProviderBySlug`). HTML callers (`Accept: text/html`)
1131
1233
  * that hit this route — which omits the slug — receive a `301`
1132
1234
  * redirect to the slugged URL. JSON callers
@@ -1137,16 +1239,16 @@ export interface paths {
1137
1239
  put?: never;
1138
1240
  post?: never;
1139
1241
  /**
1140
- * Delete a verification
1141
- * @description Owner of the verification's organization only. Soft-archives the verification (sets `status` to `ARCHIVED`) so historical references remain resolvable. Supports optimistic concurrency via `If-Match`.
1242
+ * Delete a provider
1243
+ * @description Owner of the provider's organization only. Soft-archives the provider (sets `status` to `ARCHIVED`) so historical references remain resolvable. Supports optimistic concurrency via `If-Match`.
1142
1244
  */
1143
1245
  delete: operations["DeleteProvider"];
1144
1246
  options?: never;
1145
1247
  head?: never;
1146
1248
  /**
1147
- * Update a verification
1148
- * @description Update a Reclaim verification's metadata. Partial PATCH — pass only fields you want to change. The caller must be an active member of the owning organization. To change the verification's recipe (initialUrl, requests, …) cut a new version via the dashboard. Use `seo` to control how the verification appears in search results and social shares; omit a subfield to keep the server default.
1149
- * Caller must be a member of the verification's owning organization. `id`, `orgId`, and `slug` are immutable. Supports optimistic concurrency via `If-Match`.
1249
+ * Update a provider
1250
+ * @description Update a Reclaim provider's metadata. Partial PATCH — pass only fields you want to change. The caller must be an active member of the owning organization. To change the provider's recipe (initialUrl, requests, …) cut a new version via the dashboard. Use `seo` to control how the provider appears in search results and social shares; omit a subfield to keep the server default.
1251
+ * Caller must be a member of the provider's owning organization. `id`, `orgId`, and `slug` are immutable. Supports optimistic concurrency via `If-Match`.
1150
1252
  */
1151
1253
  patch: operations["UpdateProvider"];
1152
1254
  trace?: never;
@@ -1159,14 +1261,14 @@ export interface paths {
1159
1261
  cookie?: never;
1160
1262
  };
1161
1263
  /**
1162
- * Get a verification (canonical slugged URL)
1163
- * @description Canonical HTML URL for a verification. The slug in the path is
1264
+ * Get a provider (canonical slugged URL)
1265
+ * @description Canonical HTML URL for a provider. The slug in the path is
1164
1266
  * primarily an SEO and link-readability affordance — the
1165
- * verification is resolved by `providerId`.
1267
+ * provider is resolved by `providerId`.
1166
1268
  *
1167
- * - If `slug` matches the verification's current slug, returns the
1269
+ * - If `slug` matches the provider's current slug, returns the
1168
1270
  * resource (HTML or JSON per `Accept`).
1169
- * - If `slug` does not match (e.g. the verification was renamed since
1271
+ * - If `slug` does not match (e.g. the provider was renamed since
1170
1272
  * the URL was minted), HTML callers receive a `301` redirect
1171
1273
  * to this same route with the *current* slug. JSON callers
1172
1274
  * receive the resource directly with `200` regardless of slug
@@ -1193,22 +1295,22 @@ export interface paths {
1193
1295
  cookie?: never;
1194
1296
  };
1195
1297
  /**
1196
- * List a verification's versions
1197
- * @description Lists versions visible to the caller. Non-public branches (`ai`, `draft`, `in_review`, `rejected`) are only visible to members of the verification's owning organization.
1298
+ * List a provider's versions
1299
+ * @description Lists versions visible to the caller. Non-public branches (`ai`, `draft`, `in_review`, `rejected`) are only visible to members of the provider's owning organization.
1198
1300
  */
1199
1301
  get: operations["ListProviderVersions"];
1200
1302
  put?: never;
1201
1303
  /**
1202
- * Create a new verification version
1203
- * @description Creates a new version of the verification. The starting branch
1204
- * depends on the verification's `visibility` and the caller's role:
1304
+ * Create a new provider version
1305
+ * @description Creates a new version of the provider. The starting branch
1306
+ * depends on the provider's `visibility` and the caller's role:
1205
1307
  *
1206
- * - `PRIVATE` verification (any caller): the live channel (no review).
1308
+ * - `PRIVATE` provider (any caller): the live channel (no review).
1207
1309
  *
1208
- * - `PUBLIC` verification, admin caller (Reclaim staff): the live channel
1310
+ * - `PUBLIC` provider, admin caller (Reclaim staff): the live channel
1209
1311
  * (no review).
1210
1312
  *
1211
- * - `PUBLIC` verification, non-admin caller: `draft` (or `ai` if
1313
+ * - `PUBLIC` provider, non-admin caller: `draft` (or `ai` if
1212
1314
  * authored by the AI assistant). Must pass review (see
1213
1315
  * `POST /providers/{id}/versions/{version}/review`) before
1214
1316
  * reaching the live channel.
@@ -1227,20 +1329,20 @@ export interface paths {
1227
1329
  path?: never;
1228
1330
  cookie?: never;
1229
1331
  };
1230
- /** Get a specific verification version */
1332
+ /** Get a specific provider version */
1231
1333
  get: operations["GetProviderVersion"];
1232
1334
  put?: never;
1233
1335
  post?: never;
1234
1336
  /**
1235
- * Delete a verification version
1236
- * @description Soft-archives a version on the `draft`, `ai`, or `rejected` branch — sets `status` to `ARCHIVED` so history is preserved. Trunk (live) and `in_review` versions cannot be archived this way; archive the parent verification instead. Supports optimistic concurrency via `If-Match`.
1337
+ * Delete a provider version
1338
+ * @description Soft-archives a version on the `draft`, `ai`, or `rejected` branch — sets `status` to `ARCHIVED` so history is preserved. Trunk (live) and `in_review` versions cannot be archived this way; archive the parent provider instead. Supports optimistic concurrency via `If-Match`.
1237
1339
  */
1238
1340
  delete: operations["DeleteProviderVersion"];
1239
1341
  options?: never;
1240
1342
  head?: never;
1241
1343
  /**
1242
- * Update a verification version
1243
- * @description Mutable only while the version is on the `draft` or `rejected` branch. Versions on `in_review` or the live channel reject all writes here. Caller must be a member of the verification's owning organization. Supports optimistic concurrency via `If-Match`.
1344
+ * Update a provider version
1345
+ * @description Mutable only while the version is on the `draft` or `rejected` branch. Versions on `in_review` or the live channel reject all writes here. Caller must be a member of the provider's owning organization. Supports optimistic concurrency via `If-Match`.
1244
1346
  */
1245
1347
  patch: operations["UpdateProviderVersion"];
1246
1348
  trace?: never;
@@ -1255,8 +1357,8 @@ export interface paths {
1255
1357
  get?: never;
1256
1358
  put?: never;
1257
1359
  /**
1258
- * Submit a verification version for review
1259
- * @description Submits a verification version (currently on the `draft` or `rejected` branch) for admin review. On success the version's branch transitions to `in_review`. Callable by any authenticated member of the verification's owning org. Meaningful only on `PUBLIC` verifications — on `PRIVATE` verifications new versions go to the live channel directly and never need review.
1360
+ * Submit a provider version for review
1361
+ * @description Submits a provider version (currently on the `draft` or `rejected` branch) for admin review. On success the version's branch transitions to `in_review`. Callable by any authenticated member of the provider's owning org. Meaningful only on `PUBLIC` providers — on `PRIVATE` providers new versions go to the live channel directly and never need review.
1260
1362
  */
1261
1363
  post: operations["SubmitProviderVersionForReview"];
1262
1364
  delete?: never;
@@ -1275,8 +1377,8 @@ export interface paths {
1275
1377
  get?: never;
1276
1378
  put?: never;
1277
1379
  /**
1278
- * Record a decision on a verification version review
1279
- * @description Admin only (Reclaim staff). Approves or rejects a verification version currently on the `in_review` branch. `APPROVED` clears the branch tag and promotes the version to the live channel; `REJECTED` moves it to the `rejected` branch where the author can address feedback and resubmit. A rejected version stays rejected — the author either fixes and resubmits, or abandons it.
1380
+ * Record a decision on a provider version review
1381
+ * @description Admin only (Reclaim staff). Approves or rejects a provider version currently on the `in_review` branch. `APPROVED` clears the branch tag and promotes the version to the live channel; `REJECTED` moves it to the `rejected` branch where the author can address feedback and resubmit. A rejected version stays rejected — the author either fixes and resubmits, or abandons it.
1280
1382
  * Until RBAC is designed, "admin" is detected via the user's email domain (`@reclaimprotocol.org`). Non-admin callers receive a 403.
1281
1383
  */
1282
1384
  post: operations["DecideProviderVersionReview"];
@@ -1297,7 +1399,7 @@ export interface paths {
1297
1399
  put?: never;
1298
1400
  /**
1299
1401
  * Publish a draft version directly (PRIVATE providers only)
1300
- * @description Publishes a verification version on the `draft` branch directly to the live channel (trunk). Only allowed for PRIVATE providers — PUBLIC providers must use the review flow (`POST .../review` → admin decision). On success the version's branch transitions from `draft` to `null` (trunk/live).
1402
+ * @description Publishes a provider version on the `draft` branch directly to the live channel (trunk). Only allowed for PRIVATE providers — PUBLIC providers must use the review flow (`POST .../review` → admin decision). On success the version's branch transitions from `draft` to `null` (trunk/live).
1301
1403
  */
1302
1404
  post: operations["PublishProviderVersion"];
1303
1405
  delete?: never;
@@ -2429,7 +2531,7 @@ export interface components {
2429
2531
  primaryDataPoint?: string;
2430
2532
  dataPoints: string[];
2431
2533
  };
2432
- /** @description One website (distinct domain) in the Discover search results. Aggregates, across every verification the caller can see on that domain, the brand display fields and the union of provable data points. */
2534
+ /** @description One website (distinct domain) in the Discover search results. Aggregates, across every provider the caller can see on that domain, the brand display fields and the union of provable data points. */
2433
2535
  WebsiteSuggestion: {
2434
2536
  /**
2435
2537
  * Format: hostname
@@ -2445,7 +2547,7 @@ export interface components {
2445
2547
  iconUrl?: string;
2446
2548
  /** @description Deduplicated names of every data point provable for this website. */
2447
2549
  dataPoints: string[];
2448
- /** @description Number of verifications backing this website that the caller can see. */
2550
+ /** @description Number of providers backing this website that the caller can see. */
2449
2551
  providerCount: number;
2450
2552
  };
2451
2553
  /** @description Body for `POST /site/{domain}/try`. Only the verification `context` (values for the resolved providers' `requiredContext` inputs). The selection (dataPoints / mode / pins) travels in the query string. */
@@ -2455,15 +2557,20 @@ export interface components {
2455
2557
  [key: string]: string;
2456
2558
  };
2457
2559
  };
2458
- /** @description A single data point selectable on the `/site/{domain}` page, with how many visible verifications expose it and one example verification slug. */
2560
+ /** @description Body for `POST /site/{domain}/try-ai`. An optional edited extraction prompt, saved as a new draft build before the sandbox session is minted. */
2561
+ SiteTryAiBody: {
2562
+ /** @description The edited extraction prompt for the AI provider. */
2563
+ prompt?: string;
2564
+ };
2565
+ /** @description A single data point selectable on the `/site/{domain}` page, with how many visible providers expose it and one example provider slug. */
2459
2566
  DataPointItem: {
2460
2567
  /** @description Data-point name (e.g. `username`, `followers_count`). */
2461
2568
  name: string;
2462
2569
  /** @description Human description of the data point, taken from the response match that declares it. Absent when no match supplies one. */
2463
2570
  description?: string;
2464
- /** @description Number of visible verifications on the domain that expose this data point. */
2571
+ /** @description Number of visible providers on the domain that expose this data point. */
2465
2572
  providerCount: number;
2466
- /** @description Slug of one verification that exposes this data point. */
2573
+ /** @description Slug of one provider that exposes this data point. */
2467
2574
  exampleProviderSlug?: string;
2468
2575
  };
2469
2576
  InterceptorOptions: {
@@ -2636,9 +2743,9 @@ export interface components {
2636
2743
  /** @default [] */
2637
2744
  allowedJsRequests: components["schemas"]["RequestSelectionTemplate"][];
2638
2745
  /** @default structured */
2639
- readonly verificationType: components["schemas"]["VerificationType"];
2746
+ verificationType: components["schemas"]["VerificationType"];
2640
2747
  /** @description The prompt used for LLM verification (only when verificationType is "llm"). */
2641
- readonly prompt?: string;
2748
+ prompt?: string;
2642
2749
  webSettings: components["schemas"]["ProviderWebSettings"];
2643
2750
  requiredContext?: components["schemas"]["ProviderRequiredContext"];
2644
2751
  };
@@ -2730,7 +2837,7 @@ export interface components {
2730
2837
  };
2731
2838
  /** @description `title` is optional — when omitted the dashboard renders `seoSuggestions.title` (server-derived from the scrape result or `derive_brand_name(domain)`). */
2732
2839
  CreateProviderRequest: {
2733
- /** @description uuid identifier of the organization that will own the verification. */
2840
+ /** @description uuid identifier of the organization that will own the provider. */
2734
2841
  orgId: components["schemas"]["OrgID"];
2735
2842
  /**
2736
2843
  * Format: hostname
@@ -2774,8 +2881,12 @@ export interface components {
2774
2881
  /** @description Author SEO fields. Send `null` for a subfield to clear that override and let `seoSuggestions` win again. */
2775
2882
  seo?: components["schemas"]["ProviderSeo"];
2776
2883
  };
2777
- /** @description Body for creating a new version of a provider. Every new version starts on the `draft` branch — see `CreateProviderVersion`. The request body never sets `branch` directly; going live is a separate, explicit step (publish for PRIVATE, submit-for-review → approve for PUBLIC). The version's `verificationType` is always `structured` and is not settable here; a `prompt` field is reserved for a future AI authoring flow and is also not accepted on this surface. */
2884
+ /** @description Body for creating a new version of a provider. Every new version starts on the `draft` branch — see `CreateProviderVersion`. The request body never sets `branch` directly; going live is a separate, explicit step (publish for PRIVATE, submit-for-review → approve for PUBLIC). `verificationType` defaults to `structured`; pass `llm` with a `prompt` to author an AI-verification provider. */
2778
2885
  CreateProviderVersionRequest: {
2886
+ /** @description Defaults to `structured` server-side when omitted; pass `llm` (with a `prompt`) to author an AI-verification provider. */
2887
+ verificationType?: components["schemas"]["VerificationType"];
2888
+ /** @description Extraction prompt, used (and required) when `verificationType` is `llm`. */
2889
+ prompt?: string;
2779
2890
  /**
2780
2891
  * @description The version of this Provider upon creation. Clients typically omit this and let the dashboard's bump-suggestion compute it. When omitted, defaults to `0.1.0` for the very first version; otherwise the caller is expected to pass a value higher than the latest existing version.
2781
2892
  * @default {
@@ -2796,10 +2907,13 @@ export interface components {
2796
2907
  /** @description Free-form change note recorded on `createMetadata`. */
2797
2908
  notes?: string;
2798
2909
  };
2799
- /** @description Partial update of a provider version. Mutable only while the version is on the `draft` or `rejected` branch; versions on `in_review` or the live channel reject all writes here. The semver does not change on update — `build_number` increments instead, giving callers a monotonic revision counter without touching the (major, minor, patch) PK. `verificationType` / `prompt` are not accepted; see `ProviderVersion` for why. */
2910
+ /** @description Partial update of a provider version. Mutable only while the version is on the `draft` or `rejected` branch; versions on `in_review` or the live channel reject all writes here. The semver does not change on update — `build_number` increments instead, giving callers a monotonic revision counter without touching the (major, minor, patch) PK. `verificationType` and `prompt` may be updated; omit either to carry the prior build's value forward. */
2800
2911
  UpdateProviderVersionRequest: {
2801
2912
  /** Format: uri */
2802
2913
  initialUrl?: string;
2914
+ verificationType?: components["schemas"]["VerificationType"];
2915
+ /** @description Extraction prompt, used when `verificationType` is `llm`. */
2916
+ prompt?: string;
2803
2917
  requests?: components["schemas"]["RequestSelection"][];
2804
2918
  allowedJsRequests?: components["schemas"]["RequestSelectionTemplate"][];
2805
2919
  webSettings?: components["schemas"]["ProviderWebSettings"];
@@ -3473,17 +3587,23 @@ export interface operations {
3473
3587
  };
3474
3588
  SiteBuild: {
3475
3589
  parameters: {
3476
- query: {
3477
- /** @description Selected data-point names. Repeat to pass several. */
3478
- dataPoints: string[];
3479
- /** @description `combine` (default) minimizes to the fewest providers (set-cover); `list` uses one provider per data point. */
3480
- mode?: "list" | "combine";
3590
+ query?: {
3591
+ /** @description Selected data-point names. Repeat to pass several. Optional only so the "Build it with AI" entry can open the build page with just a missing `dataPoint`; the normal flow always passes ≥1. */
3592
+ dataPoints?: string[];
3593
+ /** @description When set, auto-opens the "Try with AI" dialog on load (the "Build it with AI" entry from the explore page). */
3594
+ ai?: string;
3595
+ /** @description A specific missing data point to seed the AI prompt with. */
3596
+ dataPoint?: string;
3597
+ /** @description `combine` (default) minimizes to the fewest providers (set-cover); `ai` is a forward-compat alias that currently resolves like combine. */
3598
+ mode?: "combine" | "ai";
3481
3599
  /** @description Source pins: `pins[<dataPoint>]=id,id`. Maps each data-point name to a comma-joined list of preferred providerIds. Omit for Auto. */
3482
3600
  pins?: {
3483
3601
  [key: string]: string;
3484
3602
  };
3485
3603
  /** @description Data-point names the consumer opts to SUPPLY themselves (as verification `context`) instead of having a provider prove — shrinks the provider set. Repeat to pass several. Only names that are a provider input are honoured. Subset of `dataPoints`. */
3486
3604
  provided?: string[];
3605
+ /** @description ProviderIds to EXCLUDE from resolution (set after a sandbox Try fails, so a different provider / merge is picked). Repeat to pass several. */
3606
+ exclude?: components["schemas"]["ProviderID"][];
3487
3607
  };
3488
3608
  header?: never;
3489
3609
  path: {
@@ -3513,13 +3633,15 @@ export interface operations {
3513
3633
  /** @description Selected data-point names. Repeat to pass several. */
3514
3634
  dataPoints: string[];
3515
3635
  /** @description Resolution mode (`combine` default | `list`). */
3516
- mode?: "list" | "combine";
3636
+ mode?: "combine" | "ai";
3517
3637
  /** @description Source pins: `pins[<dataPoint>]=id,id`. Maps each data-point name to a comma-joined list of preferred providerIds. */
3518
3638
  pins?: {
3519
3639
  [key: string]: string;
3520
3640
  };
3521
3641
  /** @description Data-point names the consumer supplies themselves (as `context`) instead of proving. Repeat to pass several. Subset of `dataPoints`. */
3522
3642
  provided?: string[];
3643
+ /** @description ProviderIds to exclude from resolution. Repeat to pass several. */
3644
+ exclude?: components["schemas"]["ProviderID"][];
3523
3645
  };
3524
3646
  header?: never;
3525
3647
  path: {
@@ -3567,6 +3689,157 @@ export interface operations {
3567
3689
  default: components["responses"]["ProblemResponse"];
3568
3690
  };
3569
3691
  };
3692
+ SiteBuildRepair: {
3693
+ parameters: {
3694
+ query: {
3695
+ /** @description The failing sandbox session whose analytics seed the prompt. */
3696
+ sessionId: components["schemas"]["SessionID"];
3697
+ dataPoints?: string[];
3698
+ mode?: "combine" | "ai";
3699
+ provided?: string[];
3700
+ pins?: {
3701
+ [key: string]: string;
3702
+ };
3703
+ exclude?: components["schemas"]["ProviderID"][];
3704
+ };
3705
+ header?: never;
3706
+ path: {
3707
+ domain: string;
3708
+ };
3709
+ cookie?: never;
3710
+ };
3711
+ requestBody?: never;
3712
+ responses: {
3713
+ /** @description The repair wizard fragment. */
3714
+ 200: {
3715
+ headers: {
3716
+ [name: string]: unknown;
3717
+ };
3718
+ content: {
3719
+ "text/html": components["schemas"]["HtmlContent"];
3720
+ };
3721
+ };
3722
+ default: components["responses"]["ProblemResponse"];
3723
+ };
3724
+ };
3725
+ SiteBuildAlternative: {
3726
+ parameters: {
3727
+ query: {
3728
+ /** @description The failing sandbox session to analyze. */
3729
+ sessionId: components["schemas"]["SessionID"];
3730
+ dataPoints?: string[];
3731
+ mode?: "combine" | "ai";
3732
+ provided?: string[];
3733
+ pins?: {
3734
+ [key: string]: string;
3735
+ };
3736
+ exclude?: components["schemas"]["ProviderID"][];
3737
+ };
3738
+ header?: never;
3739
+ path: {
3740
+ domain: string;
3741
+ };
3742
+ cookie?: never;
3743
+ };
3744
+ requestBody?: never;
3745
+ responses: {
3746
+ /** @description No alternative — a fragment + `openRepair` HX-Trigger. */
3747
+ 200: {
3748
+ headers: {
3749
+ [name: string]: unknown;
3750
+ };
3751
+ content: {
3752
+ "text/html": components["schemas"]["HtmlContent"];
3753
+ };
3754
+ };
3755
+ /** @description Alternative found — `HX-Redirect` to the build page. */
3756
+ 204: {
3757
+ headers: {
3758
+ [name: string]: unknown;
3759
+ };
3760
+ content?: never;
3761
+ };
3762
+ default: components["responses"]["ProblemResponse"];
3763
+ };
3764
+ };
3765
+ SiteAiProvider: {
3766
+ parameters: {
3767
+ query?: {
3768
+ /** @description A specific missing data point to name in the prompt. */
3769
+ dataPoint?: string;
3770
+ /** @description A failed sandbox session whose error seeds the prompt. */
3771
+ sessionId?: components["schemas"]["SessionID"];
3772
+ /** @description A provider to version (when owned + editable) instead of creating one. */
3773
+ fromProviderId?: components["schemas"]["ProviderID"];
3774
+ dataPoints?: string[];
3775
+ mode?: "combine" | "ai";
3776
+ provided?: string[];
3777
+ pins?: {
3778
+ [key: string]: string;
3779
+ };
3780
+ exclude?: components["schemas"]["ProviderID"][];
3781
+ };
3782
+ header?: never;
3783
+ path: {
3784
+ domain: string;
3785
+ };
3786
+ cookie?: never;
3787
+ };
3788
+ requestBody?: never;
3789
+ responses: {
3790
+ /** @description The AI dialog body (editable prompt + Try with AI). */
3791
+ 200: {
3792
+ headers: {
3793
+ [name: string]: unknown;
3794
+ };
3795
+ content: {
3796
+ "text/html": components["schemas"]["HtmlContent"];
3797
+ };
3798
+ };
3799
+ default: components["responses"]["ProblemResponse"];
3800
+ };
3801
+ };
3802
+ SiteTryAi: {
3803
+ parameters: {
3804
+ query: {
3805
+ /** @description The AI provider to try. */
3806
+ providerId: components["schemas"]["ProviderID"];
3807
+ };
3808
+ header?: never;
3809
+ path: {
3810
+ domain: string;
3811
+ };
3812
+ cookie?: never;
3813
+ };
3814
+ /** @description An optional edited extraction prompt to save before trying. */
3815
+ requestBody?: {
3816
+ content: {
3817
+ "application/x-www-form-urlencoded": components["schemas"]["SiteTryAiBody"];
3818
+ "application/json": components["schemas"]["SiteTryAiBody"];
3819
+ };
3820
+ };
3821
+ responses: {
3822
+ /** @description Session created. */
3823
+ 201: {
3824
+ headers: {
3825
+ [name: string]: unknown;
3826
+ };
3827
+ content: {
3828
+ "application/json": components["schemas"]["VerificationSession"];
3829
+ };
3830
+ };
3831
+ /** @description Sandbox verification quota exceeded. */
3832
+ 429: {
3833
+ headers: {
3834
+ [name: string]: unknown;
3835
+ };
3836
+ content: {
3837
+ "application/problem+json": components["schemas"]["Problem"];
3838
+ };
3839
+ };
3840
+ default: components["responses"]["ProblemResponse"];
3841
+ };
3842
+ };
3570
3843
  DiscoverTeachAgent: {
3571
3844
  parameters: {
3572
3845
  query?: {
@@ -3592,6 +3865,8 @@ export interface operations {
3592
3865
  domain: string;
3593
3866
  /** @description Selected data-point names. Repeat to pass several. */
3594
3867
  dataPoints: string[];
3868
+ /** @description Resolution mode. `combine` (default) uses the fewest providers; `ai` is a forward-compat alias that resolves like combine for now. */
3869
+ mode?: "combine" | "ai";
3595
3870
  };
3596
3871
  header?: never;
3597
3872
  path?: never;
@@ -3599,21 +3874,78 @@ export interface operations {
3599
3874
  };
3600
3875
  requestBody?: never;
3601
3876
  responses: {
3602
- /** @description Covering providers (possibly none). */
3877
+ /** @description Resolved providers (possibly none). */
3603
3878
  200: {
3604
3879
  headers: {
3605
3880
  [name: string]: unknown;
3606
3881
  };
3607
3882
  content: {
3608
3883
  "application/json": {
3609
- /** @description The most specific covering provider's id, if any — a convenience for the common single-provider case. */
3884
+ /** @description The first resolved provider's id, if any — a convenience for the common single-provider case. */
3610
3885
  providerId?: components["schemas"]["ProviderID"];
3611
- /** @description True when no existing provider covers the full selection (a new one must be created/stitched). */
3886
+ /** @description True when some selected data point has no provider (see `uncovered`) — a new provider must be authored. */
3612
3887
  needsCreation: boolean;
3613
3888
  providers: {
3614
3889
  providerId: components["schemas"]["ProviderID"];
3615
3890
  slug: string;
3891
+ /** @description The selected data points this provider covers. */
3616
3892
  dataPoints: string[];
3893
+ /** @description Recent verification health for this provider (last 30 days). Present only when there is enough history (a minimum number of attempts) to be meaningful; absent for new or rarely-used providers. Used to break ranking ties between providers covering the same data points. */
3894
+ reliability?: {
3895
+ /**
3896
+ * Format: float
3897
+ * @description Fraction of recent sessions that started this provider and completed its claim without failure.
3898
+ */
3899
+ recentSuccessRate: number;
3900
+ /** @description Number of recent sessions that started this provider (the sample size behind `recentSuccessRate`). */
3901
+ attempts: number;
3902
+ };
3903
+ }[];
3904
+ /** @description Selected data points no existing provider exposes. */
3905
+ uncovered: string[];
3906
+ /** @description Inputs the consumer must supply at verification time (passed as session `context`). Collect these from the user. */
3907
+ requiredContext: {
3908
+ key: string;
3909
+ required: boolean;
3910
+ description?: string;
3911
+ }[];
3912
+ /** @description Whether the resolved providers fuse into one. Informational — `POST /verifications/sessions` already accepts the whole `providers` array. */
3913
+ merge: {
3914
+ mergeable: boolean;
3915
+ /** @description True when merging removes duplicate requests to the same endpoint (saved overfetch). */
3916
+ dedupedSomeRequests?: boolean;
3917
+ };
3918
+ };
3919
+ };
3920
+ };
3921
+ default: components["responses"]["ProblemResponse"];
3922
+ };
3923
+ };
3924
+ DiscoverDataPoints: {
3925
+ parameters: {
3926
+ query: {
3927
+ /** @description Website domain (normalized server-side). */
3928
+ domain: string;
3929
+ /** @description Case-insensitive filter over data-point names. */
3930
+ q?: string;
3931
+ };
3932
+ header?: never;
3933
+ path?: never;
3934
+ cookie?: never;
3935
+ };
3936
+ requestBody?: never;
3937
+ responses: {
3938
+ /** @description Verifiable data points (possibly none). */
3939
+ 200: {
3940
+ headers: {
3941
+ [name: string]: unknown;
3942
+ };
3943
+ content: {
3944
+ "application/json": {
3945
+ dataPoints: {
3946
+ name: string;
3947
+ description?: string;
3948
+ providerCount: number;
3617
3949
  }[];
3618
3950
  };
3619
3951
  };
@@ -5024,7 +5356,7 @@ export interface operations {
5024
5356
  };
5025
5357
  };
5026
5358
  301: components["responses"]["CanonicalRedirectResponse"];
5027
- /** @description Verification not found, or it is `PRIVATE` and the caller is not authorized to see it. */
5359
+ /** @description Provider not found, or it is `PRIVATE` and the caller is not authorized to see it. */
5028
5360
  404: {
5029
5361
  headers: {
5030
5362
  [name: string]: unknown;
@@ -5060,7 +5392,7 @@ export interface operations {
5060
5392
  };
5061
5393
  content?: never;
5062
5394
  };
5063
- /** @description Precondition Failed. The supplied `If-Match` does not match the verification's current `ETag` — re-fetch and retry. */
5395
+ /** @description Precondition Failed. The supplied `If-Match` does not match the provider's current `ETag` — re-fetch and retry. */
5064
5396
  412: {
5065
5397
  headers: {
5066
5398
  [name: string]: unknown;
@@ -5105,7 +5437,7 @@ export interface operations {
5105
5437
  };
5106
5438
  };
5107
5439
  403: components["responses"]["ForbiddenResponse"];
5108
- /** @description Precondition Failed. The supplied `If-Match` does not match the verification's current `ETag` — re-fetch and retry. */
5440
+ /** @description Precondition Failed. The supplied `If-Match` does not match the provider's current `ETag` — re-fetch and retry. */
5109
5441
  412: {
5110
5442
  headers: {
5111
5443
  [name: string]: unknown;
@@ -5121,7 +5453,7 @@ export interface operations {
5121
5453
  header?: never;
5122
5454
  path: {
5123
5455
  providerId: components["schemas"]["ProviderID"];
5124
- /** @description Verification slug. URL-safe identifier; lowercase letters, digits, and hyphens only. If stale, HTML callers get a 301 to the current slug. */
5456
+ /** @description Provider slug. URL-safe identifier; lowercase letters, digits, and hyphens only. If stale, HTML callers get a 301 to the current slug. */
5125
5457
  slug: string;
5126
5458
  };
5127
5459
  cookie?: never;
@@ -5140,7 +5472,7 @@ export interface operations {
5140
5472
  };
5141
5473
  };
5142
5474
  301: components["responses"]["CanonicalRedirectResponse"];
5143
- /** @description Verification not found, or it is `PRIVATE` and the caller is not authorized to see it. */
5475
+ /** @description Provider not found, or it is `PRIVATE` and the caller is not authorized to see it. */
5144
5476
  404: {
5145
5477
  headers: {
5146
5478
  [name: string]: unknown;