@hypequery/cloud-client 0.0.0-canary-20261113132544

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.
@@ -0,0 +1,3320 @@
1
+ import type { CallOptions } from '../types.js';
2
+ /** The operations spec version this client was generated from. */
3
+ export declare const SPEC_VERSION = 1;
4
+ /** Every operation path is relative to this. */
5
+ export declare const BASE_PATH = "/v1";
6
+ /** Every error category, in the order Cloud lists them. */
7
+ export declare const CLOUD_ERROR_CATEGORIES: readonly ["correctable_input", "unauthenticated", "forbidden", "tenant_unavailable", "budget_exceeded", "cancelled", "stale_contract", "unavailable", "internal"];
8
+ export type CloudErrorCategory = (typeof CLOUD_ERROR_CATEGORIES)[number];
9
+ /** Every error code an operation can return, with what to do about it. */
10
+ export declare const CLOUD_ERRORS: {
11
+ readonly UNAUTHENTICATED: {
12
+ readonly status: 401;
13
+ readonly category: "unauthenticated";
14
+ readonly retryable: false;
15
+ readonly hint: "Sign in to hypequery Cloud, or send a valid bearer token.";
16
+ readonly docsUrl: "https://hypequery.com/docs/errors/unauthenticated";
17
+ };
18
+ readonly FORBIDDEN: {
19
+ readonly status: 403;
20
+ readonly category: "forbidden";
21
+ readonly retryable: false;
22
+ readonly hint: "Ask an organisation Admin to do this, or to change your role.";
23
+ readonly docsUrl: "https://hypequery.com/docs/errors/forbidden";
24
+ };
25
+ readonly INVALID_REQUEST_ORIGIN: {
26
+ readonly status: 403;
27
+ readonly category: "forbidden";
28
+ readonly retryable: false;
29
+ readonly hint: "Send the request from the Cloud app, or authenticate with a bearer token instead of a cookie.";
30
+ readonly docsUrl: "https://hypequery.com/docs/errors/invalid-request-origin";
31
+ };
32
+ readonly OPERATION_NOT_FOUND: {
33
+ readonly status: 404;
34
+ readonly category: "correctable_input";
35
+ readonly retryable: false;
36
+ readonly hint: "Check the method and path against operations-v1.json.";
37
+ readonly docsUrl: "https://hypequery.com/docs/errors/operation-not-found";
38
+ };
39
+ readonly INVALID_INPUT: {
40
+ readonly status: 400;
41
+ readonly category: "correctable_input";
42
+ readonly retryable: false;
43
+ readonly hint: "Fix the fields listed in `issues`, then retry.";
44
+ readonly docsUrl: "https://hypequery.com/docs/errors/invalid-input";
45
+ };
46
+ readonly PROJECT_NOT_FOUND: {
47
+ readonly status: 404;
48
+ readonly category: "correctable_input";
49
+ readonly retryable: false;
50
+ readonly hint: "List projects (`projects.list`) and use one of their slugs.";
51
+ readonly docsUrl: "https://hypequery.com/docs/errors/project-not-found";
52
+ };
53
+ readonly PROJECT_HAS_SEVERAL_TARGETS: {
54
+ readonly status: 409;
55
+ readonly category: "unavailable";
56
+ readonly retryable: false;
57
+ readonly hint: "This project still has several environments; contact hypequery support to finish moving it to projects only.";
58
+ readonly docsUrl: "https://hypequery.com/docs/errors/project-has-several-targets";
59
+ };
60
+ readonly VERSION_NOT_FOUND: {
61
+ readonly status: 404;
62
+ readonly category: "correctable_input";
63
+ readonly retryable: false;
64
+ readonly hint: "List versions (`releases.list`) and use one of their labels.";
65
+ readonly docsUrl: "https://hypequery.com/docs/errors/version-not-found";
66
+ };
67
+ readonly RELEASE_MOVED: {
68
+ readonly status: 409;
69
+ readonly category: "stale_contract";
70
+ readonly retryable: false;
71
+ readonly hint: "Read the current state again (`releases.status` or `drafts.list`), show the user what changed, then retry with the new values.";
72
+ readonly docsUrl: "https://hypequery.com/docs/errors/release-moved";
73
+ };
74
+ readonly RELEASE_CHANGE_REFUSED: {
75
+ readonly status: 409;
76
+ readonly category: "correctable_input";
77
+ readonly retryable: false;
78
+ readonly hint: "Read the message: it names the guard that refused the change and how to clear it.";
79
+ readonly docsUrl: "https://hypequery.com/docs/errors/release-change-refused";
80
+ };
81
+ readonly DRAFT_NOT_FOUND: {
82
+ readonly status: 404;
83
+ readonly category: "correctable_input";
84
+ readonly retryable: false;
85
+ readonly hint: "List drafts (`drafts.list`) and use one of their ids.";
86
+ readonly docsUrl: "https://hypequery.com/docs/errors/draft-not-found";
87
+ };
88
+ readonly DRAFT_NOT_CHECKABLE: {
89
+ readonly status: 409;
90
+ readonly category: "correctable_input";
91
+ readonly retryable: false;
92
+ readonly hint: "Number checks here are for code drafts with a saved release; deploy the draft again from code first.";
93
+ readonly docsUrl: "https://hypequery.com/docs/errors/draft-not-checkable";
94
+ };
95
+ readonly DRAFT_NOT_READY: {
96
+ readonly status: 422;
97
+ readonly category: "correctable_input";
98
+ readonly retryable: false;
99
+ readonly hint: "Fix what the message names in the draft (or the code, for a code draft), then publish again.";
100
+ readonly docsUrl: "https://hypequery.com/docs/errors/draft-not-ready";
101
+ };
102
+ readonly CONNECTION_NOT_SAVED: {
103
+ readonly status: 404;
104
+ readonly category: "correctable_input";
105
+ readonly retryable: false;
106
+ readonly hint: "Call connections_link and give the user its link to enter the connection in the dashboard (or `connections.save` from the CLI); never ask for the password in chat.";
107
+ readonly docsUrl: "https://hypequery.com/docs/errors/connection-not-saved";
108
+ };
109
+ readonly CONNECTION_AUTH_FAILED: {
110
+ readonly status: 422;
111
+ readonly category: "correctable_input";
112
+ readonly retryable: false;
113
+ readonly hint: "Call connections_link so the user can correct the ClickHouse user and password in the dashboard (or `connections.save` from the CLI), then run `connections.test`. Never ask for the password in chat.";
114
+ readonly docsUrl: "https://hypequery.com/docs/errors/connection-auth-failed";
115
+ };
116
+ readonly CONNECTION_UNREACHABLE: {
117
+ readonly status: 502;
118
+ readonly category: "unavailable";
119
+ readonly retryable: true;
120
+ readonly hint: "Check the host and port, and that ClickHouse accepts connections from hypequery's egress addresses; then run `connections.test` again.";
121
+ readonly docsUrl: "https://hypequery.com/docs/errors/connection-unreachable";
122
+ };
123
+ readonly CONNECTION_QUERY_FAILED: {
124
+ readonly status: 422;
125
+ readonly category: "correctable_input";
126
+ readonly retryable: false;
127
+ readonly hint: "ClickHouse refused the check query: grant the user what the message names, then run `connections.test`.";
128
+ readonly docsUrl: "https://hypequery.com/docs/errors/connection-query-failed";
129
+ };
130
+ readonly CONNECTION_DATABASE_LOCKED: {
131
+ readonly status: 409;
132
+ readonly category: "correctable_input";
133
+ readonly retryable: false;
134
+ readonly hint: "Keep the default database while a release is live; add other databases to `databases` instead.";
135
+ readonly docsUrl: "https://hypequery.com/docs/errors/connection-database-locked";
136
+ };
137
+ readonly STALE_REVISION: {
138
+ readonly status: 409;
139
+ readonly category: "stale_contract";
140
+ readonly retryable: false;
141
+ readonly hint: "Read it again, then retry with the new expectedRevision.";
142
+ readonly docsUrl: "https://hypequery.com/docs/errors/stale-revision";
143
+ };
144
+ readonly TENANT_NOT_FOUND: {
145
+ readonly status: 404;
146
+ readonly category: "correctable_input";
147
+ readonly retryable: false;
148
+ readonly hint: "List customers (`tenants.list`) and use one of their ids.";
149
+ readonly docsUrl: "https://hypequery.com/docs/errors/tenant-not-found";
150
+ };
151
+ readonly TENANT_EXISTS: {
152
+ readonly status: 409;
153
+ readonly category: "correctable_input";
154
+ readonly retryable: false;
155
+ readonly hint: "That customer is already registered; update it (`tenants.update`) instead.";
156
+ readonly docsUrl: "https://hypequery.com/docs/errors/tenant-exists";
157
+ };
158
+ readonly PERMISSION_SET_NOT_FOUND: {
159
+ readonly status: 404;
160
+ readonly category: "correctable_input";
161
+ readonly retryable: false;
162
+ readonly hint: "List permission sets (`permissionSets.list`) and use one of their ids.";
163
+ readonly docsUrl: "https://hypequery.com/docs/errors/permission-set-not-found";
164
+ };
165
+ readonly PERMISSION_SET_EXISTS: {
166
+ readonly status: 409;
167
+ readonly category: "correctable_input";
168
+ readonly retryable: false;
169
+ readonly hint: "Choose another name, or update the existing set (`permissionSets.update`).";
170
+ readonly docsUrl: "https://hypequery.com/docs/errors/permission-set-exists";
171
+ };
172
+ readonly GRANT_NOT_FOUND: {
173
+ readonly status: 404;
174
+ readonly category: "correctable_input";
175
+ readonly retryable: false;
176
+ readonly hint: "List connections (`tenantGrants.list`) and use one of their ids.";
177
+ readonly docsUrl: "https://hypequery.com/docs/errors/grant-not-found";
178
+ };
179
+ readonly ISSUER_UNREADABLE: {
180
+ readonly status: 422;
181
+ readonly category: "correctable_input";
182
+ readonly retryable: false;
183
+ readonly hint: "Check the URL is public https and serves the provider's JSON (a JWKS `keys` array, or openid-configuration), then save again.";
184
+ readonly docsUrl: "https://hypequery.com/docs/errors/issuer-unreadable";
185
+ };
186
+ readonly ISSUER_REQUIRED: {
187
+ readonly status: 409;
188
+ readonly category: "correctable_input";
189
+ readonly retryable: false;
190
+ readonly hint: "Save the identity provider's JWT settings first (`jwtIssuer.save`).";
191
+ readonly docsUrl: "https://hypequery.com/docs/errors/issuer-required";
192
+ };
193
+ readonly ALREADY_CONFIGURED: {
194
+ readonly status: 409;
195
+ readonly category: "correctable_input";
196
+ readonly retryable: false;
197
+ readonly hint: "Read the current settings, then save again with their expectedRevision to replace them.";
198
+ readonly docsUrl: "https://hypequery.com/docs/errors/already-configured";
199
+ };
200
+ readonly NOT_CONFIGURED: {
201
+ readonly status: 404;
202
+ readonly category: "correctable_input";
203
+ readonly retryable: false;
204
+ readonly hint: "Nothing is configured yet; save it first.";
205
+ readonly docsUrl: "https://hypequery.com/docs/errors/not-configured";
206
+ };
207
+ readonly PROJECT_EXISTS: {
208
+ readonly status: 409;
209
+ readonly category: "correctable_input";
210
+ readonly retryable: false;
211
+ readonly hint: "Choose another slug, or use the existing project (`projects.get`).";
212
+ readonly docsUrl: "https://hypequery.com/docs/errors/project-exists";
213
+ };
214
+ readonly KEY_NOT_FOUND: {
215
+ readonly status: 404;
216
+ readonly category: "correctable_input";
217
+ readonly retryable: false;
218
+ readonly hint: "List keys (`apiKeys.list` or `deployKeys.list`) and use an active key's id.";
219
+ readonly docsUrl: "https://hypequery.com/docs/errors/key-not-found";
220
+ };
221
+ readonly MEMBER_NOT_FOUND: {
222
+ readonly status: 404;
223
+ readonly category: "correctable_input";
224
+ readonly retryable: false;
225
+ readonly hint: "List members (`members.list`) and use one of their ids.";
226
+ readonly docsUrl: "https://hypequery.com/docs/errors/member-not-found";
227
+ };
228
+ readonly SESSION_REQUIRED: {
229
+ readonly status: 403;
230
+ readonly category: "forbidden";
231
+ readonly retryable: false;
232
+ readonly hint: "Make this change in the dashboard or with `hypequery` signed in as yourself.";
233
+ readonly docsUrl: "https://hypequery.com/docs/errors/session-required";
234
+ };
235
+ readonly DRAFT_READ_ONLY: {
236
+ readonly status: 409;
237
+ readonly category: "correctable_input";
238
+ readonly retryable: false;
239
+ readonly hint: "This project's model lives in a repository. Explain it or answer questions; for a change, write a prompt or pull-request description for the user's coding agent.";
240
+ readonly docsUrl: "https://hypequery.com/docs/errors/draft-read-only";
241
+ };
242
+ readonly NOTHING_TO_CONFIRM: {
243
+ readonly status: 409;
244
+ readonly category: "correctable_input";
245
+ readonly retryable: false;
246
+ readonly hint: "Call customer_scope_list and confirm only a dataset it lists with a candidate column.";
247
+ readonly docsUrl: "https://hypequery.com/docs/errors/nothing-to-confirm";
248
+ };
249
+ readonly FINDINGS_CHANGED: {
250
+ readonly status: 409;
251
+ readonly category: "stale_contract";
252
+ readonly retryable: false;
253
+ readonly hint: "Read drafts_findings again and answer with the current ids and tokens.";
254
+ readonly docsUrl: "https://hypequery.com/docs/errors/findings-changed";
255
+ };
256
+ readonly RUN_CONFLICT: {
257
+ readonly status: 409;
258
+ readonly category: "stale_contract";
259
+ readonly retryable: false;
260
+ readonly hint: "Read drafts_run_status and act on the run it returns.";
261
+ readonly docsUrl: "https://hypequery.com/docs/errors/run-conflict";
262
+ };
263
+ readonly DRAFT_NAME_TAKEN: {
264
+ readonly status: 409;
265
+ readonly category: "correctable_input";
266
+ readonly retryable: false;
267
+ readonly hint: "Choose another name; drafts_list shows the names in use.";
268
+ readonly docsUrl: "https://hypequery.com/docs/errors/draft-name-taken";
269
+ };
270
+ readonly UPDATE_CONFLICTS: {
271
+ readonly status: 409;
272
+ readonly category: "correctable_input";
273
+ readonly retryable: false;
274
+ readonly hint: "Ask the user which side to keep for each conflict in drafts_update, preview with drafts_apply_update, then apply.";
275
+ readonly docsUrl: "https://hypequery.com/docs/errors/update-conflicts";
276
+ };
277
+ readonly OWNERSHIP_CHANGE_REQUIRED: {
278
+ readonly status: 409;
279
+ readonly category: "correctable_input";
280
+ readonly retryable: false;
281
+ readonly hint: "Tell the user the live model was built in Cloud and publishing this code draft replaces it, after which the project is managed in code; once they agree, repeat the call with takeOwnership: true.";
282
+ readonly docsUrl: "https://hypequery.com/docs/errors/ownership-change-required";
283
+ };
284
+ readonly CONFIRMATION_REQUIRED: {
285
+ readonly status: 409;
286
+ readonly category: "correctable_input";
287
+ readonly retryable: false;
288
+ readonly hint: "Show the user what will change; once they agree, repeat the call with `confirm: true`.";
289
+ readonly docsUrl: "https://hypequery.com/docs/errors/confirmation-required";
290
+ };
291
+ readonly INTERNAL: {
292
+ readonly status: 500;
293
+ readonly category: "internal";
294
+ readonly retryable: true;
295
+ readonly hint: "Retry; if it keeps failing, report it with hypequery_feedback and this requestId.";
296
+ readonly docsUrl: "https://hypequery.com/docs/errors/internal";
297
+ };
298
+ };
299
+ export type CloudErrorCode = keyof typeof CLOUD_ERRORS;
300
+ /** Input for `projects.list`. */
301
+ export type ProjectsListInput = Record<string, never>;
302
+ /** Output of `projects.list`. */
303
+ export interface ProjectsListOutput {
304
+ projects: Array<{
305
+ name: string;
306
+ slug: string;
307
+ /** False until a release is live. */
308
+ live: boolean;
309
+ }>;
310
+ }
311
+ /** Input for `projects.get`. */
312
+ export interface ProjectsGetInput {
313
+ project: string;
314
+ }
315
+ /** Output of `projects.get`. */
316
+ export interface ProjectsGetOutput {
317
+ name: string;
318
+ slug: string;
319
+ /** False until a release is live. */
320
+ live: boolean;
321
+ /** The live revision, or null. */
322
+ currentRevision: string | null;
323
+ }
324
+ /** Input for `projects.connectInfo`. */
325
+ export interface ProjectsConnectInfoInput {
326
+ project: string;
327
+ }
328
+ /** Output of `projects.connectInfo`. */
329
+ export interface ProjectsConnectInfoOutput {
330
+ live: boolean;
331
+ mcp: {
332
+ url: string;
333
+ };
334
+ rest: {
335
+ baseUrl: string;
336
+ datasets: Array<{
337
+ name: string;
338
+ method: "POST";
339
+ url: string;
340
+ }>;
341
+ };
342
+ registry: {
343
+ url: string;
344
+ };
345
+ clientContract: {
346
+ url: string;
347
+ };
348
+ }
349
+ /** Input for `projects.create`. */
350
+ export interface ProjectsCreateInput {
351
+ name: string;
352
+ /** Lowercase letters, digits and hyphens; part of every URL, so it never changes. */
353
+ slug: string;
354
+ }
355
+ /** Output of `projects.create`. */
356
+ export interface ProjectsCreateOutput {
357
+ name: string;
358
+ slug: string;
359
+ /** False until a release is live. */
360
+ live: boolean;
361
+ }
362
+ /** Input for `projects.rename`. */
363
+ export interface ProjectsRenameInput {
364
+ project: string;
365
+ name: string;
366
+ }
367
+ /** Output of `projects.rename`. */
368
+ export interface ProjectsRenameOutput {
369
+ name: string;
370
+ slug: string;
371
+ /** False until a release is live. */
372
+ live: boolean;
373
+ }
374
+ /** Input for `releases.status`. */
375
+ export interface ReleasesStatusInput {
376
+ project: string;
377
+ }
378
+ /** Output of `releases.status`. */
379
+ export interface ReleasesStatusOutput {
380
+ live: boolean;
381
+ currentVersion: string | null;
382
+ /** Pass as expectedRevision to roll back or publish. */
383
+ currentRevision: string | null;
384
+ }
385
+ /** Input for `releases.list`. */
386
+ export interface ReleasesListInput {
387
+ project: string;
388
+ /** @default 20 */
389
+ limit?: number;
390
+ /** From a previous nextBefore. */
391
+ before?: number;
392
+ }
393
+ /** Output of `releases.list`. */
394
+ export interface ReleasesListOutput {
395
+ versions: Array<{
396
+ label: string;
397
+ number: number;
398
+ releaseIdentity: string;
399
+ publishedAt: string;
400
+ draftName?: string | null;
401
+ createdByUserId: string;
402
+ }>;
403
+ nextBefore: number | null;
404
+ currentVersion: string | null;
405
+ currentRevision: string | null;
406
+ }
407
+ /** Input for `releases.get`. */
408
+ export interface ReleasesGetInput {
409
+ project: string;
410
+ /** A version label, e.g. v12. */
411
+ version: string;
412
+ }
413
+ /** Output of `releases.get`. */
414
+ export interface ReleasesGetOutput {
415
+ version: {
416
+ label: string;
417
+ number: number;
418
+ releaseIdentity: string;
419
+ publishedAt: string;
420
+ draftName?: string | null;
421
+ createdByUserId: string;
422
+ };
423
+ /** The version's deployment contract. */
424
+ contract: Record<string, unknown>;
425
+ }
426
+ /** Input for `releases.rollback`. */
427
+ export interface ReleasesRollbackInput {
428
+ project: string;
429
+ /** A version label, e.g. v12. */
430
+ version: string;
431
+ /** The live revision from releases.status. */
432
+ expectedRevision: string;
433
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
434
+ confirm: true;
435
+ }
436
+ /** Output of `releases.rollback`. */
437
+ export interface ReleasesRollbackOutput {
438
+ status: "activated" | "already-active";
439
+ version: string;
440
+ }
441
+ /** Input for `drafts.list`. */
442
+ export interface DraftsListInput {
443
+ project: string;
444
+ /** @default "false" */
445
+ archived?: "true" | "false";
446
+ }
447
+ /** Output of `drafts.list`. */
448
+ export interface DraftsListOutput {
449
+ drafts: Array<{
450
+ id: string;
451
+ name: string;
452
+ source: "code" | "chat";
453
+ status: "live" | "ready" | "unsaved";
454
+ /** Pass as releaseIdentity to publish. */
455
+ latestReleaseIdentity: string | null;
456
+ /** Pass as expectedRevision to publish. */
457
+ baseRevision: string | null;
458
+ /** True when something else was published since this draft began. */
459
+ stale: boolean;
460
+ stagingUrl: string;
461
+ updatedAt: string;
462
+ }>;
463
+ }
464
+ /** Input for `drafts.open`. */
465
+ export interface DraftsOpenInput {
466
+ project: string;
467
+ /**
468
+ * A draft id; omit for your own working draft.
469
+ * @format uuid
470
+ */
471
+ draft?: string;
472
+ }
473
+ /** Output of `drafts.open`. */
474
+ export interface DraftsOpenOutput {
475
+ draft: {
476
+ id: string;
477
+ name: string;
478
+ revision: number;
479
+ /** The draft's content identity; drafts.save checks it hasn't changed. */
480
+ identity: string | null;
481
+ /** setup until the project's first publish, then draft. */
482
+ stage: "setup" | "draft";
483
+ /** What the user said at setup, saved with drafts_setup; resume from here. */
484
+ setupAnswers: {
485
+ description: string;
486
+ audiences: Array<"dashboards" | "agents" | "internal" | "customers">;
487
+ tables: Array<string>;
488
+ priorityMetrics: string;
489
+ anchor: {
490
+ metric: string;
491
+ value: string;
492
+ period: string;
493
+ source: string;
494
+ };
495
+ } | null;
496
+ };
497
+ tables: Array<{
498
+ name: string;
499
+ database?: string;
500
+ }>;
501
+ datasets: Array<string>;
502
+ }
503
+ /** Input for `drafts.save`. */
504
+ export interface DraftsSaveInput {
505
+ project: string;
506
+ /** @format uuid */
507
+ draft: string;
508
+ /** From drafts.open; refuses if the draft changed since. Omit to save it as it is. */
509
+ expectedIdentity?: string;
510
+ }
511
+ /** Output of `drafts.save`. */
512
+ export interface DraftsSaveOutput {
513
+ draftId: string;
514
+ name: string;
515
+ revision: number;
516
+ /** Pass as releaseIdentity to drafts.promote. */
517
+ releaseIdentity: string;
518
+ stagingUrl: string;
519
+ }
520
+ /** Input for `drafts.review`. */
521
+ export interface DraftsReviewInput {
522
+ project: string;
523
+ /** @format uuid */
524
+ draft: string;
525
+ }
526
+ /** Output of `drafts.review`. */
527
+ export interface DraftsReviewOutput {
528
+ review: Record<string, unknown>;
529
+ }
530
+ /** Input for `drafts.checks`. */
531
+ export interface DraftsChecksInput {
532
+ project: string;
533
+ /** @format uuid */
534
+ draft: string;
535
+ /** Run again even when a result is stored. */
536
+ rerun?: boolean;
537
+ }
538
+ /** Output of `drafts.checks`. */
539
+ export interface DraftsChecksOutput {
540
+ status: "checked" | "unavailable";
541
+ reason?: string;
542
+ failures: Array<Record<string, unknown>>;
543
+ unverified: Array<Record<string, unknown>>;
544
+ passed: number;
545
+ }
546
+ /** Input for `drafts.promote`. */
547
+ export interface DraftsPromoteInput {
548
+ project: string;
549
+ /** @format uuid */
550
+ draft: string;
551
+ /** The draft's latestReleaseIdentity you reviewed. */
552
+ releaseIdentity: string;
553
+ /** The live revision, or null for a first publish. */
554
+ expectedRevision: string | null;
555
+ expectedWorkingRevision?: number;
556
+ /** Code drafts over a model built in Cloud: true only after the user agreed the project is then managed in code. */
557
+ takeOwnership?: boolean;
558
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
559
+ confirm: true;
560
+ }
561
+ /** Output of `drafts.promote`. */
562
+ export interface DraftsPromoteOutput {
563
+ status: "activated" | "already-active";
564
+ version: string | null;
565
+ draftArchived: boolean;
566
+ }
567
+ /** Input for `drafts.get`. */
568
+ export interface DraftsGetInput {
569
+ project: string;
570
+ /** @format uuid */
571
+ draft: string;
572
+ }
573
+ /** Output of `drafts.get`. */
574
+ export interface DraftsGetOutput {
575
+ draft: Record<string, unknown>;
576
+ }
577
+ /** Input for `drafts.rename`. */
578
+ export interface DraftsRenameInput {
579
+ project: string;
580
+ /** @format uuid */
581
+ draft: string;
582
+ name: string;
583
+ }
584
+ /** Output of `drafts.rename`. */
585
+ export interface DraftsRenameOutput {
586
+ draft: {
587
+ id: string;
588
+ name: string;
589
+ };
590
+ }
591
+ /** Input for `drafts.delete`. */
592
+ export interface DraftsDeleteInput {
593
+ project: string;
594
+ /** @format uuid */
595
+ draft: string;
596
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
597
+ confirm: true;
598
+ }
599
+ /** Output of `drafts.delete`. */
600
+ export interface DraftsDeleteOutput {
601
+ deleted: true;
602
+ }
603
+ /** Input for `drafts.archived`. */
604
+ export interface DraftsArchivedInput {
605
+ project: string;
606
+ /** @format uuid */
607
+ draft: string;
608
+ }
609
+ /** Output of `drafts.archived`. */
610
+ export interface DraftsArchivedOutput {
611
+ archive: Record<string, unknown>;
612
+ }
613
+ /** Input for `drafts.reopen`. */
614
+ export interface DraftsReopenInput {
615
+ project: string;
616
+ /** @format uuid */
617
+ draft: string;
618
+ /** baseRevision from drafts_archived. */
619
+ expectedBaseRevision: string;
620
+ /** releaseIdentity from drafts_archived. */
621
+ expectedReleaseIdentity: string;
622
+ }
623
+ /** Output of `drafts.reopen`. */
624
+ export interface DraftsReopenOutput {
625
+ draft: Record<string, unknown>;
626
+ }
627
+ /** Input for `drafts.impact`. */
628
+ export interface DraftsImpactInput {
629
+ project: string;
630
+ /** @format uuid */
631
+ draft: string;
632
+ /** The saved release you reviewed (drafts_review). */
633
+ releaseIdentity: string;
634
+ }
635
+ /** Output of `drafts.impact`. */
636
+ export interface DraftsImpactOutput {
637
+ impact: Record<string, unknown>;
638
+ }
639
+ /** Input for `drafts.update`. */
640
+ export interface DraftsUpdateInput {
641
+ project: string;
642
+ /** @format uuid */
643
+ draft: string;
644
+ }
645
+ /** Output of `drafts.update`. */
646
+ export interface DraftsUpdateOutput {
647
+ update: Record<string, unknown>;
648
+ }
649
+ /** Input for `drafts.applyUpdate`. */
650
+ export interface DraftsApplyUpdateInput {
651
+ project: string;
652
+ /** @format uuid */
653
+ draft: string;
654
+ action: "preview" | "apply";
655
+ /** workingRevision from drafts_update. */
656
+ expectedRevision: number;
657
+ /** baseRevision from drafts_update. */
658
+ expectedBaseRevision: string | null;
659
+ /** publishedRevision from drafts_update. */
660
+ expectedPublishedRevision: string | null;
661
+ /** latestReleaseIdentity from drafts_update. */
662
+ expectedReleaseIdentity: string | null;
663
+ /** Each conflict's key from drafts_update, and which side the user chose. */
664
+ resolutions: Record<string, "draft" | "published">;
665
+ }
666
+ /** Output of `drafts.applyUpdate`. */
667
+ export interface DraftsApplyUpdateOutput {
668
+ update?: Record<string, unknown>;
669
+ draft?: Record<string, unknown>;
670
+ }
671
+ /** Input for `drafts.refreshBase`. */
672
+ export interface DraftsRefreshBaseInput {
673
+ project: string;
674
+ /** @format uuid */
675
+ draft: string;
676
+ /** baseRevision from drafts_review. */
677
+ expectedBaseRevision: string | null;
678
+ /** expectedRevision from drafts_review. */
679
+ expectedPublishedRevision: string | null;
680
+ /** releaseIdentity from drafts_review. */
681
+ expectedReleaseIdentity: string;
682
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
683
+ confirm: true;
684
+ }
685
+ /** Output of `drafts.refreshBase`. */
686
+ export interface DraftsRefreshBaseOutput {
687
+ draft: Record<string, unknown>;
688
+ }
689
+ /** Input for `drafts.setup`. */
690
+ export interface DraftsSetupInput {
691
+ project: string;
692
+ /** @format uuid */
693
+ draft: string;
694
+ /** The draft's revision from drafts_open. */
695
+ expectedRevision: number;
696
+ /** The user's own statements; tables must be names drafts_open listed. */
697
+ answers: {
698
+ description: string;
699
+ audiences: Array<"dashboards" | "agents" | "internal" | "customers">;
700
+ tables: Array<string>;
701
+ priorityMetrics: string;
702
+ anchor: {
703
+ metric: string;
704
+ value: string;
705
+ period: string;
706
+ source: string;
707
+ };
708
+ };
709
+ }
710
+ /** Output of `drafts.setup`. */
711
+ export interface DraftsSetupOutput {
712
+ revision: number;
713
+ answers: {
714
+ description: string;
715
+ audiences: Array<"dashboards" | "agents" | "internal" | "customers">;
716
+ tables: Array<string>;
717
+ priorityMetrics: string;
718
+ anchor: {
719
+ metric: string;
720
+ value: string;
721
+ period: string;
722
+ source: string;
723
+ };
724
+ };
725
+ }
726
+ /** Input for `drafts.findings`. */
727
+ export interface DraftsFindingsInput {
728
+ project: string;
729
+ /** @format uuid */
730
+ draft: string;
731
+ }
732
+ /** Output of `drafts.findings`. */
733
+ export interface DraftsFindingsOutput {
734
+ revision: number;
735
+ /** Answer each with drafts_answer, passing its id and token. */
736
+ issues: Array<Record<string, unknown>>;
737
+ numberFindings: Array<Record<string, unknown>>;
738
+ }
739
+ /** Input for `drafts.answer`. */
740
+ export interface DraftsAnswerInput {
741
+ project: string;
742
+ /** @format uuid */
743
+ draft: string;
744
+ expectedRevision: number;
745
+ answers: Array<{
746
+ issueId: string;
747
+ /** The issue's token from drafts_findings. */
748
+ token: string;
749
+ answer: "approve" | "reject" | "later";
750
+ alternative?: "remove" | "custom";
751
+ /** The user's alternative, in their words. */
752
+ text?: string;
753
+ }>;
754
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
755
+ confirm: true;
756
+ }
757
+ /** Output of `drafts.answer`. */
758
+ export interface DraftsAnswerOutput {
759
+ revision: number;
760
+ summary: string;
761
+ }
762
+ /** Input for `drafts.runStatus`. */
763
+ export interface DraftsRunStatusInput {
764
+ project: string;
765
+ /** @format uuid */
766
+ draft: string;
767
+ }
768
+ /** Output of `drafts.runStatus`. */
769
+ export interface DraftsRunStatusOutput {
770
+ revision: number;
771
+ run: {
772
+ id: string;
773
+ status: "queued" | "running" | "paused" | "completed" | "cancelled";
774
+ reason?: string;
775
+ coverage: Record<string, number>;
776
+ [key: string]: unknown;
777
+ } | null;
778
+ }
779
+ /** Input for `drafts.run`. */
780
+ export interface DraftsRunInput {
781
+ project: string;
782
+ /** @format uuid */
783
+ draft: string;
784
+ action: "start" | "resume" | "cancel";
785
+ expectedRevision: number;
786
+ /**
787
+ * Required to resume or cancel.
788
+ * @format uuid
789
+ */
790
+ runId?: string;
791
+ }
792
+ /** Output of `drafts.run`. */
793
+ export interface DraftsRunOutput {
794
+ revision: number;
795
+ run: {
796
+ id: string;
797
+ status: "queued" | "running" | "paused" | "completed" | "cancelled";
798
+ reason?: string;
799
+ coverage: Record<string, number>;
800
+ [key: string]: unknown;
801
+ };
802
+ }
803
+ /** Input for `customerScope.list`. */
804
+ export interface CustomerScopeListInput {
805
+ project: string;
806
+ }
807
+ /** Output of `customerScope.list`. */
808
+ export interface CustomerScopeListOutput {
809
+ /** false until the project has a published release. */
810
+ live: boolean;
811
+ datasets: Array<{
812
+ dataset: string;
813
+ /** Each request names a customer and sees only its rows. */
814
+ scoped: boolean;
815
+ scopedBy: string | null;
816
+ /** A customer-looking column the dataset exposes without being scoped by it. */
817
+ candidate: string | null;
818
+ /** A member confirmed it is the same for every customer. */
819
+ shared: boolean;
820
+ }>;
821
+ /** Flagged datasets nobody has settled yet. */
822
+ unsettled: number;
823
+ }
824
+ /** Input for `customerScope.confirmShared`. */
825
+ export interface CustomerScopeConfirmSharedInput {
826
+ project: string;
827
+ dataset: string;
828
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
829
+ confirm: true;
830
+ }
831
+ /** Output of `customerScope.confirmShared`. */
832
+ export interface CustomerScopeConfirmSharedOutput {
833
+ /** false until the project has a published release. */
834
+ live: boolean;
835
+ datasets: Array<{
836
+ dataset: string;
837
+ /** Each request names a customer and sees only its rows. */
838
+ scoped: boolean;
839
+ scopedBy: string | null;
840
+ /** A customer-looking column the dataset exposes without being scoped by it. */
841
+ candidate: string | null;
842
+ /** A member confirmed it is the same for every customer. */
843
+ shared: boolean;
844
+ }>;
845
+ /** Flagged datasets nobody has settled yet. */
846
+ unsettled: number;
847
+ }
848
+ /** Input for `samplePolicy.get`. */
849
+ export interface SamplePolicyGetInput {
850
+ project: string;
851
+ }
852
+ /** Output of `samplePolicy.get`. */
853
+ export interface SamplePolicyGetOutput {
854
+ policy: {
855
+ mode: "all" | "detected" | "none";
856
+ overrides: Array<{
857
+ table: string;
858
+ column: string;
859
+ send: boolean;
860
+ }>;
861
+ };
862
+ }
863
+ /** Input for `samplePolicy.set`. */
864
+ export interface SamplePolicySetInput {
865
+ project: string;
866
+ policy: {
867
+ mode: "all" | "detected" | "none";
868
+ overrides: Array<{
869
+ table: string;
870
+ column: string;
871
+ send: boolean;
872
+ }>;
873
+ };
874
+ }
875
+ /** Output of `samplePolicy.set`. */
876
+ export interface SamplePolicySetOutput {
877
+ policy: {
878
+ mode: "all" | "detected" | "none";
879
+ overrides: Array<{
880
+ table: string;
881
+ column: string;
882
+ send: boolean;
883
+ }>;
884
+ };
885
+ }
886
+ /** Input for `connections.get`. */
887
+ export interface ConnectionsGetInput {
888
+ project: string;
889
+ }
890
+ /** Output of `connections.get`. */
891
+ export interface ConnectionsGetOutput {
892
+ connection: {
893
+ host: string;
894
+ /** The default database: bare dataset sources read it. */
895
+ database: string;
896
+ databases?: Array<string>;
897
+ username: string;
898
+ verifiedAt?: string | null;
899
+ } | null;
900
+ }
901
+ /** Input for `connections.save`. */
902
+ export interface ConnectionsSaveInput {
903
+ /** @format uri */
904
+ host: string;
905
+ database: string;
906
+ databases?: Array<string>;
907
+ username: string;
908
+ password: string;
909
+ project: string;
910
+ }
911
+ /** Output of `connections.save`. */
912
+ export interface ConnectionsSaveOutput {
913
+ connection: {
914
+ host: string;
915
+ /** The default database: bare dataset sources read it. */
916
+ database: string;
917
+ databases?: Array<string>;
918
+ username: string;
919
+ verifiedAt?: string | null;
920
+ };
921
+ }
922
+ /** Input for `connections.link`. */
923
+ export interface ConnectionsLinkInput {
924
+ project: string;
925
+ }
926
+ /** Output of `connections.link`. */
927
+ export interface ConnectionsLinkOutput {
928
+ /** Give this to the user to open; never ask for the password instead. */
929
+ url: string;
930
+ expiresAt: string;
931
+ }
932
+ /** Input for `connections.test`. */
933
+ export interface ConnectionsTestInput {
934
+ project: string;
935
+ }
936
+ /** Output of `connections.test`. */
937
+ export interface ConnectionsTestOutput {
938
+ ok: true;
939
+ access: Record<string, unknown>;
940
+ }
941
+ /** Input for `connections.queryHistory`. */
942
+ export interface ConnectionsQueryHistoryInput {
943
+ project: string;
944
+ }
945
+ /** Output of `connections.queryHistory`. */
946
+ export interface ConnectionsQueryHistoryOutput {
947
+ consent: Record<string, unknown>;
948
+ connected: boolean;
949
+ }
950
+ /** Input for `connections.setQueryHistory`. */
951
+ export interface ConnectionsSetQueryHistoryInput {
952
+ project: string;
953
+ enabled: boolean;
954
+ /** The consent revision from connections.queryHistory. */
955
+ expectedRevision: number;
956
+ /** @default [] */
957
+ serviceAccounts?: Array<string>;
958
+ }
959
+ /** Output of `connections.setQueryHistory`. */
960
+ export interface ConnectionsSetQueryHistoryOutput {
961
+ consent: Record<string, unknown>;
962
+ }
963
+ /** Input for `logs.query`. */
964
+ export interface LogsQueryInput {
965
+ project: string;
966
+ range?: "1h" | "24h" | "7d";
967
+ status?: "success" | "error";
968
+ transport?: "rest" | "mcp";
969
+ source?: "api" | "mcp" | "app";
970
+ /** Only Published traffic. */
971
+ target?: "published";
972
+ /**
973
+ * Only this draft's staging traffic.
974
+ * @format uuid
975
+ */
976
+ draft?: string;
977
+ /** An outcome category, e.g. client_error. */
978
+ outcome?: string;
979
+ dataset?: string;
980
+ tenant?: string;
981
+ /** Search request paths and failure codes. */
982
+ q?: string;
983
+ /** From a previous nextCursor. */
984
+ cursor?: string;
985
+ /** @default 50 */
986
+ limit?: number;
987
+ }
988
+ /** Output of `logs.query`. */
989
+ export interface LogsQueryOutput {
990
+ entries: Array<Record<string, unknown>>;
991
+ summary: Record<string, unknown>;
992
+ nextCursor: string | null;
993
+ retentionDays: number;
994
+ }
995
+ /** Input for `usage.get`. */
996
+ export type UsageGetInput = Record<string, never>;
997
+ /** Output of `usage.get`. */
998
+ export interface UsageGetOutput {
999
+ queries: Record<string, unknown>;
1000
+ tenants: Record<string, unknown>;
1001
+ embedChat: Record<string, unknown>;
1002
+ }
1003
+ /** Input for `audit.list`. */
1004
+ export interface AuditListInput {
1005
+ /** From a previous nextCursor. */
1006
+ cursor?: string;
1007
+ /** @default 50 */
1008
+ limit?: number;
1009
+ }
1010
+ /** Output of `audit.list`. */
1011
+ export interface AuditListOutput {
1012
+ events: Array<Record<string, unknown>>;
1013
+ nextCursor: string | null;
1014
+ }
1015
+ /** Input for `tenants.list`. */
1016
+ export interface TenantsListInput {
1017
+ project: string;
1018
+ }
1019
+ /** Output of `tenants.list`. */
1020
+ export interface TenantsListOutput {
1021
+ tenants: Array<Record<string, unknown>>;
1022
+ }
1023
+ /** Input for `tenants.create`. */
1024
+ export interface TenantsCreateInput {
1025
+ project: string;
1026
+ /** Your app's id for the customer. */
1027
+ tenantKey: string;
1028
+ displayName: string;
1029
+ enabled?: boolean;
1030
+ }
1031
+ /** Output of `tenants.create`. */
1032
+ export interface TenantsCreateOutput {
1033
+ tenant: Record<string, unknown>;
1034
+ }
1035
+ /** Input for `tenants.update`. */
1036
+ export interface TenantsUpdateInput {
1037
+ project: string;
1038
+ /**
1039
+ * The tenant's id from tenants.list.
1040
+ * @format uuid
1041
+ */
1042
+ tenant: string;
1043
+ displayName?: string;
1044
+ enabled?: boolean;
1045
+ /** Required with enabled: false, after the user agrees: their sign-ins end for good. */
1046
+ confirm?: boolean;
1047
+ }
1048
+ /** Output of `tenants.update`. */
1049
+ export interface TenantsUpdateOutput {
1050
+ tenant: Record<string, unknown>;
1051
+ }
1052
+ /** Input for `tenants.remove`. */
1053
+ export interface TenantsRemoveInput {
1054
+ project: string;
1055
+ /** @format uuid */
1056
+ tenant: string;
1057
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
1058
+ confirm: true;
1059
+ }
1060
+ /** Output of `tenants.remove`. */
1061
+ export interface TenantsRemoveOutput {
1062
+ removed: true;
1063
+ }
1064
+ /** Input for `permissionSets.list`. */
1065
+ export interface PermissionSetsListInput {
1066
+ project: string;
1067
+ }
1068
+ /** Output of `permissionSets.list`. */
1069
+ export interface PermissionSetsListOutput {
1070
+ permissionSets: Array<Record<string, unknown>>;
1071
+ }
1072
+ /** Input for `permissionSets.create`. */
1073
+ export interface PermissionSetsCreateInput {
1074
+ project: string;
1075
+ name: string;
1076
+ label: string;
1077
+ /** "*" for every published dataset, or { dataset: { dimensions, measures } }. */
1078
+ datasets: "*" | Record<string, unknown>;
1079
+ starterPrompts?: Array<string>;
1080
+ allowExport?: boolean;
1081
+ showQuery?: boolean;
1082
+ modelTier?: "standard" | "premium";
1083
+ limits?: {
1084
+ messagesPerUserPerDay: number;
1085
+ messagesPerTenantPerDay: number;
1086
+ };
1087
+ }
1088
+ /** Output of `permissionSets.create`. */
1089
+ export interface PermissionSetsCreateOutput {
1090
+ permissionSet: Record<string, unknown>;
1091
+ }
1092
+ /** Input for `permissionSets.update`. */
1093
+ export interface PermissionSetsUpdateInput {
1094
+ project: string;
1095
+ /** @format uuid */
1096
+ permissionSet: string;
1097
+ expectedRevision: number;
1098
+ label?: string;
1099
+ /** "*" for every published dataset, or { dataset: { dimensions, measures } }. */
1100
+ datasets?: "*" | Record<string, unknown>;
1101
+ starterPrompts?: Array<string>;
1102
+ allowExport?: boolean;
1103
+ showQuery?: boolean;
1104
+ modelTier?: "standard" | "premium";
1105
+ limits?: {
1106
+ messagesPerUserPerDay: number;
1107
+ messagesPerTenantPerDay: number;
1108
+ };
1109
+ }
1110
+ /** Output of `permissionSets.update`. */
1111
+ export interface PermissionSetsUpdateOutput {
1112
+ permissionSet: Record<string, unknown>;
1113
+ }
1114
+ /** Input for `permissionSets.remove`. */
1115
+ export interface PermissionSetsRemoveInput {
1116
+ project: string;
1117
+ /** @format uuid */
1118
+ permissionSet: string;
1119
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
1120
+ confirm: true;
1121
+ }
1122
+ /** Output of `permissionSets.remove`. */
1123
+ export interface PermissionSetsRemoveOutput {
1124
+ removed: true;
1125
+ }
1126
+ /** Input for `customerLimits.get`. */
1127
+ export interface CustomerLimitsGetInput {
1128
+ project: string;
1129
+ }
1130
+ /** Output of `customerLimits.get`. */
1131
+ export interface CustomerLimitsGetOutput {
1132
+ limits: Record<string, unknown>;
1133
+ defaults: Record<string, unknown>;
1134
+ }
1135
+ /** Input for `customerLimits.set`. */
1136
+ export interface CustomerLimitsSetInput {
1137
+ project: string;
1138
+ requestsPerMinute: number | null;
1139
+ dailyExecutions: number | null;
1140
+ chatTokensPerMonth: number | null;
1141
+ }
1142
+ /** Output of `customerLimits.set`. */
1143
+ export interface CustomerLimitsSetOutput {
1144
+ limits: Record<string, unknown>;
1145
+ defaults: Record<string, unknown>;
1146
+ }
1147
+ /** Input for `tenantGrants.list`. */
1148
+ export interface TenantGrantsListInput {
1149
+ project: string;
1150
+ }
1151
+ /** Output of `tenantGrants.list`. */
1152
+ export interface TenantGrantsListOutput {
1153
+ grants: Array<Record<string, unknown>>;
1154
+ }
1155
+ /** Input for `tenantGrants.revokeTenant`. */
1156
+ export interface TenantGrantsRevokeTenantInput {
1157
+ project: string;
1158
+ tenantKey: string;
1159
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
1160
+ confirm: true;
1161
+ }
1162
+ /** Output of `tenantGrants.revokeTenant`. */
1163
+ export interface TenantGrantsRevokeTenantOutput {
1164
+ revoked: number;
1165
+ }
1166
+ /** Input for `tenantGrants.revoke`. */
1167
+ export interface TenantGrantsRevokeInput {
1168
+ project: string;
1169
+ /** @format uuid */
1170
+ grant: string;
1171
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
1172
+ confirm: true;
1173
+ }
1174
+ /** Output of `tenantGrants.revoke`. */
1175
+ export interface TenantGrantsRevokeOutput {
1176
+ revoked: true;
1177
+ }
1178
+ /** Input for `customerAccess.get`. */
1179
+ export interface CustomerAccessGetInput {
1180
+ project: string;
1181
+ }
1182
+ /** Output of `customerAccess.get`. */
1183
+ export interface CustomerAccessGetOutput {
1184
+ access: Record<string, unknown>;
1185
+ release: string | null;
1186
+ customerOrigin: string;
1187
+ dataset: Record<string, unknown> | null;
1188
+ }
1189
+ /** Input for `customerAccess.setMode`. */
1190
+ export interface CustomerAccessSetModeInput {
1191
+ project: string;
1192
+ mode: "jwt" | "minted" | "backend" | "internal";
1193
+ }
1194
+ /** Output of `customerAccess.setMode`. */
1195
+ export interface CustomerAccessSetModeOutput {
1196
+ access: Record<string, unknown>;
1197
+ }
1198
+ /** Input for `customerAccess.createKey`. */
1199
+ export interface CustomerAccessCreateKeyInput {
1200
+ project: string;
1201
+ mode: "minted" | "backend";
1202
+ /** @default [] */
1203
+ roles?: Array<string>;
1204
+ /** @default [] */
1205
+ scopes?: Array<string>;
1206
+ }
1207
+ /** Output of `customerAccess.createKey`. */
1208
+ export interface CustomerAccessCreateKeyOutput {
1209
+ access: Record<string, unknown>;
1210
+ token: string;
1211
+ }
1212
+ /** Input for `customerAccess.prove`. */
1213
+ export interface CustomerAccessProveInput {
1214
+ project: string;
1215
+ /** @default null */
1216
+ tenantId?: string | null;
1217
+ /** @default null */
1218
+ origin?: string | null;
1219
+ /** @default null */
1220
+ permissionSetId?: string | null;
1221
+ /**
1222
+ * A JWT from your app; checked and never echoed back.
1223
+ * @default null
1224
+ */
1225
+ sampleToken?: string | null;
1226
+ }
1227
+ /** Output of `customerAccess.prove`. */
1228
+ export interface CustomerAccessProveOutput {
1229
+ result: Record<string, unknown>;
1230
+ }
1231
+ /** Input for `customerSettings.get`. */
1232
+ export interface CustomerSettingsGetInput {
1233
+ project: string;
1234
+ }
1235
+ /** Output of `customerSettings.get`. */
1236
+ export interface CustomerSettingsGetOutput {
1237
+ settings: Record<string, unknown>;
1238
+ }
1239
+ /** Input for `customerSettings.set`. */
1240
+ export interface CustomerSettingsSetInput {
1241
+ project: string;
1242
+ allowedOrigins: Array<string>;
1243
+ /** From customerSettings.get; 0 before any save. */
1244
+ expectedRevision: number;
1245
+ tenantRegistration?: "automatic" | "listed";
1246
+ }
1247
+ /** Output of `customerSettings.set`. */
1248
+ export interface CustomerSettingsSetOutput {
1249
+ settings: Record<string, unknown>;
1250
+ }
1251
+ /** Input for `jwtIssuer.get`. */
1252
+ export interface JwtIssuerGetInput {
1253
+ project: string;
1254
+ }
1255
+ /** Output of `jwtIssuer.get`. */
1256
+ export interface JwtIssuerGetOutput {
1257
+ issuer: Record<string, unknown> | null;
1258
+ health: Record<string, unknown> | null;
1259
+ access: Record<string, unknown> | null;
1260
+ }
1261
+ /** Input for `jwtIssuer.save`. */
1262
+ export interface JwtIssuerSaveInput {
1263
+ /** @default null */
1264
+ credentialId?: string | null;
1265
+ /** @default [] */
1266
+ roles?: Array<string>;
1267
+ /** @default [] */
1268
+ scopes?: Array<string>;
1269
+ issuer: string;
1270
+ audience: string;
1271
+ /** @format uri */
1272
+ jwksUri: string;
1273
+ /** @default ["RS256","ES256"] */
1274
+ algorithms?: Array<"RS256" | "RS384" | "RS512" | "PS256" | "PS384" | "PS512" | "ES256" | "ES384" | "EdDSA">;
1275
+ /** @default "sub" */
1276
+ subjectClaim?: string;
1277
+ tenantClaim: string;
1278
+ /** @default null */
1279
+ permissionSetClaim?: string | null;
1280
+ /** @default null */
1281
+ defaultPermissionSetId?: string | null;
1282
+ /** @default null */
1283
+ constraintsClaim?: string | null;
1284
+ /** @default 3600 */
1285
+ maxTokenLifetimeSeconds?: number;
1286
+ expectedRevision?: number;
1287
+ project: string;
1288
+ }
1289
+ /** Output of `jwtIssuer.save`. */
1290
+ export interface JwtIssuerSaveOutput {
1291
+ issuer: Record<string, unknown>;
1292
+ }
1293
+ /** Input for `jwtIssuer.remove`. */
1294
+ export interface JwtIssuerRemoveInput {
1295
+ project: string;
1296
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
1297
+ confirm: true;
1298
+ }
1299
+ /** Output of `jwtIssuer.remove`. */
1300
+ export interface JwtIssuerRemoveOutput {
1301
+ removed: true;
1302
+ }
1303
+ /** Input for `oidcClient.get`. */
1304
+ export interface OidcClientGetInput {
1305
+ project: string;
1306
+ }
1307
+ /** Output of `oidcClient.get`. */
1308
+ export interface OidcClientGetOutput {
1309
+ client: Record<string, unknown> | null;
1310
+ redirectUri?: string;
1311
+ mcpUrl?: string;
1312
+ }
1313
+ /** Input for `oidcClient.save`. */
1314
+ export interface OidcClientSaveInput {
1315
+ issuer: string;
1316
+ clientId: string;
1317
+ clientSecret?: string;
1318
+ scopes?: Array<string>;
1319
+ expectedRevision?: number;
1320
+ project: string;
1321
+ /** Required to change the issuer, after the user agrees: customers' sign-ins end. */
1322
+ confirm?: boolean;
1323
+ }
1324
+ /** Output of `oidcClient.save`. */
1325
+ export interface OidcClientSaveOutput {
1326
+ client: Record<string, unknown>;
1327
+ redirectUri?: string;
1328
+ mcpUrl?: string;
1329
+ }
1330
+ /** Input for `oidcClient.remove`. */
1331
+ export interface OidcClientRemoveInput {
1332
+ project: string;
1333
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
1334
+ confirm: true;
1335
+ }
1336
+ /** Output of `oidcClient.remove`. */
1337
+ export interface OidcClientRemoveOutput {
1338
+ removed: true;
1339
+ }
1340
+ /** Input for `members.list`. */
1341
+ export type MembersListInput = Record<string, never>;
1342
+ /** Output of `members.list`. */
1343
+ export interface MembersListOutput {
1344
+ members: Array<Record<string, unknown>>;
1345
+ invitations: Array<Record<string, unknown>>;
1346
+ }
1347
+ /** Input for `members.invite`. */
1348
+ export interface MembersInviteInput {
1349
+ /** @format email */
1350
+ email: string;
1351
+ role: "member" | "admin";
1352
+ }
1353
+ /** Output of `members.invite`. */
1354
+ export interface MembersInviteOutput {
1355
+ invitation: Record<string, unknown>;
1356
+ }
1357
+ /** Input for `members.cancelInvitation`. */
1358
+ export interface MembersCancelInvitationInput {
1359
+ invitation: string;
1360
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
1361
+ confirm: true;
1362
+ }
1363
+ /** Output of `members.cancelInvitation`. */
1364
+ export interface MembersCancelInvitationOutput {
1365
+ canceled: true;
1366
+ }
1367
+ /** Input for `org.accessPolicy`. */
1368
+ export type OrgAccessPolicyInput = Record<string, never>;
1369
+ /** Output of `org.accessPolicy`. */
1370
+ export interface OrgAccessPolicyOutput {
1371
+ policy: {
1372
+ inviteMode: "any-email" | "approved-domains";
1373
+ approvedDomains: Array<string>;
1374
+ };
1375
+ }
1376
+ /** Input for `org.setAccessPolicy`. */
1377
+ export interface OrgSetAccessPolicyInput {
1378
+ inviteMode: "any-email" | "approved-domains";
1379
+ approvedDomains: Array<string>;
1380
+ }
1381
+ /** Output of `org.setAccessPolicy`. */
1382
+ export interface OrgSetAccessPolicyOutput {
1383
+ policy: {
1384
+ inviteMode: "any-email" | "approved-domains";
1385
+ approvedDomains: Array<string>;
1386
+ };
1387
+ }
1388
+ /** Input for `deployKeys.list`. */
1389
+ export interface DeployKeysListInput {
1390
+ project: string;
1391
+ }
1392
+ /** Output of `deployKeys.list`. */
1393
+ export interface DeployKeysListOutput {
1394
+ keys: Array<Record<string, unknown>>;
1395
+ }
1396
+ /** Input for `deployKeys.create`. */
1397
+ export interface DeployKeysCreateInput {
1398
+ project: string;
1399
+ label: string;
1400
+ }
1401
+ /** Output of `deployKeys.create`. */
1402
+ export interface DeployKeysCreateOutput {
1403
+ key: Record<string, unknown>;
1404
+ }
1405
+ /** Input for `deployKeys.revoke`. */
1406
+ export interface DeployKeysRevokeInput {
1407
+ project: string;
1408
+ /** @format uuid */
1409
+ key: string;
1410
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
1411
+ confirm: true;
1412
+ }
1413
+ /** Output of `deployKeys.revoke`. */
1414
+ export interface DeployKeysRevokeOutput {
1415
+ revoked: true;
1416
+ }
1417
+ /** Input for `apiKeys.list`. */
1418
+ export interface ApiKeysListInput {
1419
+ project: string;
1420
+ }
1421
+ /** Output of `apiKeys.list`. */
1422
+ export interface ApiKeysListOutput {
1423
+ keys: Array<Record<string, unknown>>;
1424
+ mcpConnections: Array<Record<string, unknown>>;
1425
+ }
1426
+ /** Input for `apiKeys.create`. */
1427
+ export interface ApiKeysCreateInput {
1428
+ project: string;
1429
+ label: string;
1430
+ /** @default [] */
1431
+ roles?: Array<string>;
1432
+ /** @default [] */
1433
+ scopes?: Array<string>;
1434
+ /** trusted-server: your backend names the customer per request; bound: only these customers. */
1435
+ tenantAuthority: {
1436
+ kind: "trusted-server";
1437
+ } | {
1438
+ kind: "bound";
1439
+ tenants: Array<string>;
1440
+ };
1441
+ expiresInDays?: number;
1442
+ }
1443
+ /** Output of `apiKeys.create`. */
1444
+ export interface ApiKeysCreateOutput {
1445
+ key: Record<string, unknown>;
1446
+ }
1447
+ /** Input for `apiKeys.revoke`. */
1448
+ export interface ApiKeysRevokeInput {
1449
+ project: string;
1450
+ /** @format uuid */
1451
+ key: string;
1452
+ /** This operation is destructive: set `confirm: true` once the user has agreed to it. The server refuses it otherwise (CONFIRMATION_REQUIRED). */
1453
+ confirm: true;
1454
+ }
1455
+ /** Output of `apiKeys.revoke`. */
1456
+ export interface ApiKeysRevokeOutput {
1457
+ revoked: true;
1458
+ }
1459
+ /** Input and output types for every operation, by name. */
1460
+ export interface CloudOperationTypes {
1461
+ "projects.list": {
1462
+ input: ProjectsListInput;
1463
+ output: ProjectsListOutput;
1464
+ inputRequired: false;
1465
+ };
1466
+ "projects.get": {
1467
+ input: ProjectsGetInput;
1468
+ output: ProjectsGetOutput;
1469
+ inputRequired: true;
1470
+ };
1471
+ "projects.connectInfo": {
1472
+ input: ProjectsConnectInfoInput;
1473
+ output: ProjectsConnectInfoOutput;
1474
+ inputRequired: true;
1475
+ };
1476
+ "projects.create": {
1477
+ input: ProjectsCreateInput;
1478
+ output: ProjectsCreateOutput;
1479
+ inputRequired: true;
1480
+ };
1481
+ "projects.rename": {
1482
+ input: ProjectsRenameInput;
1483
+ output: ProjectsRenameOutput;
1484
+ inputRequired: true;
1485
+ };
1486
+ "releases.status": {
1487
+ input: ReleasesStatusInput;
1488
+ output: ReleasesStatusOutput;
1489
+ inputRequired: true;
1490
+ };
1491
+ "releases.list": {
1492
+ input: ReleasesListInput;
1493
+ output: ReleasesListOutput;
1494
+ inputRequired: true;
1495
+ };
1496
+ "releases.get": {
1497
+ input: ReleasesGetInput;
1498
+ output: ReleasesGetOutput;
1499
+ inputRequired: true;
1500
+ };
1501
+ "releases.rollback": {
1502
+ input: ReleasesRollbackInput;
1503
+ output: ReleasesRollbackOutput;
1504
+ inputRequired: true;
1505
+ };
1506
+ "drafts.list": {
1507
+ input: DraftsListInput;
1508
+ output: DraftsListOutput;
1509
+ inputRequired: true;
1510
+ };
1511
+ "drafts.open": {
1512
+ input: DraftsOpenInput;
1513
+ output: DraftsOpenOutput;
1514
+ inputRequired: true;
1515
+ };
1516
+ "drafts.save": {
1517
+ input: DraftsSaveInput;
1518
+ output: DraftsSaveOutput;
1519
+ inputRequired: true;
1520
+ };
1521
+ "drafts.review": {
1522
+ input: DraftsReviewInput;
1523
+ output: DraftsReviewOutput;
1524
+ inputRequired: true;
1525
+ };
1526
+ "drafts.checks": {
1527
+ input: DraftsChecksInput;
1528
+ output: DraftsChecksOutput;
1529
+ inputRequired: true;
1530
+ };
1531
+ "drafts.promote": {
1532
+ input: DraftsPromoteInput;
1533
+ output: DraftsPromoteOutput;
1534
+ inputRequired: true;
1535
+ };
1536
+ "drafts.get": {
1537
+ input: DraftsGetInput;
1538
+ output: DraftsGetOutput;
1539
+ inputRequired: true;
1540
+ };
1541
+ "drafts.rename": {
1542
+ input: DraftsRenameInput;
1543
+ output: DraftsRenameOutput;
1544
+ inputRequired: true;
1545
+ };
1546
+ "drafts.delete": {
1547
+ input: DraftsDeleteInput;
1548
+ output: DraftsDeleteOutput;
1549
+ inputRequired: true;
1550
+ };
1551
+ "drafts.archived": {
1552
+ input: DraftsArchivedInput;
1553
+ output: DraftsArchivedOutput;
1554
+ inputRequired: true;
1555
+ };
1556
+ "drafts.reopen": {
1557
+ input: DraftsReopenInput;
1558
+ output: DraftsReopenOutput;
1559
+ inputRequired: true;
1560
+ };
1561
+ "drafts.impact": {
1562
+ input: DraftsImpactInput;
1563
+ output: DraftsImpactOutput;
1564
+ inputRequired: true;
1565
+ };
1566
+ "drafts.update": {
1567
+ input: DraftsUpdateInput;
1568
+ output: DraftsUpdateOutput;
1569
+ inputRequired: true;
1570
+ };
1571
+ "drafts.applyUpdate": {
1572
+ input: DraftsApplyUpdateInput;
1573
+ output: DraftsApplyUpdateOutput;
1574
+ inputRequired: true;
1575
+ };
1576
+ "drafts.refreshBase": {
1577
+ input: DraftsRefreshBaseInput;
1578
+ output: DraftsRefreshBaseOutput;
1579
+ inputRequired: true;
1580
+ };
1581
+ "drafts.setup": {
1582
+ input: DraftsSetupInput;
1583
+ output: DraftsSetupOutput;
1584
+ inputRequired: true;
1585
+ };
1586
+ "drafts.findings": {
1587
+ input: DraftsFindingsInput;
1588
+ output: DraftsFindingsOutput;
1589
+ inputRequired: true;
1590
+ };
1591
+ "drafts.answer": {
1592
+ input: DraftsAnswerInput;
1593
+ output: DraftsAnswerOutput;
1594
+ inputRequired: true;
1595
+ };
1596
+ "drafts.runStatus": {
1597
+ input: DraftsRunStatusInput;
1598
+ output: DraftsRunStatusOutput;
1599
+ inputRequired: true;
1600
+ };
1601
+ "drafts.run": {
1602
+ input: DraftsRunInput;
1603
+ output: DraftsRunOutput;
1604
+ inputRequired: true;
1605
+ };
1606
+ "customerScope.list": {
1607
+ input: CustomerScopeListInput;
1608
+ output: CustomerScopeListOutput;
1609
+ inputRequired: true;
1610
+ };
1611
+ "customerScope.confirmShared": {
1612
+ input: CustomerScopeConfirmSharedInput;
1613
+ output: CustomerScopeConfirmSharedOutput;
1614
+ inputRequired: true;
1615
+ };
1616
+ "samplePolicy.get": {
1617
+ input: SamplePolicyGetInput;
1618
+ output: SamplePolicyGetOutput;
1619
+ inputRequired: true;
1620
+ };
1621
+ "samplePolicy.set": {
1622
+ input: SamplePolicySetInput;
1623
+ output: SamplePolicySetOutput;
1624
+ inputRequired: true;
1625
+ };
1626
+ "connections.get": {
1627
+ input: ConnectionsGetInput;
1628
+ output: ConnectionsGetOutput;
1629
+ inputRequired: true;
1630
+ };
1631
+ "connections.save": {
1632
+ input: ConnectionsSaveInput;
1633
+ output: ConnectionsSaveOutput;
1634
+ inputRequired: true;
1635
+ };
1636
+ "connections.link": {
1637
+ input: ConnectionsLinkInput;
1638
+ output: ConnectionsLinkOutput;
1639
+ inputRequired: true;
1640
+ };
1641
+ "connections.test": {
1642
+ input: ConnectionsTestInput;
1643
+ output: ConnectionsTestOutput;
1644
+ inputRequired: true;
1645
+ };
1646
+ "connections.queryHistory": {
1647
+ input: ConnectionsQueryHistoryInput;
1648
+ output: ConnectionsQueryHistoryOutput;
1649
+ inputRequired: true;
1650
+ };
1651
+ "connections.setQueryHistory": {
1652
+ input: ConnectionsSetQueryHistoryInput;
1653
+ output: ConnectionsSetQueryHistoryOutput;
1654
+ inputRequired: true;
1655
+ };
1656
+ "logs.query": {
1657
+ input: LogsQueryInput;
1658
+ output: LogsQueryOutput;
1659
+ inputRequired: true;
1660
+ };
1661
+ "usage.get": {
1662
+ input: UsageGetInput;
1663
+ output: UsageGetOutput;
1664
+ inputRequired: false;
1665
+ };
1666
+ "audit.list": {
1667
+ input: AuditListInput;
1668
+ output: AuditListOutput;
1669
+ inputRequired: false;
1670
+ };
1671
+ "tenants.list": {
1672
+ input: TenantsListInput;
1673
+ output: TenantsListOutput;
1674
+ inputRequired: true;
1675
+ };
1676
+ "tenants.create": {
1677
+ input: TenantsCreateInput;
1678
+ output: TenantsCreateOutput;
1679
+ inputRequired: true;
1680
+ };
1681
+ "tenants.update": {
1682
+ input: TenantsUpdateInput;
1683
+ output: TenantsUpdateOutput;
1684
+ inputRequired: true;
1685
+ };
1686
+ "tenants.remove": {
1687
+ input: TenantsRemoveInput;
1688
+ output: TenantsRemoveOutput;
1689
+ inputRequired: true;
1690
+ };
1691
+ "permissionSets.list": {
1692
+ input: PermissionSetsListInput;
1693
+ output: PermissionSetsListOutput;
1694
+ inputRequired: true;
1695
+ };
1696
+ "permissionSets.create": {
1697
+ input: PermissionSetsCreateInput;
1698
+ output: PermissionSetsCreateOutput;
1699
+ inputRequired: true;
1700
+ };
1701
+ "permissionSets.update": {
1702
+ input: PermissionSetsUpdateInput;
1703
+ output: PermissionSetsUpdateOutput;
1704
+ inputRequired: true;
1705
+ };
1706
+ "permissionSets.remove": {
1707
+ input: PermissionSetsRemoveInput;
1708
+ output: PermissionSetsRemoveOutput;
1709
+ inputRequired: true;
1710
+ };
1711
+ "customerLimits.get": {
1712
+ input: CustomerLimitsGetInput;
1713
+ output: CustomerLimitsGetOutput;
1714
+ inputRequired: true;
1715
+ };
1716
+ "customerLimits.set": {
1717
+ input: CustomerLimitsSetInput;
1718
+ output: CustomerLimitsSetOutput;
1719
+ inputRequired: true;
1720
+ };
1721
+ "tenantGrants.list": {
1722
+ input: TenantGrantsListInput;
1723
+ output: TenantGrantsListOutput;
1724
+ inputRequired: true;
1725
+ };
1726
+ "tenantGrants.revokeTenant": {
1727
+ input: TenantGrantsRevokeTenantInput;
1728
+ output: TenantGrantsRevokeTenantOutput;
1729
+ inputRequired: true;
1730
+ };
1731
+ "tenantGrants.revoke": {
1732
+ input: TenantGrantsRevokeInput;
1733
+ output: TenantGrantsRevokeOutput;
1734
+ inputRequired: true;
1735
+ };
1736
+ "customerAccess.get": {
1737
+ input: CustomerAccessGetInput;
1738
+ output: CustomerAccessGetOutput;
1739
+ inputRequired: true;
1740
+ };
1741
+ "customerAccess.setMode": {
1742
+ input: CustomerAccessSetModeInput;
1743
+ output: CustomerAccessSetModeOutput;
1744
+ inputRequired: true;
1745
+ };
1746
+ "customerAccess.createKey": {
1747
+ input: CustomerAccessCreateKeyInput;
1748
+ output: CustomerAccessCreateKeyOutput;
1749
+ inputRequired: true;
1750
+ };
1751
+ "customerAccess.prove": {
1752
+ input: CustomerAccessProveInput;
1753
+ output: CustomerAccessProveOutput;
1754
+ inputRequired: true;
1755
+ };
1756
+ "customerSettings.get": {
1757
+ input: CustomerSettingsGetInput;
1758
+ output: CustomerSettingsGetOutput;
1759
+ inputRequired: true;
1760
+ };
1761
+ "customerSettings.set": {
1762
+ input: CustomerSettingsSetInput;
1763
+ output: CustomerSettingsSetOutput;
1764
+ inputRequired: true;
1765
+ };
1766
+ "jwtIssuer.get": {
1767
+ input: JwtIssuerGetInput;
1768
+ output: JwtIssuerGetOutput;
1769
+ inputRequired: true;
1770
+ };
1771
+ "jwtIssuer.save": {
1772
+ input: JwtIssuerSaveInput;
1773
+ output: JwtIssuerSaveOutput;
1774
+ inputRequired: true;
1775
+ };
1776
+ "jwtIssuer.remove": {
1777
+ input: JwtIssuerRemoveInput;
1778
+ output: JwtIssuerRemoveOutput;
1779
+ inputRequired: true;
1780
+ };
1781
+ "oidcClient.get": {
1782
+ input: OidcClientGetInput;
1783
+ output: OidcClientGetOutput;
1784
+ inputRequired: true;
1785
+ };
1786
+ "oidcClient.save": {
1787
+ input: OidcClientSaveInput;
1788
+ output: OidcClientSaveOutput;
1789
+ inputRequired: true;
1790
+ };
1791
+ "oidcClient.remove": {
1792
+ input: OidcClientRemoveInput;
1793
+ output: OidcClientRemoveOutput;
1794
+ inputRequired: true;
1795
+ };
1796
+ "members.list": {
1797
+ input: MembersListInput;
1798
+ output: MembersListOutput;
1799
+ inputRequired: false;
1800
+ };
1801
+ "members.invite": {
1802
+ input: MembersInviteInput;
1803
+ output: MembersInviteOutput;
1804
+ inputRequired: true;
1805
+ };
1806
+ "members.cancelInvitation": {
1807
+ input: MembersCancelInvitationInput;
1808
+ output: MembersCancelInvitationOutput;
1809
+ inputRequired: true;
1810
+ };
1811
+ "org.accessPolicy": {
1812
+ input: OrgAccessPolicyInput;
1813
+ output: OrgAccessPolicyOutput;
1814
+ inputRequired: false;
1815
+ };
1816
+ "org.setAccessPolicy": {
1817
+ input: OrgSetAccessPolicyInput;
1818
+ output: OrgSetAccessPolicyOutput;
1819
+ inputRequired: true;
1820
+ };
1821
+ "deployKeys.list": {
1822
+ input: DeployKeysListInput;
1823
+ output: DeployKeysListOutput;
1824
+ inputRequired: true;
1825
+ };
1826
+ "deployKeys.create": {
1827
+ input: DeployKeysCreateInput;
1828
+ output: DeployKeysCreateOutput;
1829
+ inputRequired: true;
1830
+ };
1831
+ "deployKeys.revoke": {
1832
+ input: DeployKeysRevokeInput;
1833
+ output: DeployKeysRevokeOutput;
1834
+ inputRequired: true;
1835
+ };
1836
+ "apiKeys.list": {
1837
+ input: ApiKeysListInput;
1838
+ output: ApiKeysListOutput;
1839
+ inputRequired: true;
1840
+ };
1841
+ "apiKeys.create": {
1842
+ input: ApiKeysCreateInput;
1843
+ output: ApiKeysCreateOutput;
1844
+ inputRequired: true;
1845
+ };
1846
+ "apiKeys.revoke": {
1847
+ input: ApiKeysRevokeInput;
1848
+ output: ApiKeysRevokeOutput;
1849
+ inputRequired: true;
1850
+ };
1851
+ }
1852
+ /** Route and policy for every operation, by name. */
1853
+ export declare const OPERATIONS: {
1854
+ readonly "projects.list": {
1855
+ readonly name: "projects.list";
1856
+ readonly summary: "List the projects in your organisation.";
1857
+ readonly scope: "organization";
1858
+ readonly capability: "workspace:view";
1859
+ readonly destructive: false;
1860
+ readonly method: "GET";
1861
+ readonly path: "/projects";
1862
+ readonly pathParams: readonly [];
1863
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "UNAUTHENTICATED"];
1864
+ };
1865
+ readonly "projects.get": {
1866
+ readonly name: "projects.get";
1867
+ readonly summary: "Show one project and whether a release is live.";
1868
+ readonly scope: "project";
1869
+ readonly capability: "workspace:view";
1870
+ readonly destructive: false;
1871
+ readonly method: "GET";
1872
+ readonly path: "/projects/{project}";
1873
+ readonly pathParams: readonly ["project"];
1874
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
1875
+ };
1876
+ readonly "projects.connectInfo": {
1877
+ readonly name: "projects.connectInfo";
1878
+ readonly summary: "Where the project is served: the MCP URL, the REST base and dataset URLs, and the client contract.";
1879
+ readonly scope: "project";
1880
+ readonly capability: "workspace:view";
1881
+ readonly destructive: false;
1882
+ readonly method: "GET";
1883
+ readonly path: "/projects/{project}/connect-info";
1884
+ readonly pathParams: readonly ["project"];
1885
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
1886
+ };
1887
+ readonly "projects.create": {
1888
+ readonly name: "projects.create";
1889
+ readonly summary: "Create a project: one ClickHouse connection, one live data model, its own URLs.";
1890
+ readonly scope: "organization";
1891
+ readonly capability: "environment:create";
1892
+ readonly destructive: false;
1893
+ readonly method: "POST";
1894
+ readonly path: "/projects";
1895
+ readonly pathParams: readonly [];
1896
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_EXISTS", "UNAUTHENTICATED"];
1897
+ };
1898
+ readonly "projects.rename": {
1899
+ readonly name: "projects.rename";
1900
+ readonly summary: "Change a project's display name; its slug and URLs stay the same.";
1901
+ readonly scope: "project";
1902
+ readonly capability: "environment:create";
1903
+ readonly destructive: false;
1904
+ readonly method: "PATCH";
1905
+ readonly path: "/projects/{project}";
1906
+ readonly pathParams: readonly ["project"];
1907
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
1908
+ };
1909
+ readonly "releases.status": {
1910
+ readonly name: "releases.status";
1911
+ readonly summary: "Show what is live: the current version and revision.";
1912
+ readonly scope: "project";
1913
+ readonly capability: "workspace:view";
1914
+ readonly destructive: false;
1915
+ readonly method: "GET";
1916
+ readonly path: "/projects/{project}/releases/live";
1917
+ readonly pathParams: readonly ["project"];
1918
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
1919
+ };
1920
+ readonly "releases.list": {
1921
+ readonly name: "releases.list";
1922
+ readonly summary: "List published versions, newest first.";
1923
+ readonly scope: "project";
1924
+ readonly capability: "workspace:view";
1925
+ readonly destructive: false;
1926
+ readonly method: "GET";
1927
+ readonly path: "/projects/{project}/releases";
1928
+ readonly pathParams: readonly ["project"];
1929
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
1930
+ };
1931
+ readonly "releases.get": {
1932
+ readonly name: "releases.get";
1933
+ readonly summary: "Show one published version and its data model.";
1934
+ readonly scope: "project";
1935
+ readonly capability: "workspace:view";
1936
+ readonly destructive: false;
1937
+ readonly method: "GET";
1938
+ readonly path: "/projects/{project}/releases/{version}";
1939
+ readonly pathParams: readonly ["project", "version"];
1940
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED", "VERSION_NOT_FOUND"];
1941
+ };
1942
+ readonly "releases.rollback": {
1943
+ readonly name: "releases.rollback";
1944
+ readonly summary: "Make an earlier published version live again. The project's owner follows it: rolling back to a version built in Cloud makes the model editable in Cloud again, and to one deployed from code makes it managed in code.";
1945
+ readonly scope: "project";
1946
+ readonly capability: "deployment:publish";
1947
+ readonly destructive: true;
1948
+ readonly method: "POST";
1949
+ readonly path: "/projects/{project}/releases/{version}/rollback";
1950
+ readonly pathParams: readonly ["project", "version"];
1951
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "RELEASE_CHANGE_REFUSED", "RELEASE_MOVED", "UNAUTHENTICATED", "VERSION_NOT_FOUND"];
1952
+ };
1953
+ readonly "drafts.list": {
1954
+ readonly name: "drafts.list";
1955
+ readonly summary: "List the project's drafts and whether each is ready to publish.";
1956
+ readonly scope: "project";
1957
+ readonly capability: "workspace:view";
1958
+ readonly destructive: false;
1959
+ readonly method: "GET";
1960
+ readonly path: "/projects/{project}/drafts";
1961
+ readonly pathParams: readonly ["project"];
1962
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
1963
+ };
1964
+ readonly "drafts.open": {
1965
+ readonly name: "drafts.open";
1966
+ readonly summary: "Open your working draft (created on first use, with the ClickHouse schema discovered) or a named draft, and see what it holds.";
1967
+ readonly scope: "project";
1968
+ readonly capability: "deployment:publish";
1969
+ readonly destructive: false;
1970
+ readonly method: "POST";
1971
+ readonly path: "/projects/{project}/drafts/open";
1972
+ readonly pathParams: readonly ["project"];
1973
+ readonly errors: readonly ["CONNECTION_NOT_SAVED", "DRAFT_NOT_FOUND", "DRAFT_READ_ONLY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
1974
+ };
1975
+ readonly "drafts.save": {
1976
+ readonly name: "drafts.save";
1977
+ readonly summary: "Save the draft as a staging release after its publish gates pass. Nothing goes live; publishing is drafts.promote.";
1978
+ readonly scope: "project";
1979
+ readonly capability: "deployment:publish";
1980
+ readonly destructive: false;
1981
+ readonly method: "POST";
1982
+ readonly path: "/projects/{project}/drafts/{draft}/save";
1983
+ readonly pathParams: readonly ["project", "draft"];
1984
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "DRAFT_NOT_READY", "DRAFT_READ_ONLY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
1985
+ };
1986
+ readonly "drafts.review": {
1987
+ readonly name: "drafts.review";
1988
+ readonly summary: "Review a saved draft before publishing: what changes against production, breaking changes, held measures and checks.";
1989
+ readonly scope: "project";
1990
+ readonly capability: "deployment:publish";
1991
+ readonly destructive: false;
1992
+ readonly method: "GET";
1993
+ readonly path: "/projects/{project}/drafts/{draft}/review";
1994
+ readonly pathParams: readonly ["project", "draft"];
1995
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "RELEASE_MOVED", "UNAUTHENTICATED"];
1996
+ };
1997
+ readonly "drafts.checks": {
1998
+ readonly name: "drafts.checks";
1999
+ readonly summary: "Run Cloud's number checks on a code draft's saved release.";
2000
+ readonly scope: "project";
2001
+ readonly capability: "deployment:publish";
2002
+ readonly destructive: false;
2003
+ readonly method: "POST";
2004
+ readonly path: "/projects/{project}/drafts/{draft}/checks";
2005
+ readonly pathParams: readonly ["project", "draft"];
2006
+ readonly errors: readonly ["DRAFT_NOT_CHECKABLE", "DRAFT_NOT_FOUND", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2007
+ };
2008
+ readonly "drafts.promote": {
2009
+ readonly name: "drafts.promote";
2010
+ readonly summary: "Publish a draft's saved release to production.";
2011
+ readonly scope: "project";
2012
+ readonly capability: "deployment:publish";
2013
+ readonly destructive: true;
2014
+ readonly method: "POST";
2015
+ readonly path: "/projects/{project}/drafts/{draft}/promote";
2016
+ readonly pathParams: readonly ["project", "draft"];
2017
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "DRAFT_NOT_FOUND", "DRAFT_NOT_READY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "OWNERSHIP_CHANGE_REQUIRED", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "RELEASE_CHANGE_REFUSED", "RELEASE_MOVED", "UNAUTHENTICATED"];
2018
+ };
2019
+ readonly "drafts.get": {
2020
+ readonly name: "drafts.get";
2021
+ readonly summary: "Read a draft: its model, revision, whether Production moved since it was based, its saved release and its publish gates.";
2022
+ readonly scope: "project";
2023
+ readonly capability: "deployment:publish";
2024
+ readonly destructive: false;
2025
+ readonly method: "GET";
2026
+ readonly path: "/projects/{project}/drafts/{draft}";
2027
+ readonly pathParams: readonly ["project", "draft"];
2028
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "DRAFT_READ_ONLY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2029
+ };
2030
+ readonly "drafts.rename": {
2031
+ readonly name: "drafts.rename";
2032
+ readonly summary: "Rename a draft. Its id and staging URL stay the same.";
2033
+ readonly scope: "project";
2034
+ readonly capability: "deployment:publish";
2035
+ readonly destructive: false;
2036
+ readonly method: "PATCH";
2037
+ readonly path: "/projects/{project}/drafts/{draft}";
2038
+ readonly pathParams: readonly ["project", "draft"];
2039
+ readonly errors: readonly ["DRAFT_NAME_TAKEN", "DRAFT_NOT_FOUND", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2040
+ };
2041
+ readonly "drafts.delete": {
2042
+ readonly name: "drafts.delete";
2043
+ readonly summary: "Delete a draft and its staging URL for good. Only its creator can, unless you manage the organisation.";
2044
+ readonly scope: "project";
2045
+ readonly capability: "deployment:publish";
2046
+ readonly destructive: true;
2047
+ readonly method: "DELETE";
2048
+ readonly path: "/projects/{project}/drafts/{draft}";
2049
+ readonly pathParams: readonly ["project", "draft"];
2050
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "DRAFT_NOT_FOUND", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2051
+ };
2052
+ readonly "drafts.archived": {
2053
+ readonly name: "drafts.archived";
2054
+ readonly summary: "Read an archived draft: the release it published and whether it can be reopened against current Production.";
2055
+ readonly scope: "project";
2056
+ readonly capability: "deployment:publish";
2057
+ readonly destructive: false;
2058
+ readonly method: "GET";
2059
+ readonly path: "/projects/{project}/drafts/{draft}/archive";
2060
+ readonly pathParams: readonly ["project", "draft"];
2061
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2062
+ };
2063
+ readonly "drafts.reopen": {
2064
+ readonly name: "drafts.reopen";
2065
+ readonly summary: "Reopen an archived draft as a working draft, from the release you read.";
2066
+ readonly scope: "project";
2067
+ readonly capability: "deployment:publish";
2068
+ readonly destructive: false;
2069
+ readonly method: "POST";
2070
+ readonly path: "/projects/{project}/drafts/{draft}/reopen";
2071
+ readonly pathParams: readonly ["project", "draft"];
2072
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "DRAFT_READ_ONLY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2073
+ };
2074
+ readonly "drafts.impact": {
2075
+ readonly name: "drafts.impact";
2076
+ readonly summary: "Who a saved draft affects: which apps and customers called the datasets, measures and fields it changes or removes, recently.";
2077
+ readonly scope: "project";
2078
+ readonly capability: "deployment:publish";
2079
+ readonly destructive: false;
2080
+ readonly method: "GET";
2081
+ readonly path: "/projects/{project}/drafts/{draft}/impact";
2082
+ readonly pathParams: readonly ["project", "draft"];
2083
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "RELEASE_MOVED", "UNAUTHENTICATED"];
2084
+ };
2085
+ readonly "drafts.update": {
2086
+ readonly name: "drafts.update";
2087
+ readonly summary: "When Production moved since a draft was based, show the merge onto current Production: what merges cleanly and each conflict to choose.";
2088
+ readonly scope: "project";
2089
+ readonly capability: "deployment:publish";
2090
+ readonly destructive: false;
2091
+ readonly method: "GET";
2092
+ readonly path: "/projects/{project}/drafts/{draft}/update";
2093
+ readonly pathParams: readonly ["project", "draft"];
2094
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "DRAFT_NOT_READY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED", "UPDATE_CONFLICTS"];
2095
+ };
2096
+ readonly "drafts.applyUpdate": {
2097
+ readonly name: "drafts.applyUpdate";
2098
+ readonly summary: "Merge a draft onto current Production with the user's choice for each conflict (keep the draft's or Production's). Preview first; apply once every conflict is chosen.";
2099
+ readonly scope: "project";
2100
+ readonly capability: "deployment:publish";
2101
+ readonly destructive: false;
2102
+ readonly method: "POST";
2103
+ readonly path: "/projects/{project}/drafts/{draft}/update";
2104
+ readonly pathParams: readonly ["project", "draft"];
2105
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "DRAFT_NOT_READY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED", "UPDATE_CONFLICTS"];
2106
+ };
2107
+ readonly "drafts.refreshBase": {
2108
+ readonly name: "drafts.refreshBase";
2109
+ readonly summary: "For a code draft whose base Production moved: acknowledge that publishing it will replace current Production as it is, dropping the changes made there since. Nothing is merged.";
2110
+ readonly scope: "project";
2111
+ readonly capability: "deployment:publish";
2112
+ readonly destructive: true;
2113
+ readonly method: "POST";
2114
+ readonly path: "/projects/{project}/drafts/{draft}/refresh-base";
2115
+ readonly pathParams: readonly ["project", "draft"];
2116
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "DRAFT_NOT_FOUND", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2117
+ };
2118
+ readonly "drafts.setup": {
2119
+ readonly name: "drafts.setup";
2120
+ readonly summary: "Save what the user said about the project on a draft: what it's for, who it serves, the tables to model, priority metrics and one number they trust.";
2121
+ readonly scope: "project";
2122
+ readonly capability: "deployment:publish";
2123
+ readonly destructive: false;
2124
+ readonly method: "PATCH";
2125
+ readonly path: "/projects/{project}/drafts/{draft}/setup";
2126
+ readonly pathParams: readonly ["project", "draft"];
2127
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "DRAFT_READ_ONLY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2128
+ };
2129
+ readonly "drafts.findings": {
2130
+ readonly name: "drafts.findings";
2131
+ readonly summary: "List what discovery found that changes numbers (internal rows, mixed units, versioned rows, grain, customer scope…), each with the question to ask the user and the measures it affects.";
2132
+ readonly scope: "project";
2133
+ readonly capability: "deployment:publish";
2134
+ readonly destructive: false;
2135
+ readonly method: "GET";
2136
+ readonly path: "/projects/{project}/drafts/{draft}/findings";
2137
+ readonly pathParams: readonly ["project", "draft"];
2138
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "DRAFT_READ_ONLY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2139
+ };
2140
+ readonly "drafts.answer": {
2141
+ readonly name: "drafts.answer";
2142
+ readonly summary: "Record the user's answers to findings: approve the proposed default, reject it (remove, or their own alternative), or decide later. Each answer becomes the member's decision in the draft's evidence ledger and can release held measures, so ask the user first.";
2143
+ readonly scope: "project";
2144
+ readonly capability: "deployment:publish";
2145
+ readonly destructive: true;
2146
+ readonly method: "POST";
2147
+ readonly path: "/projects/{project}/drafts/{draft}/answers";
2148
+ readonly pathParams: readonly ["project", "draft"];
2149
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "DRAFT_NOT_FOUND", "DRAFT_NOT_READY", "DRAFT_READ_ONLY", "FINDINGS_CHANGED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2150
+ };
2151
+ readonly "drafts.runStatus": {
2152
+ readonly name: "drafts.runStatus";
2153
+ readonly summary: "Read the progress of the draft's background checks (grain, column meaning, measures, joins, query history, the trusted number).";
2154
+ readonly scope: "project";
2155
+ readonly capability: "deployment:publish";
2156
+ readonly destructive: false;
2157
+ readonly method: "GET";
2158
+ readonly path: "/projects/{project}/drafts/{draft}/run";
2159
+ readonly pathParams: readonly ["project", "draft"];
2160
+ readonly errors: readonly ["DRAFT_NOT_FOUND", "DRAFT_READ_ONLY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2161
+ };
2162
+ readonly "drafts.run": {
2163
+ readonly name: "drafts.run";
2164
+ readonly summary: "Start, resume or cancel the draft's background checks against ClickHouse. They run in batches; poll drafts_run_status, then read drafts_findings.";
2165
+ readonly scope: "project";
2166
+ readonly capability: "deployment:publish";
2167
+ readonly destructive: false;
2168
+ readonly method: "POST";
2169
+ readonly path: "/projects/{project}/drafts/{draft}/run";
2170
+ readonly pathParams: readonly ["project", "draft"];
2171
+ readonly errors: readonly ["CONNECTION_NOT_SAVED", "DRAFT_NOT_FOUND", "DRAFT_READ_ONLY", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "RUN_CONFLICT", "STALE_REVISION", "UNAUTHENTICATED"];
2172
+ };
2173
+ readonly "customerScope.list": {
2174
+ readonly name: "customerScope.list";
2175
+ readonly summary: "List each live dataset's customer scope, and the ones flagged for exposing a customer column without being scoped by it.";
2176
+ readonly scope: "project";
2177
+ readonly capability: "workspace:view";
2178
+ readonly destructive: false;
2179
+ readonly method: "GET";
2180
+ readonly path: "/projects/{project}/onboarding/customer-scope";
2181
+ readonly pathParams: readonly ["project"];
2182
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2183
+ };
2184
+ readonly "customerScope.confirmShared": {
2185
+ readonly name: "customerScope.confirmShared";
2186
+ readonly summary: "Record that a flagged dataset is the same for every customer, so it stays unscoped on purpose. Only the user can decide this.";
2187
+ readonly scope: "project";
2188
+ readonly capability: "deployment:publish";
2189
+ readonly destructive: true;
2190
+ readonly method: "POST";
2191
+ readonly path: "/projects/{project}/onboarding/customer-scope/confirm";
2192
+ readonly pathParams: readonly ["project"];
2193
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "NOTHING_TO_CONFIRM", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2194
+ };
2195
+ readonly "samplePolicy.get": {
2196
+ readonly name: "samplePolicy.get";
2197
+ readonly summary: "Read which columns' sample values the assistant may see: all, only those not detected as sensitive, or none, with per-column overrides.";
2198
+ readonly scope: "project";
2199
+ readonly capability: "deployment:publish";
2200
+ readonly destructive: false;
2201
+ readonly method: "GET";
2202
+ readonly path: "/projects/{project}/sample-policy";
2203
+ readonly pathParams: readonly ["project"];
2204
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2205
+ };
2206
+ readonly "samplePolicy.set": {
2207
+ readonly name: "samplePolicy.set";
2208
+ readonly summary: "Set which columns' sample values the assistant may see.";
2209
+ readonly scope: "project";
2210
+ readonly capability: "connection:manage";
2211
+ readonly destructive: false;
2212
+ readonly method: "PUT";
2213
+ readonly path: "/projects/{project}/sample-policy";
2214
+ readonly pathParams: readonly ["project"];
2215
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2216
+ };
2217
+ readonly "connections.get": {
2218
+ readonly name: "connections.get";
2219
+ readonly summary: "Show the project's ClickHouse connection (never the password).";
2220
+ readonly scope: "project";
2221
+ readonly capability: "workspace:view";
2222
+ readonly destructive: false;
2223
+ readonly method: "GET";
2224
+ readonly path: "/projects/{project}/connection";
2225
+ readonly pathParams: readonly ["project"];
2226
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2227
+ };
2228
+ readonly "connections.save": {
2229
+ readonly name: "connections.save";
2230
+ readonly summary: "Test and save the project's ClickHouse connection; once a release is live, databases can only be added.";
2231
+ readonly scope: "project";
2232
+ readonly capability: "connection:manage";
2233
+ readonly destructive: false;
2234
+ readonly method: "POST";
2235
+ readonly path: "/projects/{project}/connection";
2236
+ readonly pathParams: readonly ["project"];
2237
+ readonly errors: readonly ["CONNECTION_AUTH_FAILED", "CONNECTION_DATABASE_LOCKED", "CONNECTION_QUERY_FAILED", "CONNECTION_UNREACHABLE", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2238
+ };
2239
+ readonly "connections.link": {
2240
+ readonly name: "connections.link";
2241
+ readonly summary: "Get a one-time link for the user to enter the project's ClickHouse connection in the dashboard, so the password never passes through chat. It works for the user who asked, signed in, once, for 15 minutes; then check it with connections.test.";
2242
+ readonly scope: "project";
2243
+ readonly capability: "connection:manage";
2244
+ readonly destructive: false;
2245
+ readonly method: "POST";
2246
+ readonly path: "/projects/{project}/connection/link";
2247
+ readonly pathParams: readonly ["project"];
2248
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2249
+ };
2250
+ readonly "connections.test": {
2251
+ readonly name: "connections.test";
2252
+ readonly summary: "Check the saved connection now: reachable, the user accepted, and what hypequery needs granted.";
2253
+ readonly scope: "project";
2254
+ readonly capability: "workspace:view";
2255
+ readonly destructive: false;
2256
+ readonly method: "POST";
2257
+ readonly path: "/projects/{project}/connection/test";
2258
+ readonly pathParams: readonly ["project"];
2259
+ readonly errors: readonly ["CONNECTION_AUTH_FAILED", "CONNECTION_NOT_SAVED", "CONNECTION_QUERY_FAILED", "CONNECTION_UNREACHABLE", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2260
+ };
2261
+ readonly "connections.queryHistory": {
2262
+ readonly name: "connections.queryHistory";
2263
+ readonly summary: "Show whether onboarding may read ClickHouse query history, and which accounts are technical.";
2264
+ readonly scope: "project";
2265
+ readonly capability: "workspace:view";
2266
+ readonly destructive: false;
2267
+ readonly method: "GET";
2268
+ readonly path: "/projects/{project}/connection/query-history";
2269
+ readonly pathParams: readonly ["project"];
2270
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2271
+ };
2272
+ readonly "connections.setQueryHistory": {
2273
+ readonly name: "connections.setQueryHistory";
2274
+ readonly summary: "Allow or stop onboarding reading ClickHouse query history (shapes only, never literals).";
2275
+ readonly scope: "project";
2276
+ readonly capability: "connection:manage";
2277
+ readonly destructive: false;
2278
+ readonly method: "PATCH";
2279
+ readonly path: "/projects/{project}/connection/query-history";
2280
+ readonly pathParams: readonly ["project"];
2281
+ readonly errors: readonly ["CONNECTION_NOT_SAVED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2282
+ };
2283
+ readonly "logs.query": {
2284
+ readonly name: "logs.query";
2285
+ readonly summary: "Search the project's request history (7 days): who queried what, how long it took, and what failed.";
2286
+ readonly scope: "project";
2287
+ readonly capability: "workspace:view";
2288
+ readonly destructive: false;
2289
+ readonly method: "GET";
2290
+ readonly path: "/projects/{project}/logs";
2291
+ readonly pathParams: readonly ["project"];
2292
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2293
+ };
2294
+ readonly "usage.get": {
2295
+ readonly name: "usage.get";
2296
+ readonly summary: "Show this month's queries by day and transport, per customer, and embedded chat usage.";
2297
+ readonly scope: "organization";
2298
+ readonly capability: "workspace:view";
2299
+ readonly destructive: false;
2300
+ readonly method: "GET";
2301
+ readonly path: "/org/usage";
2302
+ readonly pathParams: readonly [];
2303
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "UNAUTHENTICATED"];
2304
+ };
2305
+ readonly "audit.list": {
2306
+ readonly name: "audit.list";
2307
+ readonly summary: "List the organisation's audit log: publishes, rollbacks, members, keys and connection changes.";
2308
+ readonly scope: "organization";
2309
+ readonly capability: "audit:read";
2310
+ readonly destructive: false;
2311
+ readonly method: "GET";
2312
+ readonly path: "/org/audit";
2313
+ readonly pathParams: readonly [];
2314
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "UNAUTHENTICATED"];
2315
+ };
2316
+ readonly "tenants.list": {
2317
+ readonly name: "tenants.list";
2318
+ readonly summary: "List the project's customers (tenants) and whether each is enabled.";
2319
+ readonly scope: "project";
2320
+ readonly capability: "embed:view";
2321
+ readonly destructive: false;
2322
+ readonly method: "GET";
2323
+ readonly path: "/projects/{project}/customers/tenants";
2324
+ readonly pathParams: readonly ["project"];
2325
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2326
+ };
2327
+ readonly "tenants.create": {
2328
+ readonly name: "tenants.create";
2329
+ readonly summary: "Register a customer by the id your app uses for it, with a display name.";
2330
+ readonly scope: "project";
2331
+ readonly capability: "embed:manage";
2332
+ readonly destructive: false;
2333
+ readonly method: "POST";
2334
+ readonly path: "/projects/{project}/customers/tenants";
2335
+ readonly pathParams: readonly ["project"];
2336
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "TENANT_EXISTS", "UNAUTHENTICATED"];
2337
+ };
2338
+ readonly "tenants.update": {
2339
+ readonly name: "tenants.update";
2340
+ readonly summary: "Rename a customer, or disable it (which ends its users' MCP sign-ins).";
2341
+ readonly scope: "project";
2342
+ readonly capability: "embed:manage";
2343
+ readonly destructive: false;
2344
+ readonly method: "PATCH";
2345
+ readonly path: "/projects/{project}/customers/tenants/{tenant}";
2346
+ readonly pathParams: readonly ["project", "tenant"];
2347
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "TENANT_NOT_FOUND", "UNAUTHENTICATED"];
2348
+ };
2349
+ readonly "tenants.remove": {
2350
+ readonly name: "tenants.remove";
2351
+ readonly summary: "Remove a customer and end its users' MCP sign-ins.";
2352
+ readonly scope: "project";
2353
+ readonly capability: "embed:manage";
2354
+ readonly destructive: true;
2355
+ readonly method: "DELETE";
2356
+ readonly path: "/projects/{project}/customers/tenants/{tenant}";
2357
+ readonly pathParams: readonly ["project", "tenant"];
2358
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "TENANT_NOT_FOUND", "UNAUTHENTICATED"];
2359
+ };
2360
+ readonly "permissionSets.list": {
2361
+ readonly name: "permissionSets.list";
2362
+ readonly summary: "List the permission sets that decide which datasets and fields customers' users see.";
2363
+ readonly scope: "project";
2364
+ readonly capability: "embed:view";
2365
+ readonly destructive: false;
2366
+ readonly method: "GET";
2367
+ readonly path: "/projects/{project}/customers/permission-sets";
2368
+ readonly pathParams: readonly ["project"];
2369
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2370
+ };
2371
+ readonly "permissionSets.create": {
2372
+ readonly name: "permissionSets.create";
2373
+ readonly summary: "Create a permission set: the datasets and fields a customer's users may query.";
2374
+ readonly scope: "project";
2375
+ readonly capability: "embed:manage";
2376
+ readonly destructive: false;
2377
+ readonly method: "POST";
2378
+ readonly path: "/projects/{project}/customers/permission-sets";
2379
+ readonly pathParams: readonly ["project"];
2380
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PERMISSION_SET_EXISTS", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2381
+ };
2382
+ readonly "permissionSets.update": {
2383
+ readonly name: "permissionSets.update";
2384
+ readonly summary: "Change a permission set, guarded by the revision you read; fields you leave out keep their values.";
2385
+ readonly scope: "project";
2386
+ readonly capability: "embed:manage";
2387
+ readonly destructive: false;
2388
+ readonly method: "PATCH";
2389
+ readonly path: "/projects/{project}/customers/permission-sets/{permissionSet}";
2390
+ readonly pathParams: readonly ["project", "permissionSet"];
2391
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PERMISSION_SET_NOT_FOUND", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2392
+ };
2393
+ readonly "permissionSets.remove": {
2394
+ readonly name: "permissionSets.remove";
2395
+ readonly summary: "Delete a permission set; tokens naming it are refused from then on.";
2396
+ readonly scope: "project";
2397
+ readonly capability: "embed:manage";
2398
+ readonly destructive: true;
2399
+ readonly method: "DELETE";
2400
+ readonly path: "/projects/{project}/customers/permission-sets/{permissionSet}";
2401
+ readonly pathParams: readonly ["project", "permissionSet"];
2402
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PERMISSION_SET_NOT_FOUND", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2403
+ };
2404
+ readonly "customerLimits.get": {
2405
+ readonly name: "customerLimits.get";
2406
+ readonly summary: "Show each customer's query rate, daily query limit and chat token allowance.";
2407
+ readonly scope: "project";
2408
+ readonly capability: "embed:view";
2409
+ readonly destructive: false;
2410
+ readonly method: "GET";
2411
+ readonly path: "/projects/{project}/customers/limits";
2412
+ readonly pathParams: readonly ["project"];
2413
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2414
+ };
2415
+ readonly "customerLimits.set": {
2416
+ readonly name: "customerLimits.set";
2417
+ readonly summary: "Set each customer's query rate, daily query limit and chat tokens; null keeps the default.";
2418
+ readonly scope: "project";
2419
+ readonly capability: "embed:manage";
2420
+ readonly destructive: false;
2421
+ readonly method: "PATCH";
2422
+ readonly path: "/projects/{project}/customers/limits";
2423
+ readonly pathParams: readonly ["project"];
2424
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2425
+ };
2426
+ readonly "tenantGrants.list": {
2427
+ readonly name: "tenantGrants.list";
2428
+ readonly summary: "List customers' users signed in to MCP, by customer and user.";
2429
+ readonly scope: "project";
2430
+ readonly capability: "embed:manage";
2431
+ readonly destructive: false;
2432
+ readonly method: "GET";
2433
+ readonly path: "/projects/{project}/customers/mcp-grants";
2434
+ readonly pathParams: readonly ["project"];
2435
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2436
+ };
2437
+ readonly "tenantGrants.revokeTenant": {
2438
+ readonly name: "tenantGrants.revokeTenant";
2439
+ readonly summary: "End every MCP connection of one customer's users.";
2440
+ readonly scope: "project";
2441
+ readonly capability: "embed:manage";
2442
+ readonly destructive: true;
2443
+ readonly method: "POST";
2444
+ readonly path: "/projects/{project}/customers/mcp-grants/revoke-tenant";
2445
+ readonly pathParams: readonly ["project"];
2446
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2447
+ };
2448
+ readonly "tenantGrants.revoke": {
2449
+ readonly name: "tenantGrants.revoke";
2450
+ readonly summary: "End one customer user's MCP connection; it stops on its next call.";
2451
+ readonly scope: "project";
2452
+ readonly capability: "embed:manage";
2453
+ readonly destructive: true;
2454
+ readonly method: "DELETE";
2455
+ readonly path: "/projects/{project}/customers/mcp-grants/{grant}";
2456
+ readonly pathParams: readonly ["project", "grant"];
2457
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "GRANT_NOT_FOUND", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2458
+ };
2459
+ readonly "customerAccess.get": {
2460
+ readonly name: "customerAccess.get";
2461
+ readonly summary: "Show how the app identifies its customers' users, the customer origin, and a dataset to prove scoping with.";
2462
+ readonly scope: "project";
2463
+ readonly capability: "embed:view";
2464
+ readonly destructive: false;
2465
+ readonly method: "GET";
2466
+ readonly path: "/projects/{project}/customers/access";
2467
+ readonly pathParams: readonly ["project"];
2468
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2469
+ };
2470
+ readonly "customerAccess.setMode": {
2471
+ readonly name: "customerAccess.setMode";
2472
+ readonly summary: "Choose how the app identifies its customers' users: jwt (your provider), minted (your backend mints tokens), backend (your backend names the customer) or internal.";
2473
+ readonly scope: "project";
2474
+ readonly capability: "credentials:manage";
2475
+ readonly destructive: false;
2476
+ readonly method: "PATCH";
2477
+ readonly path: "/projects/{project}/customers/access";
2478
+ readonly pathParams: readonly ["project"];
2479
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2480
+ };
2481
+ readonly "customerAccess.createKey": {
2482
+ readonly name: "customerAccess.createKey";
2483
+ readonly summary: "Create the server key a minted or backend mode uses, for any customer. Its token is returned once.";
2484
+ readonly scope: "project";
2485
+ readonly capability: "credentials:manage";
2486
+ readonly destructive: false;
2487
+ readonly method: "POST";
2488
+ readonly path: "/projects/{project}/customers/access/key";
2489
+ readonly pathParams: readonly ["project"];
2490
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2491
+ };
2492
+ readonly "customerAccess.prove": {
2493
+ readonly name: "customerAccess.prove";
2494
+ readonly summary: "Prove customer scoping: one query as a chosen customer through the customer origin, then the same query with no customer, which must be refused.";
2495
+ readonly scope: "project";
2496
+ readonly capability: "credentials:manage";
2497
+ readonly destructive: false;
2498
+ readonly method: "POST";
2499
+ readonly path: "/projects/{project}/customers/access/prove";
2500
+ readonly pathParams: readonly ["project"];
2501
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2502
+ };
2503
+ readonly "customerSettings.get": {
2504
+ readonly name: "customerSettings.get";
2505
+ readonly summary: "Show the allowed browser origins and how customers register.";
2506
+ readonly scope: "project";
2507
+ readonly capability: "embed:view";
2508
+ readonly destructive: false;
2509
+ readonly method: "GET";
2510
+ readonly path: "/projects/{project}/customers/settings";
2511
+ readonly pathParams: readonly ["project"];
2512
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2513
+ };
2514
+ readonly "customerSettings.set": {
2515
+ readonly name: "customerSettings.set";
2516
+ readonly summary: "Replace the browser origins allowed to call customer endpoints, and choose whether customers register on first use.";
2517
+ readonly scope: "project";
2518
+ readonly capability: "credentials:manage";
2519
+ readonly destructive: false;
2520
+ readonly method: "PATCH";
2521
+ readonly path: "/projects/{project}/customers/settings";
2522
+ readonly pathParams: readonly ["project"];
2523
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2524
+ };
2525
+ readonly "jwtIssuer.get": {
2526
+ readonly name: "jwtIssuer.get";
2527
+ readonly summary: "Show the identity provider whose JWTs your app's users present, with its health.";
2528
+ readonly scope: "project";
2529
+ readonly capability: "embed:view";
2530
+ readonly destructive: false;
2531
+ readonly method: "GET";
2532
+ readonly path: "/projects/{project}/customers/jwt-issuer";
2533
+ readonly pathParams: readonly ["project"];
2534
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2535
+ };
2536
+ readonly "jwtIssuer.save": {
2537
+ readonly name: "jwtIssuer.save";
2538
+ readonly summary: "Trust your identity provider's JWTs: issuer, audience, JWKS URL and which claims name the customer and access.";
2539
+ readonly scope: "project";
2540
+ readonly capability: "credentials:manage";
2541
+ readonly destructive: false;
2542
+ readonly method: "PUT";
2543
+ readonly path: "/projects/{project}/customers/jwt-issuer";
2544
+ readonly pathParams: readonly ["project"];
2545
+ readonly errors: readonly ["ALREADY_CONFIGURED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "ISSUER_UNREADABLE", "NOT_CONFIGURED", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2546
+ };
2547
+ readonly "jwtIssuer.remove": {
2548
+ readonly name: "jwtIssuer.remove";
2549
+ readonly summary: "Stop trusting the identity provider's JWTs; tokens from it are refused from then on.";
2550
+ readonly scope: "project";
2551
+ readonly capability: "credentials:manage";
2552
+ readonly destructive: true;
2553
+ readonly method: "DELETE";
2554
+ readonly path: "/projects/{project}/customers/jwt-issuer";
2555
+ readonly pathParams: readonly ["project"];
2556
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "NOT_CONFIGURED", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2557
+ };
2558
+ readonly "oidcClient.get": {
2559
+ readonly name: "oidcClient.get";
2560
+ readonly summary: "Show OIDC sign-in for customers' MCP users, with the redirect and MCP URLs to register (never the client secret).";
2561
+ readonly scope: "project";
2562
+ readonly capability: "embed:view";
2563
+ readonly destructive: false;
2564
+ readonly method: "GET";
2565
+ readonly path: "/projects/{project}/customers/oidc-client";
2566
+ readonly pathParams: readonly ["project"];
2567
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2568
+ };
2569
+ readonly "oidcClient.save": {
2570
+ readonly name: "oidcClient.save";
2571
+ readonly summary: "Let customers' users sign in to MCP with your identity provider: issuer, client id and (the first time) secret.";
2572
+ readonly scope: "project";
2573
+ readonly capability: "credentials:manage";
2574
+ readonly destructive: false;
2575
+ readonly method: "PUT";
2576
+ readonly path: "/projects/{project}/customers/oidc-client";
2577
+ readonly pathParams: readonly ["project"];
2578
+ readonly errors: readonly ["ALREADY_CONFIGURED", "CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "ISSUER_REQUIRED", "ISSUER_UNREADABLE", "NOT_CONFIGURED", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "STALE_REVISION", "UNAUTHENTICATED"];
2579
+ };
2580
+ readonly "oidcClient.remove": {
2581
+ readonly name: "oidcClient.remove";
2582
+ readonly summary: "Remove OIDC sign-in; every customer MCP connection ends with it.";
2583
+ readonly scope: "project";
2584
+ readonly capability: "credentials:manage";
2585
+ readonly destructive: true;
2586
+ readonly method: "DELETE";
2587
+ readonly path: "/projects/{project}/customers/oidc-client";
2588
+ readonly pathParams: readonly ["project"];
2589
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "NOT_CONFIGURED", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2590
+ };
2591
+ readonly "members.list": {
2592
+ readonly name: "members.list";
2593
+ readonly summary: "List the organisation's members and pending invitations, with their roles.";
2594
+ readonly scope: "organization";
2595
+ readonly capability: "organization:manage";
2596
+ readonly destructive: false;
2597
+ readonly method: "GET";
2598
+ readonly path: "/org/members";
2599
+ readonly pathParams: readonly [];
2600
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "UNAUTHENTICATED"];
2601
+ };
2602
+ readonly "members.invite": {
2603
+ readonly name: "members.invite";
2604
+ readonly summary: "Invite someone by email as a Developer (member) or an Admin; they get an email to accept.";
2605
+ readonly scope: "organization";
2606
+ readonly capability: "organization:manage";
2607
+ readonly destructive: false;
2608
+ readonly method: "POST";
2609
+ readonly path: "/org/members/invitations";
2610
+ readonly pathParams: readonly [];
2611
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "SESSION_REQUIRED", "UNAUTHENTICATED"];
2612
+ };
2613
+ readonly "members.cancelInvitation": {
2614
+ readonly name: "members.cancelInvitation";
2615
+ readonly summary: "Cancel a pending invitation.";
2616
+ readonly scope: "organization";
2617
+ readonly capability: "organization:manage";
2618
+ readonly destructive: true;
2619
+ readonly method: "DELETE";
2620
+ readonly path: "/org/members/invitations/{invitation}";
2621
+ readonly pathParams: readonly ["invitation"];
2622
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "MEMBER_NOT_FOUND", "SESSION_REQUIRED", "UNAUTHENTICATED"];
2623
+ };
2624
+ readonly "org.accessPolicy": {
2625
+ readonly name: "org.accessPolicy";
2626
+ readonly summary: "Show who may be invited: any email, or only approved email domains.";
2627
+ readonly scope: "organization";
2628
+ readonly capability: "organization:manage";
2629
+ readonly destructive: false;
2630
+ readonly method: "GET";
2631
+ readonly path: "/org/access-policy";
2632
+ readonly pathParams: readonly [];
2633
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "UNAUTHENTICATED"];
2634
+ };
2635
+ readonly "org.setAccessPolicy": {
2636
+ readonly name: "org.setAccessPolicy";
2637
+ readonly summary: "Choose who may be invited: any email, or only approved email domains.";
2638
+ readonly scope: "organization";
2639
+ readonly capability: "organization:manage";
2640
+ readonly destructive: false;
2641
+ readonly method: "PUT";
2642
+ readonly path: "/org/access-policy";
2643
+ readonly pathParams: readonly [];
2644
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "UNAUTHENTICATED"];
2645
+ };
2646
+ readonly "deployKeys.list": {
2647
+ readonly name: "deployKeys.list";
2648
+ readonly summary: "List the project's deploy keys (for CI), with when each was last used.";
2649
+ readonly scope: "project";
2650
+ readonly capability: "credentials:manage";
2651
+ readonly destructive: false;
2652
+ readonly method: "GET";
2653
+ readonly path: "/projects/{project}/deploy-keys";
2654
+ readonly pathParams: readonly ["project"];
2655
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2656
+ };
2657
+ readonly "deployKeys.create": {
2658
+ readonly name: "deployKeys.create";
2659
+ readonly summary: "Create a deploy key for CI; its token is returned once.";
2660
+ readonly scope: "project";
2661
+ readonly capability: "credentials:manage";
2662
+ readonly destructive: false;
2663
+ readonly method: "POST";
2664
+ readonly path: "/projects/{project}/deploy-keys";
2665
+ readonly pathParams: readonly ["project"];
2666
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2667
+ };
2668
+ readonly "deployKeys.revoke": {
2669
+ readonly name: "deployKeys.revoke";
2670
+ readonly summary: "Revoke a deploy key; CI using it stops deploying.";
2671
+ readonly scope: "project";
2672
+ readonly capability: "credentials:manage";
2673
+ readonly destructive: true;
2674
+ readonly method: "DELETE";
2675
+ readonly path: "/projects/{project}/deploy-keys/{key}";
2676
+ readonly pathParams: readonly ["project", "key"];
2677
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "KEY_NOT_FOUND", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2678
+ };
2679
+ readonly "apiKeys.list": {
2680
+ readonly name: "apiKeys.list";
2681
+ readonly summary: "List the project's API keys and approved MCP connections, with their roles, scopes and customers.";
2682
+ readonly scope: "project";
2683
+ readonly capability: "credentials:manage";
2684
+ readonly destructive: false;
2685
+ readonly method: "GET";
2686
+ readonly path: "/projects/{project}/api-keys";
2687
+ readonly pathParams: readonly ["project"];
2688
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2689
+ };
2690
+ readonly "apiKeys.create": {
2691
+ readonly name: "apiKeys.create";
2692
+ readonly summary: "Create an API key with roles, scopes and which customers it may act for; its token is returned once.";
2693
+ readonly scope: "project";
2694
+ readonly capability: "credentials:manage";
2695
+ readonly destructive: false;
2696
+ readonly method: "POST";
2697
+ readonly path: "/projects/{project}/api-keys";
2698
+ readonly pathParams: readonly ["project"];
2699
+ readonly errors: readonly ["FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2700
+ };
2701
+ readonly "apiKeys.revoke": {
2702
+ readonly name: "apiKeys.revoke";
2703
+ readonly summary: "Revoke an API key or an approved MCP connection; it stops on its next call.";
2704
+ readonly scope: "project";
2705
+ readonly capability: "credentials:manage";
2706
+ readonly destructive: true;
2707
+ readonly method: "DELETE";
2708
+ readonly path: "/projects/{project}/api-keys/{key}";
2709
+ readonly pathParams: readonly ["project", "key"];
2710
+ readonly errors: readonly ["CONFIRMATION_REQUIRED", "FORBIDDEN", "INTERNAL", "INVALID_INPUT", "INVALID_REQUEST_ORIGIN", "KEY_NOT_FOUND", "PROJECT_HAS_SEVERAL_TARGETS", "PROJECT_NOT_FOUND", "UNAUTHENTICATED"];
2711
+ };
2712
+ };
2713
+ export type CloudOperationName = keyof typeof OPERATIONS;
2714
+ /** One method per Cloud operation, grouped by resource: `client.drafts.promote(...)`. */
2715
+ export interface CloudClientOperations {
2716
+ projects: {
2717
+ /**
2718
+ * List the projects in your organisation.
2719
+ *
2720
+ * `GET /projects` · organization scope · needs `workspace:view`
2721
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, UNAUTHENTICATED
2722
+ */
2723
+ list(input?: ProjectsListInput, options?: CallOptions): Promise<ProjectsListOutput>;
2724
+ /**
2725
+ * Show one project and whether a release is live.
2726
+ *
2727
+ * `GET /projects/{project}` · project scope · needs `workspace:view`
2728
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2729
+ */
2730
+ get(input: ProjectsGetInput, options?: CallOptions): Promise<ProjectsGetOutput>;
2731
+ /**
2732
+ * Where the project is served: the MCP URL, the REST base and dataset URLs, and the client contract.
2733
+ *
2734
+ * `GET /projects/{project}/connect-info` · project scope · needs `workspace:view`
2735
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2736
+ */
2737
+ connectInfo(input: ProjectsConnectInfoInput, options?: CallOptions): Promise<ProjectsConnectInfoOutput>;
2738
+ /**
2739
+ * Create a project: one ClickHouse connection, one live data model, its own URLs.
2740
+ *
2741
+ * `POST /projects` · organization scope · needs `environment:create`
2742
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_EXISTS, UNAUTHENTICATED
2743
+ */
2744
+ create(input: ProjectsCreateInput, options?: CallOptions): Promise<ProjectsCreateOutput>;
2745
+ /**
2746
+ * Change a project's display name; its slug and URLs stay the same.
2747
+ *
2748
+ * `PATCH /projects/{project}` · project scope · needs `environment:create`
2749
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2750
+ */
2751
+ rename(input: ProjectsRenameInput, options?: CallOptions): Promise<ProjectsRenameOutput>;
2752
+ };
2753
+ releases: {
2754
+ /**
2755
+ * Show what is live: the current version and revision.
2756
+ *
2757
+ * `GET /projects/{project}/releases/live` · project scope · needs `workspace:view`
2758
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2759
+ */
2760
+ status(input: ReleasesStatusInput, options?: CallOptions): Promise<ReleasesStatusOutput>;
2761
+ /**
2762
+ * List published versions, newest first.
2763
+ *
2764
+ * `GET /projects/{project}/releases` · project scope · needs `workspace:view`
2765
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2766
+ */
2767
+ list(input: ReleasesListInput, options?: CallOptions): Promise<ReleasesListOutput>;
2768
+ /**
2769
+ * Show one published version and its data model.
2770
+ *
2771
+ * `GET /projects/{project}/releases/{version}` · project scope · needs `workspace:view`
2772
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED, VERSION_NOT_FOUND
2773
+ */
2774
+ get(input: ReleasesGetInput, options?: CallOptions): Promise<ReleasesGetOutput>;
2775
+ /**
2776
+ * Make an earlier published version live again. The project's owner follows it: rolling back to a version built in Cloud makes the model editable in Cloud again, and to one deployed from code makes it managed in code.
2777
+ *
2778
+ * `POST /projects/{project}/releases/{version}/rollback` · project scope · needs `deployment:publish`
2779
+ * Destructive: requires `confirm: true`.
2780
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, RELEASE_CHANGE_REFUSED, RELEASE_MOVED, UNAUTHENTICATED, VERSION_NOT_FOUND
2781
+ */
2782
+ rollback(input: ReleasesRollbackInput, options?: CallOptions): Promise<ReleasesRollbackOutput>;
2783
+ };
2784
+ drafts: {
2785
+ /**
2786
+ * List the project's drafts and whether each is ready to publish.
2787
+ *
2788
+ * `GET /projects/{project}/drafts` · project scope · needs `workspace:view`
2789
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2790
+ */
2791
+ list(input: DraftsListInput, options?: CallOptions): Promise<DraftsListOutput>;
2792
+ /**
2793
+ * Open your working draft (created on first use, with the ClickHouse schema discovered) or a named draft, and see what it holds.
2794
+ *
2795
+ * `POST /projects/{project}/drafts/open` · project scope · needs `deployment:publish`
2796
+ * Errors: CONNECTION_NOT_SAVED, DRAFT_NOT_FOUND, DRAFT_READ_ONLY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2797
+ */
2798
+ open(input: DraftsOpenInput, options?: CallOptions): Promise<DraftsOpenOutput>;
2799
+ /**
2800
+ * Save the draft as a staging release after its publish gates pass. Nothing goes live; publishing is drafts.promote.
2801
+ *
2802
+ * `POST /projects/{project}/drafts/{draft}/save` · project scope · needs `deployment:publish`
2803
+ * Errors: DRAFT_NOT_FOUND, DRAFT_NOT_READY, DRAFT_READ_ONLY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
2804
+ */
2805
+ save(input: DraftsSaveInput, options?: CallOptions): Promise<DraftsSaveOutput>;
2806
+ /**
2807
+ * Review a saved draft before publishing: what changes against production, breaking changes, held measures and checks.
2808
+ *
2809
+ * `GET /projects/{project}/drafts/{draft}/review` · project scope · needs `deployment:publish`
2810
+ * Errors: DRAFT_NOT_FOUND, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, RELEASE_MOVED, UNAUTHENTICATED
2811
+ */
2812
+ review(input: DraftsReviewInput, options?: CallOptions): Promise<DraftsReviewOutput>;
2813
+ /**
2814
+ * Run Cloud's number checks on a code draft's saved release.
2815
+ *
2816
+ * `POST /projects/{project}/drafts/{draft}/checks` · project scope · needs `deployment:publish`
2817
+ * Errors: DRAFT_NOT_CHECKABLE, DRAFT_NOT_FOUND, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2818
+ */
2819
+ checks(input: DraftsChecksInput, options?: CallOptions): Promise<DraftsChecksOutput>;
2820
+ /**
2821
+ * Publish a draft's saved release to production.
2822
+ *
2823
+ * `POST /projects/{project}/drafts/{draft}/promote` · project scope · needs `deployment:publish`
2824
+ * Destructive: requires `confirm: true`.
2825
+ * Errors: CONFIRMATION_REQUIRED, DRAFT_NOT_FOUND, DRAFT_NOT_READY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, OWNERSHIP_CHANGE_REQUIRED, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, RELEASE_CHANGE_REFUSED, RELEASE_MOVED, UNAUTHENTICATED
2826
+ */
2827
+ promote(input: DraftsPromoteInput, options?: CallOptions): Promise<DraftsPromoteOutput>;
2828
+ /**
2829
+ * Read a draft: its model, revision, whether Production moved since it was based, its saved release and its publish gates.
2830
+ *
2831
+ * `GET /projects/{project}/drafts/{draft}` · project scope · needs `deployment:publish`
2832
+ * Errors: DRAFT_NOT_FOUND, DRAFT_READ_ONLY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2833
+ */
2834
+ get(input: DraftsGetInput, options?: CallOptions): Promise<DraftsGetOutput>;
2835
+ /**
2836
+ * Rename a draft. Its id and staging URL stay the same.
2837
+ *
2838
+ * `PATCH /projects/{project}/drafts/{draft}` · project scope · needs `deployment:publish`
2839
+ * Errors: DRAFT_NAME_TAKEN, DRAFT_NOT_FOUND, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2840
+ */
2841
+ rename(input: DraftsRenameInput, options?: CallOptions): Promise<DraftsRenameOutput>;
2842
+ /**
2843
+ * Delete a draft and its staging URL for good. Only its creator can, unless you manage the organisation.
2844
+ *
2845
+ * `DELETE /projects/{project}/drafts/{draft}` · project scope · needs `deployment:publish`
2846
+ * Destructive: requires `confirm: true`.
2847
+ * Errors: CONFIRMATION_REQUIRED, DRAFT_NOT_FOUND, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2848
+ */
2849
+ delete(input: DraftsDeleteInput, options?: CallOptions): Promise<DraftsDeleteOutput>;
2850
+ /**
2851
+ * Read an archived draft: the release it published and whether it can be reopened against current Production.
2852
+ *
2853
+ * `GET /projects/{project}/drafts/{draft}/archive` · project scope · needs `deployment:publish`
2854
+ * Errors: DRAFT_NOT_FOUND, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
2855
+ */
2856
+ archived(input: DraftsArchivedInput, options?: CallOptions): Promise<DraftsArchivedOutput>;
2857
+ /**
2858
+ * Reopen an archived draft as a working draft, from the release you read.
2859
+ *
2860
+ * `POST /projects/{project}/drafts/{draft}/reopen` · project scope · needs `deployment:publish`
2861
+ * Errors: DRAFT_NOT_FOUND, DRAFT_READ_ONLY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
2862
+ */
2863
+ reopen(input: DraftsReopenInput, options?: CallOptions): Promise<DraftsReopenOutput>;
2864
+ /**
2865
+ * Who a saved draft affects: which apps and customers called the datasets, measures and fields it changes or removes, recently.
2866
+ *
2867
+ * `GET /projects/{project}/drafts/{draft}/impact` · project scope · needs `deployment:publish`
2868
+ * Errors: DRAFT_NOT_FOUND, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, RELEASE_MOVED, UNAUTHENTICATED
2869
+ */
2870
+ impact(input: DraftsImpactInput, options?: CallOptions): Promise<DraftsImpactOutput>;
2871
+ /**
2872
+ * When Production moved since a draft was based, show the merge onto current Production: what merges cleanly and each conflict to choose.
2873
+ *
2874
+ * `GET /projects/{project}/drafts/{draft}/update` · project scope · needs `deployment:publish`
2875
+ * Errors: DRAFT_NOT_FOUND, DRAFT_NOT_READY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED, UPDATE_CONFLICTS
2876
+ */
2877
+ update(input: DraftsUpdateInput, options?: CallOptions): Promise<DraftsUpdateOutput>;
2878
+ /**
2879
+ * Merge a draft onto current Production with the user's choice for each conflict (keep the draft's or Production's). Preview first; apply once every conflict is chosen.
2880
+ *
2881
+ * `POST /projects/{project}/drafts/{draft}/update` · project scope · needs `deployment:publish`
2882
+ * Errors: DRAFT_NOT_FOUND, DRAFT_NOT_READY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED, UPDATE_CONFLICTS
2883
+ */
2884
+ applyUpdate(input: DraftsApplyUpdateInput, options?: CallOptions): Promise<DraftsApplyUpdateOutput>;
2885
+ /**
2886
+ * For a code draft whose base Production moved: acknowledge that publishing it will replace current Production as it is, dropping the changes made there since. Nothing is merged.
2887
+ *
2888
+ * `POST /projects/{project}/drafts/{draft}/refresh-base` · project scope · needs `deployment:publish`
2889
+ * Destructive: requires `confirm: true`.
2890
+ * Errors: CONFIRMATION_REQUIRED, DRAFT_NOT_FOUND, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
2891
+ */
2892
+ refreshBase(input: DraftsRefreshBaseInput, options?: CallOptions): Promise<DraftsRefreshBaseOutput>;
2893
+ /**
2894
+ * Save what the user said about the project on a draft: what it's for, who it serves, the tables to model, priority metrics and one number they trust.
2895
+ *
2896
+ * `PATCH /projects/{project}/drafts/{draft}/setup` · project scope · needs `deployment:publish`
2897
+ * Errors: DRAFT_NOT_FOUND, DRAFT_READ_ONLY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
2898
+ */
2899
+ setup(input: DraftsSetupInput, options?: CallOptions): Promise<DraftsSetupOutput>;
2900
+ /**
2901
+ * List what discovery found that changes numbers (internal rows, mixed units, versioned rows, grain, customer scope…), each with the question to ask the user and the measures it affects.
2902
+ *
2903
+ * `GET /projects/{project}/drafts/{draft}/findings` · project scope · needs `deployment:publish`
2904
+ * Errors: DRAFT_NOT_FOUND, DRAFT_READ_ONLY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2905
+ */
2906
+ findings(input: DraftsFindingsInput, options?: CallOptions): Promise<DraftsFindingsOutput>;
2907
+ /**
2908
+ * Record the user's answers to findings: approve the proposed default, reject it (remove, or their own alternative), or decide later. Each answer becomes the member's decision in the draft's evidence ledger and can release held measures, so ask the user first.
2909
+ *
2910
+ * `POST /projects/{project}/drafts/{draft}/answers` · project scope · needs `deployment:publish`
2911
+ * Destructive: requires `confirm: true`.
2912
+ * Errors: CONFIRMATION_REQUIRED, DRAFT_NOT_FOUND, DRAFT_NOT_READY, DRAFT_READ_ONLY, FINDINGS_CHANGED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
2913
+ */
2914
+ answer(input: DraftsAnswerInput, options?: CallOptions): Promise<DraftsAnswerOutput>;
2915
+ /**
2916
+ * Read the progress of the draft's background checks (grain, column meaning, measures, joins, query history, the trusted number).
2917
+ *
2918
+ * `GET /projects/{project}/drafts/{draft}/run` · project scope · needs `deployment:publish`
2919
+ * Errors: DRAFT_NOT_FOUND, DRAFT_READ_ONLY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2920
+ */
2921
+ runStatus(input: DraftsRunStatusInput, options?: CallOptions): Promise<DraftsRunStatusOutput>;
2922
+ /**
2923
+ * Start, resume or cancel the draft's background checks against ClickHouse. They run in batches; poll drafts_run_status, then read drafts_findings.
2924
+ *
2925
+ * `POST /projects/{project}/drafts/{draft}/run` · project scope · needs `deployment:publish`
2926
+ * Errors: CONNECTION_NOT_SAVED, DRAFT_NOT_FOUND, DRAFT_READ_ONLY, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, RUN_CONFLICT, STALE_REVISION, UNAUTHENTICATED
2927
+ */
2928
+ run(input: DraftsRunInput, options?: CallOptions): Promise<DraftsRunOutput>;
2929
+ };
2930
+ customerScope: {
2931
+ /**
2932
+ * List each live dataset's customer scope, and the ones flagged for exposing a customer column without being scoped by it.
2933
+ *
2934
+ * `GET /projects/{project}/onboarding/customer-scope` · project scope · needs `workspace:view`
2935
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2936
+ */
2937
+ list(input: CustomerScopeListInput, options?: CallOptions): Promise<CustomerScopeListOutput>;
2938
+ /**
2939
+ * Record that a flagged dataset is the same for every customer, so it stays unscoped on purpose. Only the user can decide this.
2940
+ *
2941
+ * `POST /projects/{project}/onboarding/customer-scope/confirm` · project scope · needs `deployment:publish`
2942
+ * Destructive: requires `confirm: true`.
2943
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, NOTHING_TO_CONFIRM, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2944
+ */
2945
+ confirmShared(input: CustomerScopeConfirmSharedInput, options?: CallOptions): Promise<CustomerScopeConfirmSharedOutput>;
2946
+ };
2947
+ samplePolicy: {
2948
+ /**
2949
+ * Read which columns' sample values the assistant may see: all, only those not detected as sensitive, or none, with per-column overrides.
2950
+ *
2951
+ * `GET /projects/{project}/sample-policy` · project scope · needs `deployment:publish`
2952
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2953
+ */
2954
+ get(input: SamplePolicyGetInput, options?: CallOptions): Promise<SamplePolicyGetOutput>;
2955
+ /**
2956
+ * Set which columns' sample values the assistant may see.
2957
+ *
2958
+ * `PUT /projects/{project}/sample-policy` · project scope · needs `connection:manage`
2959
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2960
+ */
2961
+ set(input: SamplePolicySetInput, options?: CallOptions): Promise<SamplePolicySetOutput>;
2962
+ };
2963
+ connections: {
2964
+ /**
2965
+ * Show the project's ClickHouse connection (never the password).
2966
+ *
2967
+ * `GET /projects/{project}/connection` · project scope · needs `workspace:view`
2968
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2969
+ */
2970
+ get(input: ConnectionsGetInput, options?: CallOptions): Promise<ConnectionsGetOutput>;
2971
+ /**
2972
+ * Test and save the project's ClickHouse connection; once a release is live, databases can only be added.
2973
+ *
2974
+ * `POST /projects/{project}/connection` · project scope · needs `connection:manage`
2975
+ * Errors: CONNECTION_AUTH_FAILED, CONNECTION_DATABASE_LOCKED, CONNECTION_QUERY_FAILED, CONNECTION_UNREACHABLE, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2976
+ */
2977
+ save(input: ConnectionsSaveInput, options?: CallOptions): Promise<ConnectionsSaveOutput>;
2978
+ /**
2979
+ * Get a one-time link for the user to enter the project's ClickHouse connection in the dashboard, so the password never passes through chat. It works for the user who asked, signed in, once, for 15 minutes; then check it with connections.test.
2980
+ *
2981
+ * `POST /projects/{project}/connection/link` · project scope · needs `connection:manage`
2982
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2983
+ */
2984
+ link(input: ConnectionsLinkInput, options?: CallOptions): Promise<ConnectionsLinkOutput>;
2985
+ /**
2986
+ * Check the saved connection now: reachable, the user accepted, and what hypequery needs granted.
2987
+ *
2988
+ * `POST /projects/{project}/connection/test` · project scope · needs `workspace:view`
2989
+ * Errors: CONNECTION_AUTH_FAILED, CONNECTION_NOT_SAVED, CONNECTION_QUERY_FAILED, CONNECTION_UNREACHABLE, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2990
+ */
2991
+ test(input: ConnectionsTestInput, options?: CallOptions): Promise<ConnectionsTestOutput>;
2992
+ /**
2993
+ * Show whether onboarding may read ClickHouse query history, and which accounts are technical.
2994
+ *
2995
+ * `GET /projects/{project}/connection/query-history` · project scope · needs `workspace:view`
2996
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
2997
+ */
2998
+ queryHistory(input: ConnectionsQueryHistoryInput, options?: CallOptions): Promise<ConnectionsQueryHistoryOutput>;
2999
+ /**
3000
+ * Allow or stop onboarding reading ClickHouse query history (shapes only, never literals).
3001
+ *
3002
+ * `PATCH /projects/{project}/connection/query-history` · project scope · needs `connection:manage`
3003
+ * Errors: CONNECTION_NOT_SAVED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
3004
+ */
3005
+ setQueryHistory(input: ConnectionsSetQueryHistoryInput, options?: CallOptions): Promise<ConnectionsSetQueryHistoryOutput>;
3006
+ };
3007
+ logs: {
3008
+ /**
3009
+ * Search the project's request history (7 days): who queried what, how long it took, and what failed.
3010
+ *
3011
+ * `GET /projects/{project}/logs` · project scope · needs `workspace:view`
3012
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3013
+ */
3014
+ query(input: LogsQueryInput, options?: CallOptions): Promise<LogsQueryOutput>;
3015
+ };
3016
+ usage: {
3017
+ /**
3018
+ * Show this month's queries by day and transport, per customer, and embedded chat usage.
3019
+ *
3020
+ * `GET /org/usage` · organization scope · needs `workspace:view`
3021
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, UNAUTHENTICATED
3022
+ */
3023
+ get(input?: UsageGetInput, options?: CallOptions): Promise<UsageGetOutput>;
3024
+ };
3025
+ audit: {
3026
+ /**
3027
+ * List the organisation's audit log: publishes, rollbacks, members, keys and connection changes.
3028
+ *
3029
+ * `GET /org/audit` · organization scope · needs `audit:read`
3030
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, UNAUTHENTICATED
3031
+ */
3032
+ list(input?: AuditListInput, options?: CallOptions): Promise<AuditListOutput>;
3033
+ };
3034
+ tenants: {
3035
+ /**
3036
+ * List the project's customers (tenants) and whether each is enabled.
3037
+ *
3038
+ * `GET /projects/{project}/customers/tenants` · project scope · needs `embed:view`
3039
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3040
+ */
3041
+ list(input: TenantsListInput, options?: CallOptions): Promise<TenantsListOutput>;
3042
+ /**
3043
+ * Register a customer by the id your app uses for it, with a display name.
3044
+ *
3045
+ * `POST /projects/{project}/customers/tenants` · project scope · needs `embed:manage`
3046
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, TENANT_EXISTS, UNAUTHENTICATED
3047
+ */
3048
+ create(input: TenantsCreateInput, options?: CallOptions): Promise<TenantsCreateOutput>;
3049
+ /**
3050
+ * Rename a customer, or disable it (which ends its users' MCP sign-ins).
3051
+ *
3052
+ * `PATCH /projects/{project}/customers/tenants/{tenant}` · project scope · needs `embed:manage`
3053
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, TENANT_NOT_FOUND, UNAUTHENTICATED
3054
+ */
3055
+ update(input: TenantsUpdateInput, options?: CallOptions): Promise<TenantsUpdateOutput>;
3056
+ /**
3057
+ * Remove a customer and end its users' MCP sign-ins.
3058
+ *
3059
+ * `DELETE /projects/{project}/customers/tenants/{tenant}` · project scope · needs `embed:manage`
3060
+ * Destructive: requires `confirm: true`.
3061
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, TENANT_NOT_FOUND, UNAUTHENTICATED
3062
+ */
3063
+ remove(input: TenantsRemoveInput, options?: CallOptions): Promise<TenantsRemoveOutput>;
3064
+ };
3065
+ permissionSets: {
3066
+ /**
3067
+ * List the permission sets that decide which datasets and fields customers' users see.
3068
+ *
3069
+ * `GET /projects/{project}/customers/permission-sets` · project scope · needs `embed:view`
3070
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3071
+ */
3072
+ list(input: PermissionSetsListInput, options?: CallOptions): Promise<PermissionSetsListOutput>;
3073
+ /**
3074
+ * Create a permission set: the datasets and fields a customer's users may query.
3075
+ *
3076
+ * `POST /projects/{project}/customers/permission-sets` · project scope · needs `embed:manage`
3077
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PERMISSION_SET_EXISTS, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3078
+ */
3079
+ create(input: PermissionSetsCreateInput, options?: CallOptions): Promise<PermissionSetsCreateOutput>;
3080
+ /**
3081
+ * Change a permission set, guarded by the revision you read; fields you leave out keep their values.
3082
+ *
3083
+ * `PATCH /projects/{project}/customers/permission-sets/{permissionSet}` · project scope · needs `embed:manage`
3084
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PERMISSION_SET_NOT_FOUND, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
3085
+ */
3086
+ update(input: PermissionSetsUpdateInput, options?: CallOptions): Promise<PermissionSetsUpdateOutput>;
3087
+ /**
3088
+ * Delete a permission set; tokens naming it are refused from then on.
3089
+ *
3090
+ * `DELETE /projects/{project}/customers/permission-sets/{permissionSet}` · project scope · needs `embed:manage`
3091
+ * Destructive: requires `confirm: true`.
3092
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PERMISSION_SET_NOT_FOUND, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3093
+ */
3094
+ remove(input: PermissionSetsRemoveInput, options?: CallOptions): Promise<PermissionSetsRemoveOutput>;
3095
+ };
3096
+ customerLimits: {
3097
+ /**
3098
+ * Show each customer's query rate, daily query limit and chat token allowance.
3099
+ *
3100
+ * `GET /projects/{project}/customers/limits` · project scope · needs `embed:view`
3101
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3102
+ */
3103
+ get(input: CustomerLimitsGetInput, options?: CallOptions): Promise<CustomerLimitsGetOutput>;
3104
+ /**
3105
+ * Set each customer's query rate, daily query limit and chat tokens; null keeps the default.
3106
+ *
3107
+ * `PATCH /projects/{project}/customers/limits` · project scope · needs `embed:manage`
3108
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3109
+ */
3110
+ set(input: CustomerLimitsSetInput, options?: CallOptions): Promise<CustomerLimitsSetOutput>;
3111
+ };
3112
+ tenantGrants: {
3113
+ /**
3114
+ * List customers' users signed in to MCP, by customer and user.
3115
+ *
3116
+ * `GET /projects/{project}/customers/mcp-grants` · project scope · needs `embed:manage`
3117
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3118
+ */
3119
+ list(input: TenantGrantsListInput, options?: CallOptions): Promise<TenantGrantsListOutput>;
3120
+ /**
3121
+ * End every MCP connection of one customer's users.
3122
+ *
3123
+ * `POST /projects/{project}/customers/mcp-grants/revoke-tenant` · project scope · needs `embed:manage`
3124
+ * Destructive: requires `confirm: true`.
3125
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3126
+ */
3127
+ revokeTenant(input: TenantGrantsRevokeTenantInput, options?: CallOptions): Promise<TenantGrantsRevokeTenantOutput>;
3128
+ /**
3129
+ * End one customer user's MCP connection; it stops on its next call.
3130
+ *
3131
+ * `DELETE /projects/{project}/customers/mcp-grants/{grant}` · project scope · needs `embed:manage`
3132
+ * Destructive: requires `confirm: true`.
3133
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, GRANT_NOT_FOUND, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3134
+ */
3135
+ revoke(input: TenantGrantsRevokeInput, options?: CallOptions): Promise<TenantGrantsRevokeOutput>;
3136
+ };
3137
+ customerAccess: {
3138
+ /**
3139
+ * Show how the app identifies its customers' users, the customer origin, and a dataset to prove scoping with.
3140
+ *
3141
+ * `GET /projects/{project}/customers/access` · project scope · needs `embed:view`
3142
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3143
+ */
3144
+ get(input: CustomerAccessGetInput, options?: CallOptions): Promise<CustomerAccessGetOutput>;
3145
+ /**
3146
+ * Choose how the app identifies its customers' users: jwt (your provider), minted (your backend mints tokens), backend (your backend names the customer) or internal.
3147
+ *
3148
+ * `PATCH /projects/{project}/customers/access` · project scope · needs `credentials:manage`
3149
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3150
+ */
3151
+ setMode(input: CustomerAccessSetModeInput, options?: CallOptions): Promise<CustomerAccessSetModeOutput>;
3152
+ /**
3153
+ * Create the server key a minted or backend mode uses, for any customer. Its token is returned once.
3154
+ *
3155
+ * `POST /projects/{project}/customers/access/key` · project scope · needs `credentials:manage`
3156
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3157
+ */
3158
+ createKey(input: CustomerAccessCreateKeyInput, options?: CallOptions): Promise<CustomerAccessCreateKeyOutput>;
3159
+ /**
3160
+ * Prove customer scoping: one query as a chosen customer through the customer origin, then the same query with no customer, which must be refused.
3161
+ *
3162
+ * `POST /projects/{project}/customers/access/prove` · project scope · needs `credentials:manage`
3163
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3164
+ */
3165
+ prove(input: CustomerAccessProveInput, options?: CallOptions): Promise<CustomerAccessProveOutput>;
3166
+ };
3167
+ customerSettings: {
3168
+ /**
3169
+ * Show the allowed browser origins and how customers register.
3170
+ *
3171
+ * `GET /projects/{project}/customers/settings` · project scope · needs `embed:view`
3172
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3173
+ */
3174
+ get(input: CustomerSettingsGetInput, options?: CallOptions): Promise<CustomerSettingsGetOutput>;
3175
+ /**
3176
+ * Replace the browser origins allowed to call customer endpoints, and choose whether customers register on first use.
3177
+ *
3178
+ * `PATCH /projects/{project}/customers/settings` · project scope · needs `credentials:manage`
3179
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
3180
+ */
3181
+ set(input: CustomerSettingsSetInput, options?: CallOptions): Promise<CustomerSettingsSetOutput>;
3182
+ };
3183
+ jwtIssuer: {
3184
+ /**
3185
+ * Show the identity provider whose JWTs your app's users present, with its health.
3186
+ *
3187
+ * `GET /projects/{project}/customers/jwt-issuer` · project scope · needs `embed:view`
3188
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3189
+ */
3190
+ get(input: JwtIssuerGetInput, options?: CallOptions): Promise<JwtIssuerGetOutput>;
3191
+ /**
3192
+ * Trust your identity provider's JWTs: issuer, audience, JWKS URL and which claims name the customer and access.
3193
+ *
3194
+ * `PUT /projects/{project}/customers/jwt-issuer` · project scope · needs `credentials:manage`
3195
+ * Errors: ALREADY_CONFIGURED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, ISSUER_UNREADABLE, NOT_CONFIGURED, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
3196
+ */
3197
+ save(input: JwtIssuerSaveInput, options?: CallOptions): Promise<JwtIssuerSaveOutput>;
3198
+ /**
3199
+ * Stop trusting the identity provider's JWTs; tokens from it are refused from then on.
3200
+ *
3201
+ * `DELETE /projects/{project}/customers/jwt-issuer` · project scope · needs `credentials:manage`
3202
+ * Destructive: requires `confirm: true`.
3203
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, NOT_CONFIGURED, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3204
+ */
3205
+ remove(input: JwtIssuerRemoveInput, options?: CallOptions): Promise<JwtIssuerRemoveOutput>;
3206
+ };
3207
+ oidcClient: {
3208
+ /**
3209
+ * Show OIDC sign-in for customers' MCP users, with the redirect and MCP URLs to register (never the client secret).
3210
+ *
3211
+ * `GET /projects/{project}/customers/oidc-client` · project scope · needs `embed:view`
3212
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3213
+ */
3214
+ get(input: OidcClientGetInput, options?: CallOptions): Promise<OidcClientGetOutput>;
3215
+ /**
3216
+ * Let customers' users sign in to MCP with your identity provider: issuer, client id and (the first time) secret.
3217
+ *
3218
+ * `PUT /projects/{project}/customers/oidc-client` · project scope · needs `credentials:manage`
3219
+ * Errors: ALREADY_CONFIGURED, CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, ISSUER_REQUIRED, ISSUER_UNREADABLE, NOT_CONFIGURED, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, STALE_REVISION, UNAUTHENTICATED
3220
+ */
3221
+ save(input: OidcClientSaveInput, options?: CallOptions): Promise<OidcClientSaveOutput>;
3222
+ /**
3223
+ * Remove OIDC sign-in; every customer MCP connection ends with it.
3224
+ *
3225
+ * `DELETE /projects/{project}/customers/oidc-client` · project scope · needs `credentials:manage`
3226
+ * Destructive: requires `confirm: true`.
3227
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, NOT_CONFIGURED, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3228
+ */
3229
+ remove(input: OidcClientRemoveInput, options?: CallOptions): Promise<OidcClientRemoveOutput>;
3230
+ };
3231
+ members: {
3232
+ /**
3233
+ * List the organisation's members and pending invitations, with their roles.
3234
+ *
3235
+ * `GET /org/members` · organization scope · needs `organization:manage`
3236
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, UNAUTHENTICATED
3237
+ */
3238
+ list(input?: MembersListInput, options?: CallOptions): Promise<MembersListOutput>;
3239
+ /**
3240
+ * Invite someone by email as a Developer (member) or an Admin; they get an email to accept.
3241
+ *
3242
+ * `POST /org/members/invitations` · organization scope · needs `organization:manage`
3243
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, SESSION_REQUIRED, UNAUTHENTICATED
3244
+ */
3245
+ invite(input: MembersInviteInput, options?: CallOptions): Promise<MembersInviteOutput>;
3246
+ /**
3247
+ * Cancel a pending invitation.
3248
+ *
3249
+ * `DELETE /org/members/invitations/{invitation}` · organization scope · needs `organization:manage`
3250
+ * Destructive: requires `confirm: true`.
3251
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, MEMBER_NOT_FOUND, SESSION_REQUIRED, UNAUTHENTICATED
3252
+ */
3253
+ cancelInvitation(input: MembersCancelInvitationInput, options?: CallOptions): Promise<MembersCancelInvitationOutput>;
3254
+ };
3255
+ org: {
3256
+ /**
3257
+ * Show who may be invited: any email, or only approved email domains.
3258
+ *
3259
+ * `GET /org/access-policy` · organization scope · needs `organization:manage`
3260
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, UNAUTHENTICATED
3261
+ */
3262
+ accessPolicy(input?: OrgAccessPolicyInput, options?: CallOptions): Promise<OrgAccessPolicyOutput>;
3263
+ /**
3264
+ * Choose who may be invited: any email, or only approved email domains.
3265
+ *
3266
+ * `PUT /org/access-policy` · organization scope · needs `organization:manage`
3267
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, UNAUTHENTICATED
3268
+ */
3269
+ setAccessPolicy(input: OrgSetAccessPolicyInput, options?: CallOptions): Promise<OrgSetAccessPolicyOutput>;
3270
+ };
3271
+ deployKeys: {
3272
+ /**
3273
+ * List the project's deploy keys (for CI), with when each was last used.
3274
+ *
3275
+ * `GET /projects/{project}/deploy-keys` · project scope · needs `credentials:manage`
3276
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3277
+ */
3278
+ list(input: DeployKeysListInput, options?: CallOptions): Promise<DeployKeysListOutput>;
3279
+ /**
3280
+ * Create a deploy key for CI; its token is returned once.
3281
+ *
3282
+ * `POST /projects/{project}/deploy-keys` · project scope · needs `credentials:manage`
3283
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3284
+ */
3285
+ create(input: DeployKeysCreateInput, options?: CallOptions): Promise<DeployKeysCreateOutput>;
3286
+ /**
3287
+ * Revoke a deploy key; CI using it stops deploying.
3288
+ *
3289
+ * `DELETE /projects/{project}/deploy-keys/{key}` · project scope · needs `credentials:manage`
3290
+ * Destructive: requires `confirm: true`.
3291
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, KEY_NOT_FOUND, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3292
+ */
3293
+ revoke(input: DeployKeysRevokeInput, options?: CallOptions): Promise<DeployKeysRevokeOutput>;
3294
+ };
3295
+ apiKeys: {
3296
+ /**
3297
+ * List the project's API keys and approved MCP connections, with their roles, scopes and customers.
3298
+ *
3299
+ * `GET /projects/{project}/api-keys` · project scope · needs `credentials:manage`
3300
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3301
+ */
3302
+ list(input: ApiKeysListInput, options?: CallOptions): Promise<ApiKeysListOutput>;
3303
+ /**
3304
+ * Create an API key with roles, scopes and which customers it may act for; its token is returned once.
3305
+ *
3306
+ * `POST /projects/{project}/api-keys` · project scope · needs `credentials:manage`
3307
+ * Errors: FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3308
+ */
3309
+ create(input: ApiKeysCreateInput, options?: CallOptions): Promise<ApiKeysCreateOutput>;
3310
+ /**
3311
+ * Revoke an API key or an approved MCP connection; it stops on its next call.
3312
+ *
3313
+ * `DELETE /projects/{project}/api-keys/{key}` · project scope · needs `credentials:manage`
3314
+ * Destructive: requires `confirm: true`.
3315
+ * Errors: CONFIRMATION_REQUIRED, FORBIDDEN, INTERNAL, INVALID_INPUT, INVALID_REQUEST_ORIGIN, KEY_NOT_FOUND, PROJECT_HAS_SEVERAL_TARGETS, PROJECT_NOT_FOUND, UNAUTHENTICATED
3316
+ */
3317
+ revoke(input: ApiKeysRevokeInput, options?: CallOptions): Promise<ApiKeysRevokeOutput>;
3318
+ };
3319
+ }
3320
+ //# sourceMappingURL=operations.d.ts.map