@walkeros/cli 4.5.0 → 4.6.0-next-1788817472881
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/dist/cli.js +1556 -1326
- package/dist/index.d.ts +3107 -491
- package/dist/index.js +728 -347
- package/dist/index.js.map +1 -1
- package/openapi/spec.json +9867 -6216
- package/package.json +8 -8
package/dist/index.d.ts
CHANGED
|
@@ -331,8 +331,31 @@ declare function bundle(configOrPath: unknown, options?: {
|
|
|
331
331
|
*/
|
|
332
332
|
type Platform = 'web' | 'server';
|
|
333
333
|
|
|
334
|
-
|
|
335
|
-
|
|
334
|
+
/**
|
|
335
|
+
* Resolve a bearer for an API call, refreshing the stored session when needed.
|
|
336
|
+
*
|
|
337
|
+
* Priority: `WALKEROS_TOKEN`, then a legacy static token, then the OAuth
|
|
338
|
+
* session. Returns null when nothing can be resolved, which callers render as
|
|
339
|
+
* "run `walkeros login`".
|
|
340
|
+
*
|
|
341
|
+
* Throws when a refresh was needed but could not be carried out, which is a
|
|
342
|
+
* different problem from having no session and must not be reported as one.
|
|
343
|
+
*/
|
|
344
|
+
declare function resolveAccessToken(opts?: {
|
|
345
|
+
fetch?: typeof fetch;
|
|
346
|
+
now?: () => number;
|
|
347
|
+
}): Promise<string | null>;
|
|
348
|
+
/**
|
|
349
|
+
* Authorization header for the resolved credential, or an empty object when
|
|
350
|
+
* there is none. Async because resolving may have to refresh the session.
|
|
351
|
+
*/
|
|
352
|
+
declare function getAuthHeaders(): Promise<Record<string, string>>;
|
|
353
|
+
/**
|
|
354
|
+
* Where a credential would come from, without resolving or refreshing it.
|
|
355
|
+
* For commands that want to send someone to `walkeros login` before spending
|
|
356
|
+
* a network round trip.
|
|
357
|
+
*/
|
|
358
|
+
declare function credentialSource(): 'env' | 'config' | null;
|
|
336
359
|
declare function requireProjectId(): string;
|
|
337
360
|
|
|
338
361
|
/**
|
|
@@ -725,64 +748,87 @@ interface LoginCommandOptions extends GlobalOptions {
|
|
|
725
748
|
url?: string;
|
|
726
749
|
json?: boolean;
|
|
727
750
|
}
|
|
728
|
-
interface
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
expiresIn: number;
|
|
734
|
-
interval: number;
|
|
735
|
-
}
|
|
736
|
-
interface DeviceCodeOptions {
|
|
737
|
-
url?: string;
|
|
738
|
-
fetch?: typeof globalThis.fetch;
|
|
751
|
+
interface LoginResult {
|
|
752
|
+
success: boolean;
|
|
753
|
+
email?: string;
|
|
754
|
+
configPath?: string;
|
|
755
|
+
error?: string;
|
|
739
756
|
}
|
|
740
|
-
interface
|
|
757
|
+
interface LoginOptions {
|
|
741
758
|
url?: string;
|
|
759
|
+
/** Override browser opener for testing */
|
|
760
|
+
openUrl?: (url: string) => Promise<void>;
|
|
761
|
+
/** Override fetch for testing */
|
|
742
762
|
fetch?: typeof globalThis.fetch;
|
|
743
|
-
/**
|
|
744
|
-
|
|
745
|
-
/** Poll interval
|
|
746
|
-
|
|
763
|
+
/** Max poll attempts before giving up (for testing) */
|
|
764
|
+
maxPollAttempts?: number;
|
|
765
|
+
/** Poll interval, replacing the server's stated one (for testing) */
|
|
766
|
+
pollIntervalMs?: number;
|
|
747
767
|
}
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
768
|
+
/**
|
|
769
|
+
* The outcome of finishing a device authorization.
|
|
770
|
+
*
|
|
771
|
+
* It carries no token material. `completeDeviceLogin` stores the session
|
|
772
|
+
* itself, so the credential file keeps exactly one writer and a caller can
|
|
773
|
+
* neither persist nor leak what came back.
|
|
774
|
+
*
|
|
775
|
+
* `pending` and `slow_down` both mean the window closed with the approval
|
|
776
|
+
* still outstanding: the device code is untouched, so the same code can be
|
|
777
|
+
* handed back in. `slow_down` is that same situation with the server asking
|
|
778
|
+
* for a wider gap before the next attempt.
|
|
779
|
+
*/
|
|
780
|
+
type DeviceLoginResult = {
|
|
781
|
+
status: 'ok';
|
|
753
782
|
} | {
|
|
754
|
-
success: false;
|
|
755
783
|
status: 'pending';
|
|
756
784
|
} | {
|
|
757
|
-
|
|
785
|
+
status: 'slow_down';
|
|
786
|
+
} | {
|
|
787
|
+
status: 'denied';
|
|
788
|
+
} | {
|
|
789
|
+
status: 'expired';
|
|
790
|
+
} | {
|
|
758
791
|
status: 'error';
|
|
759
792
|
error: string;
|
|
760
793
|
};
|
|
794
|
+
interface CompleteDeviceLoginOptions {
|
|
795
|
+
/** App to poll. Defaults to the resolved app URL. */
|
|
796
|
+
url?: string;
|
|
797
|
+
/** Stop polling after this long. */
|
|
798
|
+
timeoutMs?: number;
|
|
799
|
+
/** Wait between polls, before any `slow_down` widens it. */
|
|
800
|
+
intervalMs?: number;
|
|
801
|
+
/** Override fetch for testing */
|
|
802
|
+
fetch?: typeof globalThis.fetch;
|
|
803
|
+
/** Max poll attempts before giving up (for testing) */
|
|
804
|
+
maxPollAttempts?: number;
|
|
805
|
+
}
|
|
761
806
|
declare function loginCommand(options: LoginCommandOptions): Promise<void>;
|
|
762
807
|
/**
|
|
763
|
-
*
|
|
764
|
-
* First step of the device code flow — returns data needed to show
|
|
765
|
-
* the user a code and URL, then poll for the token.
|
|
766
|
-
*/
|
|
767
|
-
declare function requestDeviceCode(options?: DeviceCodeOptions): Promise<DeviceCodeResult>;
|
|
768
|
-
/**
|
|
769
|
-
* Poll the auth server until the device code is authorized, times out, or fails.
|
|
770
|
-
* Second step of the device code flow.
|
|
771
|
-
*
|
|
772
|
-
* On success: writes config and returns authenticated result.
|
|
773
|
-
* On timeout: returns pending (NOT an error — caller can retry).
|
|
774
|
-
* On real error (denied, expired): returns error result.
|
|
808
|
+
* Poll a device authorization to its end and store the session it yields.
|
|
775
809
|
*
|
|
776
|
-
*
|
|
777
|
-
*
|
|
778
|
-
*
|
|
810
|
+
* Split out from `login` so a caller holding only a device code can finish an
|
|
811
|
+
* authorization that is already under way. `login` cannot serve that: it
|
|
812
|
+
* starts a fresh authorization on every call, which would strand the code the
|
|
813
|
+
* person is looking at.
|
|
779
814
|
*/
|
|
780
|
-
declare function
|
|
815
|
+
declare function completeDeviceLogin(deviceCode: string, options?: CompleteDeviceLoginOptions): Promise<DeviceLoginResult>;
|
|
816
|
+
declare function login(options?: LoginOptions): Promise<LoginResult>;
|
|
781
817
|
|
|
782
818
|
interface LogoutCommandOptions extends GlobalOptions {
|
|
783
819
|
json?: boolean;
|
|
784
820
|
}
|
|
785
821
|
declare function logoutCommand(options: LogoutCommandOptions): Promise<void>;
|
|
822
|
+
/**
|
|
823
|
+
* Revoke the stored refresh token, then drop the local config.
|
|
824
|
+
*
|
|
825
|
+
* Revocation first, because deleting the file alone would leave a credential
|
|
826
|
+
* alive on the server that nothing can ever reach to retire. It is best
|
|
827
|
+
* effort: a logout on a plane still has to clear the machine.
|
|
828
|
+
*/
|
|
829
|
+
declare function logout(): Promise<{
|
|
830
|
+
deleted: boolean;
|
|
831
|
+
}>;
|
|
786
832
|
|
|
787
833
|
declare function whoami(): Promise<{
|
|
788
834
|
userId: string;
|
|
@@ -3693,7 +3739,7 @@ interface paths {
|
|
|
3693
3739
|
put?: never;
|
|
3694
3740
|
/**
|
|
3695
3741
|
* Deploy settings
|
|
3696
|
-
* @description Start a deployment for a specific settings entry. Detects platform from the settings.
|
|
3742
|
+
* @description Start a deployment for a specific settings entry. Detects platform from the settings. The body is optional and carries only `humanText`, the reason for the change, which becomes the description of the release this deploy produces; it is ignored when the release already has one.
|
|
3697
3743
|
*/
|
|
3698
3744
|
post: {
|
|
3699
3745
|
parameters: {
|
|
@@ -3706,7 +3752,11 @@ interface paths {
|
|
|
3706
3752
|
};
|
|
3707
3753
|
cookie?: never;
|
|
3708
3754
|
};
|
|
3709
|
-
requestBody?:
|
|
3755
|
+
requestBody?: {
|
|
3756
|
+
content: {
|
|
3757
|
+
'application/json': components['schemas']['DeploySettingsRequest'];
|
|
3758
|
+
};
|
|
3759
|
+
};
|
|
3710
3760
|
responses: {
|
|
3711
3761
|
/** @description Deployment started */
|
|
3712
3762
|
201: {
|
|
@@ -6845,8 +6895,9 @@ interface paths {
|
|
|
6845
6895
|
[name: string]: unknown;
|
|
6846
6896
|
};
|
|
6847
6897
|
content: {
|
|
6848
|
-
'application/json':
|
|
6849
|
-
|
|
6898
|
+
'application/json':
|
|
6899
|
+
| components['schemas']['BillingDetailsResponse']
|
|
6900
|
+
| null;
|
|
6850
6901
|
};
|
|
6851
6902
|
};
|
|
6852
6903
|
/** @description Unauthorized */
|
|
@@ -7434,13 +7485,14 @@ interface paths {
|
|
|
7434
7485
|
};
|
|
7435
7486
|
/**
|
|
7436
7487
|
* List flow releases
|
|
7437
|
-
* @description List the release history for a flow across all of its deployment lineages, newest first, paginated. Each entry is a deployed version joined to its parent deployment (slug and type). Requires member role.
|
|
7488
|
+
* @description List the release history for a flow across all of its deployment lineages, newest first, paginated. Each entry is a deployed version joined to its parent deployment (slug and type). `rationale=true` joins each row's stored rationale summary on, which requires the `hub` feature; without it the `rationale` key is absent from every row rather than null, and no feature beyond member role is needed. Requires member role.
|
|
7438
7489
|
*/
|
|
7439
7490
|
get: {
|
|
7440
7491
|
parameters: {
|
|
7441
7492
|
query?: {
|
|
7442
7493
|
limit?: number;
|
|
7443
7494
|
offset?: number | null;
|
|
7495
|
+
rationale?: 'true' | 'false';
|
|
7444
7496
|
};
|
|
7445
7497
|
header?: never;
|
|
7446
7498
|
path: {
|
|
@@ -7506,6 +7558,184 @@ interface paths {
|
|
|
7506
7558
|
patch?: never;
|
|
7507
7559
|
trace?: never;
|
|
7508
7560
|
};
|
|
7561
|
+
'/api/projects/{projectId}/flows/{flowId}/releases/{versionId}': {
|
|
7562
|
+
parameters: {
|
|
7563
|
+
query?: never;
|
|
7564
|
+
header?: never;
|
|
7565
|
+
path?: never;
|
|
7566
|
+
cookie?: never;
|
|
7567
|
+
};
|
|
7568
|
+
/**
|
|
7569
|
+
* Read one release in full
|
|
7570
|
+
* @description One release of this flow with its rationale and its diff. The path segment is either the spine version id (`ver_...`) or the flow-unique spine number, and the route decides which it was, so a caller holding only the number needs no lookup first. The diff is computed server-side from the two stored snapshots and is never accepted from a caller; its predecessor is the next LOWER spine number, not the previous row by time, because spine rows are reused across redeploys of identical content. `diff.text` is rendered from masked content, so an empty string can still mean the releases differ inside an inline secret: `diff.contentIdentical`, compared over the unmasked hashes, is the trustworthy answer. `diff` is null for the flow's oldest release. An unknown address, a sibling flow's version, and an autosave revision all answer 404 alike. Requires member role and the `hub` feature.
|
|
7571
|
+
*/
|
|
7572
|
+
get: {
|
|
7573
|
+
parameters: {
|
|
7574
|
+
query?: never;
|
|
7575
|
+
header?: never;
|
|
7576
|
+
path: {
|
|
7577
|
+
projectId: string;
|
|
7578
|
+
flowId: string;
|
|
7579
|
+
/** @description Spine version id of the release (ver_...) or its spine number */
|
|
7580
|
+
versionId: string;
|
|
7581
|
+
};
|
|
7582
|
+
cookie?: never;
|
|
7583
|
+
};
|
|
7584
|
+
requestBody?: never;
|
|
7585
|
+
responses: {
|
|
7586
|
+
/** @description The release, its rationale, and its diff */
|
|
7587
|
+
200: {
|
|
7588
|
+
headers: {
|
|
7589
|
+
[name: string]: unknown;
|
|
7590
|
+
};
|
|
7591
|
+
content: {
|
|
7592
|
+
'application/json': components['schemas']['ReleaseDetailResponse'];
|
|
7593
|
+
};
|
|
7594
|
+
};
|
|
7595
|
+
/** @description Invalid release reference */
|
|
7596
|
+
400: {
|
|
7597
|
+
headers: {
|
|
7598
|
+
[name: string]: unknown;
|
|
7599
|
+
};
|
|
7600
|
+
content: {
|
|
7601
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7602
|
+
};
|
|
7603
|
+
};
|
|
7604
|
+
/** @description Unauthorized */
|
|
7605
|
+
401: {
|
|
7606
|
+
headers: {
|
|
7607
|
+
[name: string]: unknown;
|
|
7608
|
+
};
|
|
7609
|
+
content: {
|
|
7610
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7611
|
+
};
|
|
7612
|
+
};
|
|
7613
|
+
/** @description Forbidden */
|
|
7614
|
+
403: {
|
|
7615
|
+
headers: {
|
|
7616
|
+
[name: string]: unknown;
|
|
7617
|
+
};
|
|
7618
|
+
content: {
|
|
7619
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7620
|
+
};
|
|
7621
|
+
};
|
|
7622
|
+
/** @description Not found */
|
|
7623
|
+
404: {
|
|
7624
|
+
headers: {
|
|
7625
|
+
[name: string]: unknown;
|
|
7626
|
+
};
|
|
7627
|
+
content: {
|
|
7628
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7629
|
+
};
|
|
7630
|
+
};
|
|
7631
|
+
/** @description Rate limited */
|
|
7632
|
+
429: {
|
|
7633
|
+
headers: {
|
|
7634
|
+
[name: string]: unknown;
|
|
7635
|
+
};
|
|
7636
|
+
content: {
|
|
7637
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7638
|
+
};
|
|
7639
|
+
};
|
|
7640
|
+
};
|
|
7641
|
+
};
|
|
7642
|
+
put?: never;
|
|
7643
|
+
post?: never;
|
|
7644
|
+
delete?: never;
|
|
7645
|
+
options?: never;
|
|
7646
|
+
head?: never;
|
|
7647
|
+
patch?: never;
|
|
7648
|
+
trace?: never;
|
|
7649
|
+
};
|
|
7650
|
+
'/api/projects/{projectId}/flows/{flowId}/releases/{versionId}/content': {
|
|
7651
|
+
parameters: {
|
|
7652
|
+
query?: never;
|
|
7653
|
+
header?: never;
|
|
7654
|
+
path?: never;
|
|
7655
|
+
cookie?: never;
|
|
7656
|
+
};
|
|
7657
|
+
/**
|
|
7658
|
+
* Read a release snapshot
|
|
7659
|
+
* @description The flow config one release of this flow froze, addressed by its spine version id. This is the only route that serves a release snapshot: the positional `/versions/{versionNumber}` route numbers the autosave revisions, a disjoint set of rows, so a release number handed to it addresses an unrelated revision or nothing. Inline secret literals are masked. An unknown id, a sibling flow's version, and an autosave revision all answer 404 alike. Requires member role and the `hub` feature.
|
|
7660
|
+
*/
|
|
7661
|
+
get: {
|
|
7662
|
+
parameters: {
|
|
7663
|
+
query?: never;
|
|
7664
|
+
header?: never;
|
|
7665
|
+
path: {
|
|
7666
|
+
projectId: string;
|
|
7667
|
+
flowId: string;
|
|
7668
|
+
/** @description Spine version ID of the release (ver_...) */
|
|
7669
|
+
versionId: string;
|
|
7670
|
+
};
|
|
7671
|
+
cookie?: never;
|
|
7672
|
+
};
|
|
7673
|
+
requestBody?: never;
|
|
7674
|
+
responses: {
|
|
7675
|
+
/** @description The release snapshot */
|
|
7676
|
+
200: {
|
|
7677
|
+
headers: {
|
|
7678
|
+
[name: string]: unknown;
|
|
7679
|
+
};
|
|
7680
|
+
content: {
|
|
7681
|
+
'application/json': components['schemas']['ReleaseContentResponse'];
|
|
7682
|
+
};
|
|
7683
|
+
};
|
|
7684
|
+
/** @description Invalid version id */
|
|
7685
|
+
400: {
|
|
7686
|
+
headers: {
|
|
7687
|
+
[name: string]: unknown;
|
|
7688
|
+
};
|
|
7689
|
+
content: {
|
|
7690
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7691
|
+
};
|
|
7692
|
+
};
|
|
7693
|
+
/** @description Unauthorized */
|
|
7694
|
+
401: {
|
|
7695
|
+
headers: {
|
|
7696
|
+
[name: string]: unknown;
|
|
7697
|
+
};
|
|
7698
|
+
content: {
|
|
7699
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7700
|
+
};
|
|
7701
|
+
};
|
|
7702
|
+
/** @description Forbidden */
|
|
7703
|
+
403: {
|
|
7704
|
+
headers: {
|
|
7705
|
+
[name: string]: unknown;
|
|
7706
|
+
};
|
|
7707
|
+
content: {
|
|
7708
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7709
|
+
};
|
|
7710
|
+
};
|
|
7711
|
+
/** @description Not found */
|
|
7712
|
+
404: {
|
|
7713
|
+
headers: {
|
|
7714
|
+
[name: string]: unknown;
|
|
7715
|
+
};
|
|
7716
|
+
content: {
|
|
7717
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7718
|
+
};
|
|
7719
|
+
};
|
|
7720
|
+
/** @description Rate limited */
|
|
7721
|
+
429: {
|
|
7722
|
+
headers: {
|
|
7723
|
+
[name: string]: unknown;
|
|
7724
|
+
};
|
|
7725
|
+
content: {
|
|
7726
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
7727
|
+
};
|
|
7728
|
+
};
|
|
7729
|
+
};
|
|
7730
|
+
};
|
|
7731
|
+
put?: never;
|
|
7732
|
+
post?: never;
|
|
7733
|
+
delete?: never;
|
|
7734
|
+
options?: never;
|
|
7735
|
+
head?: never;
|
|
7736
|
+
patch?: never;
|
|
7737
|
+
trace?: never;
|
|
7738
|
+
};
|
|
7509
7739
|
'/api/projects/{projectId}/flows/{flowId}/releases/annotations': {
|
|
7510
7740
|
parameters: {
|
|
7511
7741
|
query?: never;
|
|
@@ -8057,7 +8287,7 @@ interface paths {
|
|
|
8057
8287
|
};
|
|
8058
8288
|
trace?: never;
|
|
8059
8289
|
};
|
|
8060
|
-
'/api/projects/{projectId}/
|
|
8290
|
+
'/api/projects/{projectId}/knowledge': {
|
|
8061
8291
|
parameters: {
|
|
8062
8292
|
query?: never;
|
|
8063
8293
|
header?: never;
|
|
@@ -8065,35 +8295,36 @@ interface paths {
|
|
|
8065
8295
|
cookie?: never;
|
|
8066
8296
|
};
|
|
8067
8297
|
/**
|
|
8068
|
-
* List
|
|
8069
|
-
* @description
|
|
8298
|
+
* List knowledge captured in this project
|
|
8299
|
+
* @description What people wrote on the frames of a page, most recently active first. Two kinds come back together and `kind` separates them: a `thread` carries its text in messages, a `description` carries one body and cannot be replied to. `pageKey` narrows to a whole page, resolved server-side to every frame that page holds at any depth; `frameId` narrows to one frame; `markId` narrows to one mark within it and is refused without `frameId`, since a mark id alone addresses nothing. `includeMessages=true` attaches message bodies and holds the page to a much smaller ceiling, so `hasMoreEntries` is what separates a complete answer from a truncated one. `validity` says when an entry was true and `freshness` compares that against the flow’s newest release; neither is a verdict. Requires member role.
|
|
8070
8300
|
*/
|
|
8071
8301
|
get: {
|
|
8072
8302
|
parameters: {
|
|
8073
|
-
query
|
|
8074
|
-
|
|
8075
|
-
|
|
8076
|
-
|
|
8303
|
+
query?: {
|
|
8304
|
+
pageKey?: string;
|
|
8305
|
+
frameId?: string;
|
|
8306
|
+
markId?: string;
|
|
8307
|
+
includeMessages?: 'true' | 'false';
|
|
8308
|
+
limit?: number;
|
|
8077
8309
|
};
|
|
8078
8310
|
header?: never;
|
|
8079
8311
|
path: {
|
|
8080
8312
|
projectId: string;
|
|
8081
|
-
flowId: string;
|
|
8082
8313
|
};
|
|
8083
8314
|
cookie?: never;
|
|
8084
8315
|
};
|
|
8085
8316
|
requestBody?: never;
|
|
8086
8317
|
responses: {
|
|
8087
|
-
/** @description
|
|
8318
|
+
/** @description Knowledge in this project */
|
|
8088
8319
|
200: {
|
|
8089
8320
|
headers: {
|
|
8090
8321
|
[name: string]: unknown;
|
|
8091
8322
|
};
|
|
8092
8323
|
content: {
|
|
8093
|
-
'application/json': components['schemas']['
|
|
8324
|
+
'application/json': components['schemas']['ListKnowledgeResponse'];
|
|
8094
8325
|
};
|
|
8095
8326
|
};
|
|
8096
|
-
/** @description Invalid
|
|
8327
|
+
/** @description Invalid query, or a mark filter with no frame */
|
|
8097
8328
|
400: {
|
|
8098
8329
|
headers: {
|
|
8099
8330
|
[name: string]: unknown;
|
|
@@ -8141,25 +8372,9 @@ interface paths {
|
|
|
8141
8372
|
};
|
|
8142
8373
|
};
|
|
8143
8374
|
put?: never;
|
|
8144
|
-
post?: never;
|
|
8145
|
-
delete?: never;
|
|
8146
|
-
options?: never;
|
|
8147
|
-
head?: never;
|
|
8148
|
-
patch?: never;
|
|
8149
|
-
trace?: never;
|
|
8150
|
-
};
|
|
8151
|
-
'/api/projects/{projectId}/flows/{flowId}/releases/summarize': {
|
|
8152
|
-
parameters: {
|
|
8153
|
-
query?: never;
|
|
8154
|
-
header?: never;
|
|
8155
|
-
path?: never;
|
|
8156
|
-
cookie?: never;
|
|
8157
|
-
};
|
|
8158
|
-
get?: never;
|
|
8159
|
-
put?: never;
|
|
8160
8375
|
/**
|
|
8161
|
-
*
|
|
8162
|
-
* @description
|
|
8376
|
+
* Open a thread on a mark or a frame
|
|
8377
|
+
* @description Open a thread on one mark of one frame, or on the frame itself with `anchorType` `page` and no `markId`, with its first message. A thread never exists empty, so `text` is required and may not be blank. `clientThreadId` and `clientMessageId` are minted by the client at compose time and are what make a replay idempotent: repeating a known `clientThreadId` hands back the existing thread and writes nothing, so an offline queue can drain repeatedly without duplicating what a person wrote once. `flowId` binds the capture to a flow or is explicitly null; a flow this project cannot see answers 404, never 403. A frame this project does not hold answers 404 with `FRAME_NOT_FOUND`, which a draining client waits on and retries, because the frame’s own write may not have landed yet. The server decides the composed anchor key, the born release, the author and the source: a client cannot assert any of them. Requires member role.
|
|
8163
8378
|
*/
|
|
8164
8379
|
post: {
|
|
8165
8380
|
parameters: {
|
|
@@ -8167,34 +8382,43 @@ interface paths {
|
|
|
8167
8382
|
header?: never;
|
|
8168
8383
|
path: {
|
|
8169
8384
|
projectId: string;
|
|
8170
|
-
flowId: string;
|
|
8171
8385
|
};
|
|
8172
8386
|
cookie?: never;
|
|
8173
8387
|
};
|
|
8174
8388
|
requestBody?: {
|
|
8175
8389
|
content: {
|
|
8176
8390
|
'application/json': {
|
|
8177
|
-
/**
|
|
8178
|
-
|
|
8179
|
-
|
|
8180
|
-
|
|
8181
|
-
|
|
8182
|
-
|
|
8183
|
-
|
|
8391
|
+
/**
|
|
8392
|
+
* @example tag
|
|
8393
|
+
* @enum {string}
|
|
8394
|
+
*/
|
|
8395
|
+
anchorType: 'tag' | 'page';
|
|
8396
|
+
/** @example frm_V1StGXR8Z5jdHi6BmyT7K */
|
|
8397
|
+
frameId: string;
|
|
8398
|
+
markId?: string;
|
|
8399
|
+
anchorLabel?: string;
|
|
8400
|
+
flowId: string | null;
|
|
8401
|
+
subjectKey?: string;
|
|
8402
|
+
spatial?: components['schemas']['KnowledgeSpatial'];
|
|
8403
|
+
/** @example ct_7f3a91 */
|
|
8404
|
+
clientThreadId: string;
|
|
8405
|
+
text: string;
|
|
8406
|
+
/** @example ct_7f3a91 */
|
|
8407
|
+
clientMessageId: string;
|
|
8184
8408
|
};
|
|
8185
8409
|
};
|
|
8186
8410
|
};
|
|
8187
8411
|
responses: {
|
|
8188
|
-
/** @description The
|
|
8189
|
-
|
|
8412
|
+
/** @description The thread, with its first message */
|
|
8413
|
+
201: {
|
|
8190
8414
|
headers: {
|
|
8191
8415
|
[name: string]: unknown;
|
|
8192
8416
|
};
|
|
8193
8417
|
content: {
|
|
8194
|
-
'application/json': components['schemas']['
|
|
8418
|
+
'application/json': components['schemas']['KnowledgeThreadResponse'];
|
|
8195
8419
|
};
|
|
8196
8420
|
};
|
|
8197
|
-
/** @description Invalid body
|
|
8421
|
+
/** @description Invalid body */
|
|
8198
8422
|
400: {
|
|
8199
8423
|
headers: {
|
|
8200
8424
|
[name: string]: unknown;
|
|
@@ -8221,7 +8445,7 @@ interface paths {
|
|
|
8221
8445
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8222
8446
|
};
|
|
8223
8447
|
};
|
|
8224
|
-
/** @description
|
|
8448
|
+
/** @description The named flow or frame is not in this project */
|
|
8225
8449
|
404: {
|
|
8226
8450
|
headers: {
|
|
8227
8451
|
[name: string]: unknown;
|
|
@@ -8239,15 +8463,6 @@ interface paths {
|
|
|
8239
8463
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8240
8464
|
};
|
|
8241
8465
|
};
|
|
8242
|
-
/** @description The model call failed or returned no usable text */
|
|
8243
|
-
502: {
|
|
8244
|
-
headers: {
|
|
8245
|
-
[name: string]: unknown;
|
|
8246
|
-
};
|
|
8247
|
-
content: {
|
|
8248
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
8249
|
-
};
|
|
8250
|
-
};
|
|
8251
8466
|
};
|
|
8252
8467
|
};
|
|
8253
8468
|
delete?: never;
|
|
@@ -8256,36 +8471,56 @@ interface paths {
|
|
|
8256
8471
|
patch?: never;
|
|
8257
8472
|
trace?: never;
|
|
8258
8473
|
};
|
|
8259
|
-
'/api/projects/{projectId}/
|
|
8474
|
+
'/api/projects/{projectId}/knowledge/{threadId}/messages': {
|
|
8260
8475
|
parameters: {
|
|
8261
8476
|
query?: never;
|
|
8262
8477
|
header?: never;
|
|
8263
8478
|
path?: never;
|
|
8264
8479
|
cookie?: never;
|
|
8265
8480
|
};
|
|
8481
|
+
get?: never;
|
|
8482
|
+
put?: never;
|
|
8266
8483
|
/**
|
|
8267
|
-
*
|
|
8268
|
-
* @description
|
|
8484
|
+
* Reply to a knowledge thread
|
|
8485
|
+
* @description Append a message to a thread and get the whole thread back, so a surface renders the new exchange without a second read. `text` may not be blank: a message cannot be cleared, so empty is invalid rather than a way to erase one. Repeating a `clientMessageId` already on the thread appends nothing and leaves `updatedAt` alone, so a retrying drain never keeps bumping a thread to the top of every list. A description has no conversation and cannot be replied to; addressing one answers 404. Requires member role.
|
|
8269
8486
|
*/
|
|
8270
|
-
|
|
8487
|
+
post: {
|
|
8271
8488
|
parameters: {
|
|
8272
8489
|
query?: never;
|
|
8273
8490
|
header?: never;
|
|
8274
8491
|
path: {
|
|
8275
8492
|
projectId: string;
|
|
8276
|
-
|
|
8493
|
+
/** @description Thread ID (thr_...) */
|
|
8494
|
+
threadId: string;
|
|
8277
8495
|
};
|
|
8278
8496
|
cookie?: never;
|
|
8279
8497
|
};
|
|
8280
|
-
requestBody?:
|
|
8498
|
+
requestBody?: {
|
|
8499
|
+
content: {
|
|
8500
|
+
'application/json': {
|
|
8501
|
+
text: string;
|
|
8502
|
+
/** @example ct_7f3a91 */
|
|
8503
|
+
clientMessageId: string;
|
|
8504
|
+
};
|
|
8505
|
+
};
|
|
8506
|
+
};
|
|
8281
8507
|
responses: {
|
|
8282
|
-
/** @description
|
|
8283
|
-
|
|
8508
|
+
/** @description The thread, with the new message */
|
|
8509
|
+
201: {
|
|
8284
8510
|
headers: {
|
|
8285
8511
|
[name: string]: unknown;
|
|
8286
8512
|
};
|
|
8287
8513
|
content: {
|
|
8288
|
-
'application/json': components['schemas']['
|
|
8514
|
+
'application/json': components['schemas']['KnowledgeThreadResponse'];
|
|
8515
|
+
};
|
|
8516
|
+
};
|
|
8517
|
+
/** @description Invalid body */
|
|
8518
|
+
400: {
|
|
8519
|
+
headers: {
|
|
8520
|
+
[name: string]: unknown;
|
|
8521
|
+
};
|
|
8522
|
+
content: {
|
|
8523
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8289
8524
|
};
|
|
8290
8525
|
};
|
|
8291
8526
|
/** @description Unauthorized */
|
|
@@ -8326,51 +8561,69 @@ interface paths {
|
|
|
8326
8561
|
};
|
|
8327
8562
|
};
|
|
8328
8563
|
};
|
|
8329
|
-
put?: never;
|
|
8330
|
-
post?: never;
|
|
8331
8564
|
delete?: never;
|
|
8332
8565
|
options?: never;
|
|
8333
8566
|
head?: never;
|
|
8334
8567
|
patch?: never;
|
|
8335
8568
|
trace?: never;
|
|
8336
8569
|
};
|
|
8337
|
-
'/api/projects/{projectId}/
|
|
8570
|
+
'/api/projects/{projectId}/knowledge/description': {
|
|
8338
8571
|
parameters: {
|
|
8339
8572
|
query?: never;
|
|
8340
8573
|
header?: never;
|
|
8341
8574
|
path?: never;
|
|
8342
8575
|
cookie?: never;
|
|
8343
8576
|
};
|
|
8577
|
+
get?: never;
|
|
8344
8578
|
/**
|
|
8345
|
-
*
|
|
8346
|
-
* @description
|
|
8579
|
+
* Write the description of a mark or a frame
|
|
8580
|
+
* @description Write the one description of one anchor, a mark or the frame itself, replacing whatever it said before. There is no id to mint: the anchor is the key, so a replayed write lands on the same row by construction, which is why this is a PUT. An empty `body` is refused rather than stored, so a drain that arrives with nothing to say can never erase what a person wrote. The response is 200 whether the description was opened or replaced. Requires member role.
|
|
8347
8581
|
*/
|
|
8348
|
-
|
|
8582
|
+
put: {
|
|
8349
8583
|
parameters: {
|
|
8350
|
-
query?:
|
|
8351
|
-
/** @description ISO start of the time range. */
|
|
8352
|
-
from?: string;
|
|
8353
|
-
/** @description ISO end of the time range. */
|
|
8354
|
-
to?: string;
|
|
8355
|
-
limit?: number;
|
|
8356
|
-
offset?: number | null;
|
|
8357
|
-
};
|
|
8584
|
+
query?: never;
|
|
8358
8585
|
header?: never;
|
|
8359
8586
|
path: {
|
|
8360
8587
|
projectId: string;
|
|
8361
|
-
deploymentId: string;
|
|
8362
8588
|
};
|
|
8363
8589
|
cookie?: never;
|
|
8364
8590
|
};
|
|
8365
|
-
requestBody?:
|
|
8591
|
+
requestBody?: {
|
|
8592
|
+
content: {
|
|
8593
|
+
'application/json': {
|
|
8594
|
+
/**
|
|
8595
|
+
* @example tag
|
|
8596
|
+
* @enum {string}
|
|
8597
|
+
*/
|
|
8598
|
+
anchorType: 'tag' | 'page';
|
|
8599
|
+
/** @example frm_V1StGXR8Z5jdHi6BmyT7K */
|
|
8600
|
+
frameId: string;
|
|
8601
|
+
markId?: string;
|
|
8602
|
+
anchorLabel?: string;
|
|
8603
|
+
flowId: string | null;
|
|
8604
|
+
subjectKey?: string;
|
|
8605
|
+
spatial?: components['schemas']['KnowledgeSpatial'];
|
|
8606
|
+
body: string;
|
|
8607
|
+
};
|
|
8608
|
+
};
|
|
8609
|
+
};
|
|
8366
8610
|
responses: {
|
|
8367
|
-
/** @description
|
|
8611
|
+
/** @description The stored description */
|
|
8368
8612
|
200: {
|
|
8369
8613
|
headers: {
|
|
8370
8614
|
[name: string]: unknown;
|
|
8371
8615
|
};
|
|
8372
8616
|
content: {
|
|
8373
|
-
'application/json': components['schemas']['
|
|
8617
|
+
'application/json': components['schemas']['KnowledgeDescriptionResponse'];
|
|
8618
|
+
};
|
|
8619
|
+
};
|
|
8620
|
+
/** @description Invalid body */
|
|
8621
|
+
400: {
|
|
8622
|
+
headers: {
|
|
8623
|
+
[name: string]: unknown;
|
|
8624
|
+
};
|
|
8625
|
+
content: {
|
|
8626
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8374
8627
|
};
|
|
8375
8628
|
};
|
|
8376
8629
|
/** @description Unauthorized */
|
|
@@ -8391,7 +8644,7 @@ interface paths {
|
|
|
8391
8644
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8392
8645
|
};
|
|
8393
8646
|
};
|
|
8394
|
-
/** @description
|
|
8647
|
+
/** @description The named flow or frame is not in this project */
|
|
8395
8648
|
404: {
|
|
8396
8649
|
headers: {
|
|
8397
8650
|
[name: string]: unknown;
|
|
@@ -8400,9 +8653,17 @@ interface paths {
|
|
|
8400
8653
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8401
8654
|
};
|
|
8402
8655
|
};
|
|
8656
|
+
/** @description Rate limited */
|
|
8657
|
+
429: {
|
|
8658
|
+
headers: {
|
|
8659
|
+
[name: string]: unknown;
|
|
8660
|
+
};
|
|
8661
|
+
content: {
|
|
8662
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8663
|
+
};
|
|
8664
|
+
};
|
|
8403
8665
|
};
|
|
8404
8666
|
};
|
|
8405
|
-
put?: never;
|
|
8406
8667
|
post?: never;
|
|
8407
8668
|
delete?: never;
|
|
8408
8669
|
options?: never;
|
|
@@ -8410,38 +8671,48 @@ interface paths {
|
|
|
8410
8671
|
patch?: never;
|
|
8411
8672
|
trace?: never;
|
|
8412
8673
|
};
|
|
8413
|
-
'/api/projects/{projectId}/
|
|
8674
|
+
'/api/projects/{projectId}/frames': {
|
|
8414
8675
|
parameters: {
|
|
8415
8676
|
query?: never;
|
|
8416
8677
|
header?: never;
|
|
8417
8678
|
path?: never;
|
|
8418
8679
|
cookie?: never;
|
|
8419
8680
|
};
|
|
8420
|
-
get?: never;
|
|
8421
|
-
put?: never;
|
|
8422
8681
|
/**
|
|
8423
|
-
*
|
|
8424
|
-
* @description
|
|
8682
|
+
* List the frames of a page, or of the whole project
|
|
8683
|
+
* @description A frame is a named rectangle with marks inside it, the spatial unit of a measurement plan. Naming a `pageKey` returns that page’s frames at any depth, marks and all, newest updated first: the walk starts at the page’s top-level frames and descends containment, so a child is reachable through its parent rather than by carrying a page of its own. Naming no page returns every live frame of the project WITHOUT its marks, which is what makes that read cheap enough to answer "what does this project have": the marks are the bulk of a frame and a listing never renders them. That lean read asks nothing about containment, so a frame whose parent cannot be resolved still appears. Requires member role.
|
|
8425
8684
|
*/
|
|
8426
|
-
|
|
8685
|
+
get: {
|
|
8427
8686
|
parameters: {
|
|
8428
|
-
query?:
|
|
8687
|
+
query?: {
|
|
8688
|
+
pageKey?: string;
|
|
8689
|
+
};
|
|
8429
8690
|
header?: never;
|
|
8430
8691
|
path: {
|
|
8431
8692
|
projectId: string;
|
|
8432
|
-
deploymentId: string;
|
|
8433
8693
|
};
|
|
8434
8694
|
cookie?: never;
|
|
8435
8695
|
};
|
|
8436
8696
|
requestBody?: never;
|
|
8437
8697
|
responses: {
|
|
8438
|
-
/** @description
|
|
8698
|
+
/** @description The page’s frames with their marks, or the project’s frames without them */
|
|
8439
8699
|
200: {
|
|
8440
8700
|
headers: {
|
|
8441
8701
|
[name: string]: unknown;
|
|
8442
8702
|
};
|
|
8443
8703
|
content: {
|
|
8444
|
-
'application/json':
|
|
8704
|
+
'application/json':
|
|
8705
|
+
| components['schemas']['FrameListResponse']
|
|
8706
|
+
| components['schemas']['FrameLeanListResponse'];
|
|
8707
|
+
};
|
|
8708
|
+
};
|
|
8709
|
+
/** @description Validation error */
|
|
8710
|
+
400: {
|
|
8711
|
+
headers: {
|
|
8712
|
+
[name: string]: unknown;
|
|
8713
|
+
};
|
|
8714
|
+
content: {
|
|
8715
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8445
8716
|
};
|
|
8446
8717
|
};
|
|
8447
8718
|
/** @description Unauthorized */
|
|
@@ -8471,15 +8742,26 @@ interface paths {
|
|
|
8471
8742
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8472
8743
|
};
|
|
8473
8744
|
};
|
|
8745
|
+
/** @description Rate limited */
|
|
8746
|
+
429: {
|
|
8747
|
+
headers: {
|
|
8748
|
+
[name: string]: unknown;
|
|
8749
|
+
};
|
|
8750
|
+
content: {
|
|
8751
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8752
|
+
};
|
|
8753
|
+
};
|
|
8474
8754
|
};
|
|
8475
8755
|
};
|
|
8756
|
+
put?: never;
|
|
8757
|
+
post?: never;
|
|
8476
8758
|
delete?: never;
|
|
8477
8759
|
options?: never;
|
|
8478
8760
|
head?: never;
|
|
8479
8761
|
patch?: never;
|
|
8480
8762
|
trace?: never;
|
|
8481
8763
|
};
|
|
8482
|
-
'/api/projects/{projectId}/
|
|
8764
|
+
'/api/projects/{projectId}/frames/{frameId}': {
|
|
8483
8765
|
parameters: {
|
|
8484
8766
|
query?: never;
|
|
8485
8767
|
header?: never;
|
|
@@ -8487,34 +8769,32 @@ interface paths {
|
|
|
8487
8769
|
cookie?: never;
|
|
8488
8770
|
};
|
|
8489
8771
|
/**
|
|
8490
|
-
*
|
|
8491
|
-
* @description
|
|
8772
|
+
* Read one frame
|
|
8773
|
+
* @description One frame with its marks. A frame of another project reads back as nothing and answers 404, never 403, so this route cannot become an oracle for what exists elsewhere. A deleted frame is gone to every read. Requires member role.
|
|
8492
8774
|
*/
|
|
8493
8775
|
get: {
|
|
8494
8776
|
parameters: {
|
|
8495
|
-
query?:
|
|
8496
|
-
/** @description Time window for the usage summary. */
|
|
8497
|
-
period?: '1h' | '24h' | '7d' | '30d';
|
|
8498
|
-
};
|
|
8777
|
+
query?: never;
|
|
8499
8778
|
header?: never;
|
|
8500
8779
|
path: {
|
|
8501
8780
|
projectId: string;
|
|
8502
|
-
|
|
8781
|
+
/** @description Frame ID (frm_...) */
|
|
8782
|
+
frameId: string;
|
|
8503
8783
|
};
|
|
8504
8784
|
cookie?: never;
|
|
8505
8785
|
};
|
|
8506
8786
|
requestBody?: never;
|
|
8507
8787
|
responses: {
|
|
8508
|
-
/** @description
|
|
8788
|
+
/** @description The frame */
|
|
8509
8789
|
200: {
|
|
8510
8790
|
headers: {
|
|
8511
8791
|
[name: string]: unknown;
|
|
8512
8792
|
};
|
|
8513
8793
|
content: {
|
|
8514
|
-
'application/json': components['schemas']['
|
|
8794
|
+
'application/json': components['schemas']['Frame'];
|
|
8515
8795
|
};
|
|
8516
8796
|
};
|
|
8517
|
-
/** @description
|
|
8797
|
+
/** @description The path segment does not address a frame */
|
|
8518
8798
|
400: {
|
|
8519
8799
|
headers: {
|
|
8520
8800
|
[name: string]: unknown;
|
|
@@ -8550,46 +8830,58 @@ interface paths {
|
|
|
8550
8830
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8551
8831
|
};
|
|
8552
8832
|
};
|
|
8833
|
+
/** @description Rate limited */
|
|
8834
|
+
429: {
|
|
8835
|
+
headers: {
|
|
8836
|
+
[name: string]: unknown;
|
|
8837
|
+
};
|
|
8838
|
+
content: {
|
|
8839
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8840
|
+
};
|
|
8841
|
+
};
|
|
8553
8842
|
};
|
|
8554
8843
|
};
|
|
8555
|
-
put?: never;
|
|
8556
|
-
post?: never;
|
|
8557
|
-
delete?: never;
|
|
8558
|
-
options?: never;
|
|
8559
|
-
head?: never;
|
|
8560
|
-
patch?: never;
|
|
8561
|
-
trace?: never;
|
|
8562
|
-
};
|
|
8563
|
-
'/api/projects/{projectId}/flows/{flowId}/custom-domains': {
|
|
8564
|
-
parameters: {
|
|
8565
|
-
query?: never;
|
|
8566
|
-
header?: never;
|
|
8567
|
-
path?: never;
|
|
8568
|
-
cookie?: never;
|
|
8569
|
-
};
|
|
8570
8844
|
/**
|
|
8571
|
-
*
|
|
8572
|
-
* @description
|
|
8845
|
+
* Create or replace one frame
|
|
8846
|
+
* @description The path is the identity, so the body carries no id: a create is a write to an absent row at `baseVersion` 0 and everything else is a replace. `clientWriteId` is minted at compose time and is what makes a replayed drain exact: a write whose id already produced the stored version landed once and is answered with that version, writing nothing, so an offline queue drains repeatedly without turning one edit into two versions. A write against a version someone else has moved past answers 409 `FRAME_VERSION_CONFLICT` carrying the head, which is what lets a client raise keep-mine against load-theirs on the one frame that conflicted instead of dropping what a person drew. A name another live frame already holds is a distinct 409 `FRAME_NAME_EXISTS`. A relation naming a frame this project does not hold, or one that would place a frame inside itself, is 400 `INVALID_FRAME`. The screenshot is never touched here: a frame write carries no capture. Requires member role.
|
|
8573
8847
|
*/
|
|
8574
|
-
|
|
8848
|
+
put: {
|
|
8575
8849
|
parameters: {
|
|
8576
8850
|
query?: never;
|
|
8577
8851
|
header?: never;
|
|
8578
8852
|
path: {
|
|
8579
8853
|
projectId: string;
|
|
8580
|
-
|
|
8854
|
+
/** @description Frame ID (frm_...) */
|
|
8855
|
+
frameId: string;
|
|
8581
8856
|
};
|
|
8582
8857
|
cookie?: never;
|
|
8583
8858
|
};
|
|
8584
|
-
requestBody?:
|
|
8859
|
+
requestBody?: {
|
|
8860
|
+
content: {
|
|
8861
|
+
'application/json': {
|
|
8862
|
+
frame: components['schemas']['FrameInput'];
|
|
8863
|
+
baseVersion: number;
|
|
8864
|
+
clientWriteId: string;
|
|
8865
|
+
};
|
|
8866
|
+
};
|
|
8867
|
+
};
|
|
8585
8868
|
responses: {
|
|
8586
|
-
/** @description
|
|
8869
|
+
/** @description The stored version */
|
|
8587
8870
|
200: {
|
|
8588
8871
|
headers: {
|
|
8589
8872
|
[name: string]: unknown;
|
|
8590
8873
|
};
|
|
8591
8874
|
content: {
|
|
8592
|
-
'application/json': components['schemas']['
|
|
8875
|
+
'application/json': components['schemas']['PutFrameResponse'];
|
|
8876
|
+
};
|
|
8877
|
+
};
|
|
8878
|
+
/** @description Invalid body, a bad relation, or a path segment that addresses no frame */
|
|
8879
|
+
400: {
|
|
8880
|
+
headers: {
|
|
8881
|
+
[name: string]: unknown;
|
|
8882
|
+
};
|
|
8883
|
+
content: {
|
|
8884
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8593
8885
|
};
|
|
8594
8886
|
};
|
|
8595
8887
|
/** @description Unauthorized */
|
|
@@ -8610,39 +8902,63 @@ interface paths {
|
|
|
8610
8902
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8611
8903
|
};
|
|
8612
8904
|
};
|
|
8905
|
+
/** @description Not found */
|
|
8906
|
+
404: {
|
|
8907
|
+
headers: {
|
|
8908
|
+
[name: string]: unknown;
|
|
8909
|
+
};
|
|
8910
|
+
content: {
|
|
8911
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8912
|
+
};
|
|
8913
|
+
};
|
|
8914
|
+
/** @description A stale base version, carrying the head, or a name another live frame already holds. Only the version conflict carries `head`: a name clash needs no frame to resolve, since the client already knows the name it sent. */
|
|
8915
|
+
409: {
|
|
8916
|
+
headers: {
|
|
8917
|
+
[name: string]: unknown;
|
|
8918
|
+
};
|
|
8919
|
+
content: {
|
|
8920
|
+
'application/json':
|
|
8921
|
+
| components['schemas']['FrameConflictResponse']
|
|
8922
|
+
| components['schemas']['ErrorResponse'];
|
|
8923
|
+
};
|
|
8924
|
+
};
|
|
8925
|
+
/** @description Rate limited */
|
|
8926
|
+
429: {
|
|
8927
|
+
headers: {
|
|
8928
|
+
[name: string]: unknown;
|
|
8929
|
+
};
|
|
8930
|
+
content: {
|
|
8931
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8932
|
+
};
|
|
8933
|
+
};
|
|
8613
8934
|
};
|
|
8614
8935
|
};
|
|
8615
|
-
|
|
8936
|
+
post?: never;
|
|
8616
8937
|
/**
|
|
8617
|
-
*
|
|
8618
|
-
* @description
|
|
8938
|
+
* Delete one frame
|
|
8939
|
+
* @description Soft-delete the frame and, transitively, every variation of what this delete removes. Children are not variations and survive: each live frame under a removed one is re-parented to its nearest live ancestor in the same transaction, and one left with no live ancestor becomes top-level and inherits the page it hung under, so nothing is left unreachable. Those re-parents are server writes that bump their own versions, so a client still holding a pre-delete version meets a conflict carrying the new parent. A frame this project does not hold answers 404: a delete that removed nothing is not a delete that succeeded. Requires member role.
|
|
8619
8940
|
*/
|
|
8620
|
-
|
|
8941
|
+
delete: {
|
|
8621
8942
|
parameters: {
|
|
8622
8943
|
query?: never;
|
|
8623
8944
|
header?: never;
|
|
8624
8945
|
path: {
|
|
8625
8946
|
projectId: string;
|
|
8626
|
-
|
|
8947
|
+
/** @description Frame ID (frm_...) */
|
|
8948
|
+
frameId: string;
|
|
8627
8949
|
};
|
|
8628
8950
|
cookie?: never;
|
|
8629
8951
|
};
|
|
8630
|
-
requestBody?:
|
|
8631
|
-
content: {
|
|
8632
|
-
'application/json': components['schemas']['CreateCustomDomainRequest'];
|
|
8633
|
-
};
|
|
8634
|
-
};
|
|
8952
|
+
requestBody?: never;
|
|
8635
8953
|
responses: {
|
|
8636
|
-
/** @description
|
|
8637
|
-
|
|
8954
|
+
/** @description The frame is deleted */
|
|
8955
|
+
204: {
|
|
8638
8956
|
headers: {
|
|
8639
8957
|
[name: string]: unknown;
|
|
8640
8958
|
};
|
|
8641
|
-
content
|
|
8642
|
-
'application/json': components['schemas']['CustomDomain'];
|
|
8643
|
-
};
|
|
8959
|
+
content?: never;
|
|
8644
8960
|
};
|
|
8645
|
-
/** @description
|
|
8961
|
+
/** @description The path segment does not address a frame */
|
|
8646
8962
|
400: {
|
|
8647
8963
|
headers: {
|
|
8648
8964
|
[name: string]: unknown;
|
|
@@ -8678,8 +8994,8 @@ interface paths {
|
|
|
8678
8994
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8679
8995
|
};
|
|
8680
8996
|
};
|
|
8681
|
-
/** @description
|
|
8682
|
-
|
|
8997
|
+
/** @description Rate limited */
|
|
8998
|
+
429: {
|
|
8683
8999
|
headers: {
|
|
8684
9000
|
[name: string]: unknown;
|
|
8685
9001
|
};
|
|
@@ -8689,13 +9005,12 @@ interface paths {
|
|
|
8689
9005
|
};
|
|
8690
9006
|
};
|
|
8691
9007
|
};
|
|
8692
|
-
delete?: never;
|
|
8693
9008
|
options?: never;
|
|
8694
9009
|
head?: never;
|
|
8695
9010
|
patch?: never;
|
|
8696
9011
|
trace?: never;
|
|
8697
9012
|
};
|
|
8698
|
-
'/api/projects/{projectId}/
|
|
9013
|
+
'/api/projects/{projectId}/frames/{frameId}/screenshot': {
|
|
8699
9014
|
parameters: {
|
|
8700
9015
|
query?: never;
|
|
8701
9016
|
header?: never;
|
|
@@ -8704,30 +9019,47 @@ interface paths {
|
|
|
8704
9019
|
};
|
|
8705
9020
|
get?: never;
|
|
8706
9021
|
put?: never;
|
|
8707
|
-
post?: never;
|
|
8708
9022
|
/**
|
|
8709
|
-
*
|
|
8710
|
-
* @description
|
|
9023
|
+
* Store the capture of one frame
|
|
9024
|
+
* @description Store one screenshot and set it on its frame. The image arrives as base64 rather than multipart, because the extension relay carries string bodies only. The server decides everything about the bytes: it decodes them, counts the DECODED length against a 4 MB cap, reads the type from the file’s own magic bytes, and hashes them, so nothing the client claims about size or type is consulted. Captures are deduplicated by content within a project: identical pixels resolve to one asset and one upload, and `reused` says whether that happened, which is the common answer rather than the rare one because re-capturing an unchanged frame produces identical bytes. A body past the cap is 413 `PAYLOAD_TOO_LARGE` and one that is not a PNG is 415 `UNSUPPORTED_MEDIA_TYPE`. The capture bumps no frame version: it is not an edit, so an upload never conflicts with the frame write the client queued beside it. Requires member role.
|
|
8711
9025
|
*/
|
|
8712
|
-
|
|
9026
|
+
post: {
|
|
8713
9027
|
parameters: {
|
|
8714
9028
|
query?: never;
|
|
8715
9029
|
header?: never;
|
|
8716
9030
|
path: {
|
|
8717
9031
|
projectId: string;
|
|
8718
|
-
|
|
8719
|
-
|
|
9032
|
+
/** @description Frame ID (frm_...) */
|
|
9033
|
+
frameId: string;
|
|
8720
9034
|
};
|
|
8721
9035
|
cookie?: never;
|
|
8722
9036
|
};
|
|
8723
|
-
requestBody?:
|
|
9037
|
+
requestBody?: {
|
|
9038
|
+
content: {
|
|
9039
|
+
'application/json': {
|
|
9040
|
+
imageBase64: string;
|
|
9041
|
+
meta: components['schemas']['FrameScreenshotMeta'];
|
|
9042
|
+
};
|
|
9043
|
+
};
|
|
9044
|
+
};
|
|
8724
9045
|
responses: {
|
|
8725
|
-
/** @description
|
|
8726
|
-
|
|
9046
|
+
/** @description The asset the bytes resolved to, and whether it already existed */
|
|
9047
|
+
200: {
|
|
8727
9048
|
headers: {
|
|
8728
9049
|
[name: string]: unknown;
|
|
8729
9050
|
};
|
|
8730
|
-
content
|
|
9051
|
+
content: {
|
|
9052
|
+
'application/json': components['schemas']['ScreenshotUploadResponse'];
|
|
9053
|
+
};
|
|
9054
|
+
};
|
|
9055
|
+
/** @description Invalid body, or a path segment that addresses no frame */
|
|
9056
|
+
400: {
|
|
9057
|
+
headers: {
|
|
9058
|
+
[name: string]: unknown;
|
|
9059
|
+
};
|
|
9060
|
+
content: {
|
|
9061
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9062
|
+
};
|
|
8731
9063
|
};
|
|
8732
9064
|
/** @description Unauthorized */
|
|
8733
9065
|
401: {
|
|
@@ -8747,14 +9079,51 @@ interface paths {
|
|
|
8747
9079
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8748
9080
|
};
|
|
8749
9081
|
};
|
|
9082
|
+
/** @description This project does not hold the named frame */
|
|
9083
|
+
404: {
|
|
9084
|
+
headers: {
|
|
9085
|
+
[name: string]: unknown;
|
|
9086
|
+
};
|
|
9087
|
+
content: {
|
|
9088
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9089
|
+
};
|
|
9090
|
+
};
|
|
9091
|
+
/** @description The decoded image is past the 4 MB cap */
|
|
9092
|
+
413: {
|
|
9093
|
+
headers: {
|
|
9094
|
+
[name: string]: unknown;
|
|
9095
|
+
};
|
|
9096
|
+
content: {
|
|
9097
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9098
|
+
};
|
|
9099
|
+
};
|
|
9100
|
+
/** @description The bytes are not a PNG */
|
|
9101
|
+
415: {
|
|
9102
|
+
headers: {
|
|
9103
|
+
[name: string]: unknown;
|
|
9104
|
+
};
|
|
9105
|
+
content: {
|
|
9106
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9107
|
+
};
|
|
9108
|
+
};
|
|
9109
|
+
/** @description Rate limited */
|
|
9110
|
+
429: {
|
|
9111
|
+
headers: {
|
|
9112
|
+
[name: string]: unknown;
|
|
9113
|
+
};
|
|
9114
|
+
content: {
|
|
9115
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9116
|
+
};
|
|
9117
|
+
};
|
|
8750
9118
|
};
|
|
8751
9119
|
};
|
|
9120
|
+
delete?: never;
|
|
8752
9121
|
options?: never;
|
|
8753
9122
|
head?: never;
|
|
8754
9123
|
patch?: never;
|
|
8755
9124
|
trace?: never;
|
|
8756
9125
|
};
|
|
8757
|
-
'/api/projects/{projectId}/
|
|
9126
|
+
'/api/projects/{projectId}/assets/{assetId}': {
|
|
8758
9127
|
parameters: {
|
|
8759
9128
|
query?: never;
|
|
8760
9129
|
header?: never;
|
|
@@ -8762,29 +9131,230 @@ interface paths {
|
|
|
8762
9131
|
cookie?: never;
|
|
8763
9132
|
};
|
|
8764
9133
|
/**
|
|
8765
|
-
*
|
|
8766
|
-
* @description
|
|
9134
|
+
* Read one stored capture
|
|
9135
|
+
* @description The bytes of one frame screenshot, for the app canvas. The extension keeps its own capture locally and never reads assets back. Same-origin and session-authenticated: the response carries `Cross-Origin-Resource-Policy: same-origin`, so no other site can embed a tenant capture off the reader’s session. The bytes are immutable by construction, since the object key is their own content hash, which is why they are cacheable for a year, and `private` keeps a shared cache from serving one tenant’s capture to the next request for the same URL. An asset another project holds answers 404, never 403. Requires member role.
|
|
8767
9136
|
*/
|
|
8768
9137
|
get: {
|
|
8769
9138
|
parameters: {
|
|
8770
9139
|
query?: never;
|
|
8771
9140
|
header?: never;
|
|
9141
|
+
path: {
|
|
9142
|
+
projectId: string;
|
|
9143
|
+
/** @description Asset ID (fas_...) */
|
|
9144
|
+
assetId: string;
|
|
9145
|
+
};
|
|
9146
|
+
cookie?: never;
|
|
9147
|
+
};
|
|
9148
|
+
requestBody?: never;
|
|
9149
|
+
responses: {
|
|
9150
|
+
/** @description The image bytes */
|
|
9151
|
+
200: {
|
|
9152
|
+
headers: {
|
|
9153
|
+
[name: string]: unknown;
|
|
9154
|
+
};
|
|
9155
|
+
content: {
|
|
9156
|
+
'image/png': string;
|
|
9157
|
+
};
|
|
9158
|
+
};
|
|
9159
|
+
/** @description The path segment does not address an asset */
|
|
9160
|
+
400: {
|
|
9161
|
+
headers: {
|
|
9162
|
+
[name: string]: unknown;
|
|
9163
|
+
};
|
|
9164
|
+
content: {
|
|
9165
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9166
|
+
};
|
|
9167
|
+
};
|
|
9168
|
+
/** @description Unauthorized */
|
|
9169
|
+
401: {
|
|
9170
|
+
headers: {
|
|
9171
|
+
[name: string]: unknown;
|
|
9172
|
+
};
|
|
9173
|
+
content: {
|
|
9174
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9175
|
+
};
|
|
9176
|
+
};
|
|
9177
|
+
/** @description Forbidden */
|
|
9178
|
+
403: {
|
|
9179
|
+
headers: {
|
|
9180
|
+
[name: string]: unknown;
|
|
9181
|
+
};
|
|
9182
|
+
content: {
|
|
9183
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9184
|
+
};
|
|
9185
|
+
};
|
|
9186
|
+
/** @description Not found */
|
|
9187
|
+
404: {
|
|
9188
|
+
headers: {
|
|
9189
|
+
[name: string]: unknown;
|
|
9190
|
+
};
|
|
9191
|
+
content: {
|
|
9192
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9193
|
+
};
|
|
9194
|
+
};
|
|
9195
|
+
/** @description Rate limited */
|
|
9196
|
+
429: {
|
|
9197
|
+
headers: {
|
|
9198
|
+
[name: string]: unknown;
|
|
9199
|
+
};
|
|
9200
|
+
content: {
|
|
9201
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9202
|
+
};
|
|
9203
|
+
};
|
|
9204
|
+
};
|
|
9205
|
+
};
|
|
9206
|
+
put?: never;
|
|
9207
|
+
post?: never;
|
|
9208
|
+
delete?: never;
|
|
9209
|
+
options?: never;
|
|
9210
|
+
head?: never;
|
|
9211
|
+
patch?: never;
|
|
9212
|
+
trace?: never;
|
|
9213
|
+
};
|
|
9214
|
+
'/api/projects/{projectId}/flows/{flowId}/releases/step-history': {
|
|
9215
|
+
parameters: {
|
|
9216
|
+
query?: never;
|
|
9217
|
+
header?: never;
|
|
9218
|
+
path?: never;
|
|
9219
|
+
cookie?: never;
|
|
9220
|
+
};
|
|
9221
|
+
/**
|
|
9222
|
+
* List the releases that touched one step
|
|
9223
|
+
* @description The releases of this flow that added, changed, or removed one step, newest first, each carrying the rationale stored for it. `step` is a `type.name` key over source, transformer, destination, store, and contract. `flow` narrows the scan to one named flow inside the config and is ignored for a contract key. `limit` bounds the releases scanned, not the entries returned. When nothing matched, `knownSteps` lists the addressable keys of the newest scanned release. Requires member role.
|
|
9224
|
+
*/
|
|
9225
|
+
get: {
|
|
9226
|
+
parameters: {
|
|
9227
|
+
query: {
|
|
9228
|
+
step: string;
|
|
9229
|
+
flow?: string;
|
|
9230
|
+
limit?: number | null;
|
|
9231
|
+
};
|
|
9232
|
+
header?: never;
|
|
8772
9233
|
path: {
|
|
8773
9234
|
projectId: string;
|
|
8774
9235
|
flowId: string;
|
|
8775
|
-
settingsId: string;
|
|
8776
9236
|
};
|
|
8777
9237
|
cookie?: never;
|
|
8778
9238
|
};
|
|
8779
9239
|
requestBody?: never;
|
|
8780
9240
|
responses: {
|
|
8781
|
-
/** @description
|
|
9241
|
+
/** @description The releases that touched the step */
|
|
8782
9242
|
200: {
|
|
8783
9243
|
headers: {
|
|
8784
9244
|
[name: string]: unknown;
|
|
8785
9245
|
};
|
|
8786
9246
|
content: {
|
|
8787
|
-
'application/json': components['schemas']['
|
|
9247
|
+
'application/json': components['schemas']['StepHistoryResponse'];
|
|
9248
|
+
};
|
|
9249
|
+
};
|
|
9250
|
+
/** @description Invalid step key or query */
|
|
9251
|
+
400: {
|
|
9252
|
+
headers: {
|
|
9253
|
+
[name: string]: unknown;
|
|
9254
|
+
};
|
|
9255
|
+
content: {
|
|
9256
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9257
|
+
};
|
|
9258
|
+
};
|
|
9259
|
+
/** @description Unauthorized */
|
|
9260
|
+
401: {
|
|
9261
|
+
headers: {
|
|
9262
|
+
[name: string]: unknown;
|
|
9263
|
+
};
|
|
9264
|
+
content: {
|
|
9265
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9266
|
+
};
|
|
9267
|
+
};
|
|
9268
|
+
/** @description Forbidden */
|
|
9269
|
+
403: {
|
|
9270
|
+
headers: {
|
|
9271
|
+
[name: string]: unknown;
|
|
9272
|
+
};
|
|
9273
|
+
content: {
|
|
9274
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9275
|
+
};
|
|
9276
|
+
};
|
|
9277
|
+
/** @description Not found */
|
|
9278
|
+
404: {
|
|
9279
|
+
headers: {
|
|
9280
|
+
[name: string]: unknown;
|
|
9281
|
+
};
|
|
9282
|
+
content: {
|
|
9283
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9284
|
+
};
|
|
9285
|
+
};
|
|
9286
|
+
/** @description Rate limited */
|
|
9287
|
+
429: {
|
|
9288
|
+
headers: {
|
|
9289
|
+
[name: string]: unknown;
|
|
9290
|
+
};
|
|
9291
|
+
content: {
|
|
9292
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9293
|
+
};
|
|
9294
|
+
};
|
|
9295
|
+
};
|
|
9296
|
+
};
|
|
9297
|
+
put?: never;
|
|
9298
|
+
post?: never;
|
|
9299
|
+
delete?: never;
|
|
9300
|
+
options?: never;
|
|
9301
|
+
head?: never;
|
|
9302
|
+
patch?: never;
|
|
9303
|
+
trace?: never;
|
|
9304
|
+
};
|
|
9305
|
+
'/api/projects/{projectId}/flows/{flowId}/releases/summarize': {
|
|
9306
|
+
parameters: {
|
|
9307
|
+
query?: never;
|
|
9308
|
+
header?: never;
|
|
9309
|
+
path?: never;
|
|
9310
|
+
cookie?: never;
|
|
9311
|
+
};
|
|
9312
|
+
get?: never;
|
|
9313
|
+
put?: never;
|
|
9314
|
+
/**
|
|
9315
|
+
* Summarize or check a release
|
|
9316
|
+
* @description Describe what one release of this flow changed against an earlier release, or check a written note against that same change. In `draft` mode the generated text is stored as the release's generated summary; in `check` mode nothing is stored and the response says whether the note matches. The diff is always recomputed from the two stored snapshots, with secret literals masked, and is never taken from the request. Both versions must be numbered releases of this flow, and `prevVersionId` must be the earlier of the two. Requires member role and the `hub` feature.
|
|
9317
|
+
*/
|
|
9318
|
+
post: {
|
|
9319
|
+
parameters: {
|
|
9320
|
+
query?: never;
|
|
9321
|
+
header?: never;
|
|
9322
|
+
path: {
|
|
9323
|
+
projectId: string;
|
|
9324
|
+
flowId: string;
|
|
9325
|
+
};
|
|
9326
|
+
cookie?: never;
|
|
9327
|
+
};
|
|
9328
|
+
requestBody?: {
|
|
9329
|
+
content: {
|
|
9330
|
+
'application/json': {
|
|
9331
|
+
/** @example ver_a1b2c3d4 */
|
|
9332
|
+
versionId: string;
|
|
9333
|
+
/** @example ver_a1b2c3d4 */
|
|
9334
|
+
prevVersionId: string;
|
|
9335
|
+
/** @enum {string} */
|
|
9336
|
+
mode: 'draft' | 'check';
|
|
9337
|
+
currentText?: string;
|
|
9338
|
+
};
|
|
9339
|
+
};
|
|
9340
|
+
};
|
|
9341
|
+
responses: {
|
|
9342
|
+
/** @description The generated summary or the check verdict */
|
|
9343
|
+
200: {
|
|
9344
|
+
headers: {
|
|
9345
|
+
[name: string]: unknown;
|
|
9346
|
+
};
|
|
9347
|
+
content: {
|
|
9348
|
+
'application/json': components['schemas']['SummarizeReleaseResponse'];
|
|
9349
|
+
};
|
|
9350
|
+
};
|
|
9351
|
+
/** @description Invalid body, a target is not a release, the pair is out of order, or no LLM provider is configured */
|
|
9352
|
+
400: {
|
|
9353
|
+
headers: {
|
|
9354
|
+
[name: string]: unknown;
|
|
9355
|
+
};
|
|
9356
|
+
content: {
|
|
9357
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8788
9358
|
};
|
|
8789
9359
|
};
|
|
8790
9360
|
/** @description Unauthorized */
|
|
@@ -8814,46 +9384,1127 @@ interface paths {
|
|
|
8814
9384
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8815
9385
|
};
|
|
8816
9386
|
};
|
|
9387
|
+
/** @description Rate limited */
|
|
9388
|
+
429: {
|
|
9389
|
+
headers: {
|
|
9390
|
+
[name: string]: unknown;
|
|
9391
|
+
};
|
|
9392
|
+
content: {
|
|
9393
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9394
|
+
};
|
|
9395
|
+
};
|
|
9396
|
+
/** @description The model call failed or returned no usable text */
|
|
9397
|
+
502: {
|
|
9398
|
+
headers: {
|
|
9399
|
+
[name: string]: unknown;
|
|
9400
|
+
};
|
|
9401
|
+
content: {
|
|
9402
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9403
|
+
};
|
|
9404
|
+
};
|
|
9405
|
+
};
|
|
9406
|
+
};
|
|
9407
|
+
delete?: never;
|
|
9408
|
+
options?: never;
|
|
9409
|
+
head?: never;
|
|
9410
|
+
patch?: never;
|
|
9411
|
+
trace?: never;
|
|
9412
|
+
};
|
|
9413
|
+
'/api/projects/{projectId}/deployments/{deploymentId}/versions/current/content': {
|
|
9414
|
+
parameters: {
|
|
9415
|
+
query?: never;
|
|
9416
|
+
header?: never;
|
|
9417
|
+
path?: never;
|
|
9418
|
+
cookie?: never;
|
|
9419
|
+
};
|
|
9420
|
+
/**
|
|
9421
|
+
* Get current deployed content
|
|
9422
|
+
* @description Get the active deployed per-setting content for a deployment, used to diff changes since deploy. Content is masked and display-only; every field is null when there is no deployed baseline. Requires member role.
|
|
9423
|
+
*/
|
|
9424
|
+
get: {
|
|
9425
|
+
parameters: {
|
|
9426
|
+
query?: never;
|
|
9427
|
+
header?: never;
|
|
9428
|
+
path: {
|
|
9429
|
+
projectId: string;
|
|
9430
|
+
deploymentId: string;
|
|
9431
|
+
};
|
|
9432
|
+
cookie?: never;
|
|
9433
|
+
};
|
|
9434
|
+
requestBody?: never;
|
|
9435
|
+
responses: {
|
|
9436
|
+
/** @description Deployed content (or a null baseline) */
|
|
9437
|
+
200: {
|
|
9438
|
+
headers: {
|
|
9439
|
+
[name: string]: unknown;
|
|
9440
|
+
};
|
|
9441
|
+
content: {
|
|
9442
|
+
'application/json': components['schemas']['DeployedContentResponse'];
|
|
9443
|
+
};
|
|
9444
|
+
};
|
|
9445
|
+
/** @description Unauthorized */
|
|
9446
|
+
401: {
|
|
9447
|
+
headers: {
|
|
9448
|
+
[name: string]: unknown;
|
|
9449
|
+
};
|
|
9450
|
+
content: {
|
|
9451
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9452
|
+
};
|
|
9453
|
+
};
|
|
9454
|
+
/** @description Forbidden */
|
|
9455
|
+
403: {
|
|
9456
|
+
headers: {
|
|
9457
|
+
[name: string]: unknown;
|
|
9458
|
+
};
|
|
9459
|
+
content: {
|
|
9460
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9461
|
+
};
|
|
9462
|
+
};
|
|
9463
|
+
/** @description Not found */
|
|
9464
|
+
404: {
|
|
9465
|
+
headers: {
|
|
9466
|
+
[name: string]: unknown;
|
|
9467
|
+
};
|
|
9468
|
+
content: {
|
|
9469
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9470
|
+
};
|
|
9471
|
+
};
|
|
9472
|
+
/** @description Rate limited */
|
|
9473
|
+
429: {
|
|
9474
|
+
headers: {
|
|
9475
|
+
[name: string]: unknown;
|
|
9476
|
+
};
|
|
9477
|
+
content: {
|
|
9478
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9479
|
+
};
|
|
9480
|
+
};
|
|
9481
|
+
};
|
|
9482
|
+
};
|
|
9483
|
+
put?: never;
|
|
9484
|
+
post?: never;
|
|
9485
|
+
delete?: never;
|
|
9486
|
+
options?: never;
|
|
9487
|
+
head?: never;
|
|
9488
|
+
patch?: never;
|
|
9489
|
+
trace?: never;
|
|
9490
|
+
};
|
|
9491
|
+
'/api/projects/{projectId}/deployments/{deploymentId}/heartbeats': {
|
|
9492
|
+
parameters: {
|
|
9493
|
+
query?: never;
|
|
9494
|
+
header?: never;
|
|
9495
|
+
path?: never;
|
|
9496
|
+
cookie?: never;
|
|
9497
|
+
};
|
|
9498
|
+
/**
|
|
9499
|
+
* List deployment heartbeats
|
|
9500
|
+
* @description List heartbeat records for a deployment with optional from/to time-range filtering and pagination. Requires member role.
|
|
9501
|
+
*/
|
|
9502
|
+
get: {
|
|
9503
|
+
parameters: {
|
|
9504
|
+
query?: {
|
|
9505
|
+
/** @description ISO start of the time range. */
|
|
9506
|
+
from?: string;
|
|
9507
|
+
/** @description ISO end of the time range. */
|
|
9508
|
+
to?: string;
|
|
9509
|
+
limit?: number;
|
|
9510
|
+
offset?: number | null;
|
|
9511
|
+
};
|
|
9512
|
+
header?: never;
|
|
9513
|
+
path: {
|
|
9514
|
+
projectId: string;
|
|
9515
|
+
deploymentId: string;
|
|
9516
|
+
};
|
|
9517
|
+
cookie?: never;
|
|
9518
|
+
};
|
|
9519
|
+
requestBody?: never;
|
|
9520
|
+
responses: {
|
|
9521
|
+
/** @description Heartbeat history */
|
|
9522
|
+
200: {
|
|
9523
|
+
headers: {
|
|
9524
|
+
[name: string]: unknown;
|
|
9525
|
+
};
|
|
9526
|
+
content: {
|
|
9527
|
+
'application/json': components['schemas']['ListHeartbeatsResponse'];
|
|
9528
|
+
};
|
|
9529
|
+
};
|
|
9530
|
+
/** @description Unauthorized */
|
|
9531
|
+
401: {
|
|
9532
|
+
headers: {
|
|
9533
|
+
[name: string]: unknown;
|
|
9534
|
+
};
|
|
9535
|
+
content: {
|
|
9536
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9537
|
+
};
|
|
9538
|
+
};
|
|
9539
|
+
/** @description Forbidden */
|
|
9540
|
+
403: {
|
|
9541
|
+
headers: {
|
|
9542
|
+
[name: string]: unknown;
|
|
9543
|
+
};
|
|
9544
|
+
content: {
|
|
9545
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9546
|
+
};
|
|
9547
|
+
};
|
|
9548
|
+
/** @description Not found */
|
|
9549
|
+
404: {
|
|
9550
|
+
headers: {
|
|
9551
|
+
[name: string]: unknown;
|
|
9552
|
+
};
|
|
9553
|
+
content: {
|
|
9554
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9555
|
+
};
|
|
9556
|
+
};
|
|
9557
|
+
};
|
|
9558
|
+
};
|
|
9559
|
+
put?: never;
|
|
9560
|
+
post?: never;
|
|
9561
|
+
delete?: never;
|
|
9562
|
+
options?: never;
|
|
9563
|
+
head?: never;
|
|
9564
|
+
patch?: never;
|
|
9565
|
+
trace?: never;
|
|
9566
|
+
};
|
|
9567
|
+
'/api/projects/{projectId}/deployments/{deploymentId}/rotate-ingest-token': {
|
|
9568
|
+
parameters: {
|
|
9569
|
+
query?: never;
|
|
9570
|
+
header?: never;
|
|
9571
|
+
path?: never;
|
|
9572
|
+
cookie?: never;
|
|
9573
|
+
};
|
|
9574
|
+
get?: never;
|
|
9575
|
+
put?: never;
|
|
9576
|
+
/**
|
|
9577
|
+
* Rotate ingest token
|
|
9578
|
+
* @description Rotate the ingest token for a deployment. Owner-only. No grace window: the previous token is immediately invalidated and the new token is returned once.
|
|
9579
|
+
*/
|
|
9580
|
+
post: {
|
|
9581
|
+
parameters: {
|
|
9582
|
+
query?: never;
|
|
9583
|
+
header?: never;
|
|
9584
|
+
path: {
|
|
9585
|
+
projectId: string;
|
|
9586
|
+
deploymentId: string;
|
|
9587
|
+
};
|
|
9588
|
+
cookie?: never;
|
|
9589
|
+
};
|
|
9590
|
+
requestBody?: never;
|
|
9591
|
+
responses: {
|
|
9592
|
+
/** @description New ingest token */
|
|
9593
|
+
200: {
|
|
9594
|
+
headers: {
|
|
9595
|
+
[name: string]: unknown;
|
|
9596
|
+
};
|
|
9597
|
+
content: {
|
|
9598
|
+
'application/json': components['schemas']['RotateIngestTokenResponse'];
|
|
9599
|
+
};
|
|
9600
|
+
};
|
|
9601
|
+
/** @description Unauthorized */
|
|
9602
|
+
401: {
|
|
9603
|
+
headers: {
|
|
9604
|
+
[name: string]: unknown;
|
|
9605
|
+
};
|
|
9606
|
+
content: {
|
|
9607
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9608
|
+
};
|
|
9609
|
+
};
|
|
9610
|
+
/** @description Forbidden */
|
|
9611
|
+
403: {
|
|
9612
|
+
headers: {
|
|
9613
|
+
[name: string]: unknown;
|
|
9614
|
+
};
|
|
9615
|
+
content: {
|
|
9616
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9617
|
+
};
|
|
9618
|
+
};
|
|
9619
|
+
/** @description Not found */
|
|
9620
|
+
404: {
|
|
9621
|
+
headers: {
|
|
9622
|
+
[name: string]: unknown;
|
|
9623
|
+
};
|
|
9624
|
+
content: {
|
|
9625
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9626
|
+
};
|
|
9627
|
+
};
|
|
9628
|
+
};
|
|
9629
|
+
};
|
|
9630
|
+
delete?: never;
|
|
9631
|
+
options?: never;
|
|
9632
|
+
head?: never;
|
|
9633
|
+
patch?: never;
|
|
9634
|
+
trace?: never;
|
|
9635
|
+
};
|
|
9636
|
+
'/api/projects/{projectId}/deployments/{deploymentId}/usage': {
|
|
9637
|
+
parameters: {
|
|
9638
|
+
query?: never;
|
|
9639
|
+
header?: never;
|
|
9640
|
+
path?: never;
|
|
9641
|
+
cookie?: never;
|
|
9642
|
+
};
|
|
9643
|
+
/**
|
|
9644
|
+
* Deployment usage
|
|
9645
|
+
* @description Aggregate usage summary plus bucketed chart data for a deployment over the requested period. Requires member role.
|
|
9646
|
+
*/
|
|
9647
|
+
get: {
|
|
9648
|
+
parameters: {
|
|
9649
|
+
query?: {
|
|
9650
|
+
/** @description Time window for the usage summary. */
|
|
9651
|
+
period?: '1h' | '24h' | '7d' | '30d';
|
|
9652
|
+
};
|
|
9653
|
+
header?: never;
|
|
9654
|
+
path: {
|
|
9655
|
+
projectId: string;
|
|
9656
|
+
deploymentId: string;
|
|
9657
|
+
};
|
|
9658
|
+
cookie?: never;
|
|
9659
|
+
};
|
|
9660
|
+
requestBody?: never;
|
|
9661
|
+
responses: {
|
|
9662
|
+
/** @description Usage summary and chart buckets */
|
|
9663
|
+
200: {
|
|
9664
|
+
headers: {
|
|
9665
|
+
[name: string]: unknown;
|
|
9666
|
+
};
|
|
9667
|
+
content: {
|
|
9668
|
+
'application/json': components['schemas']['DeploymentUsageResponse'];
|
|
9669
|
+
};
|
|
9670
|
+
};
|
|
9671
|
+
/** @description Validation error */
|
|
9672
|
+
400: {
|
|
9673
|
+
headers: {
|
|
9674
|
+
[name: string]: unknown;
|
|
9675
|
+
};
|
|
9676
|
+
content: {
|
|
9677
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9678
|
+
};
|
|
9679
|
+
};
|
|
9680
|
+
/** @description Unauthorized */
|
|
9681
|
+
401: {
|
|
9682
|
+
headers: {
|
|
9683
|
+
[name: string]: unknown;
|
|
9684
|
+
};
|
|
9685
|
+
content: {
|
|
9686
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9687
|
+
};
|
|
9688
|
+
};
|
|
9689
|
+
/** @description Forbidden */
|
|
9690
|
+
403: {
|
|
9691
|
+
headers: {
|
|
9692
|
+
[name: string]: unknown;
|
|
9693
|
+
};
|
|
9694
|
+
content: {
|
|
9695
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9696
|
+
};
|
|
9697
|
+
};
|
|
9698
|
+
/** @description Not found */
|
|
9699
|
+
404: {
|
|
9700
|
+
headers: {
|
|
9701
|
+
[name: string]: unknown;
|
|
9702
|
+
};
|
|
9703
|
+
content: {
|
|
9704
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9705
|
+
};
|
|
9706
|
+
};
|
|
9707
|
+
};
|
|
9708
|
+
};
|
|
9709
|
+
put?: never;
|
|
9710
|
+
post?: never;
|
|
9711
|
+
delete?: never;
|
|
9712
|
+
options?: never;
|
|
9713
|
+
head?: never;
|
|
9714
|
+
patch?: never;
|
|
9715
|
+
trace?: never;
|
|
9716
|
+
};
|
|
9717
|
+
'/api/projects/{projectId}/flows/{flowId}/custom-domains': {
|
|
9718
|
+
parameters: {
|
|
9719
|
+
query?: never;
|
|
9720
|
+
header?: never;
|
|
9721
|
+
path?: never;
|
|
9722
|
+
cookie?: never;
|
|
9723
|
+
};
|
|
9724
|
+
/**
|
|
9725
|
+
* List custom domains
|
|
9726
|
+
* @description List custom domains attached to any deployment of this flow. Requires member role and the customDomains feature.
|
|
9727
|
+
*/
|
|
9728
|
+
get: {
|
|
9729
|
+
parameters: {
|
|
9730
|
+
query?: never;
|
|
9731
|
+
header?: never;
|
|
9732
|
+
path: {
|
|
9733
|
+
projectId: string;
|
|
9734
|
+
flowId: string;
|
|
9735
|
+
};
|
|
9736
|
+
cookie?: never;
|
|
9737
|
+
};
|
|
9738
|
+
requestBody?: never;
|
|
9739
|
+
responses: {
|
|
9740
|
+
/** @description Custom domains for the flow */
|
|
9741
|
+
200: {
|
|
9742
|
+
headers: {
|
|
9743
|
+
[name: string]: unknown;
|
|
9744
|
+
};
|
|
9745
|
+
content: {
|
|
9746
|
+
'application/json': components['schemas']['ListCustomDomainsResponse'];
|
|
9747
|
+
};
|
|
9748
|
+
};
|
|
9749
|
+
/** @description Unauthorized */
|
|
9750
|
+
401: {
|
|
9751
|
+
headers: {
|
|
9752
|
+
[name: string]: unknown;
|
|
9753
|
+
};
|
|
9754
|
+
content: {
|
|
9755
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9756
|
+
};
|
|
9757
|
+
};
|
|
9758
|
+
/** @description Forbidden */
|
|
9759
|
+
403: {
|
|
9760
|
+
headers: {
|
|
9761
|
+
[name: string]: unknown;
|
|
9762
|
+
};
|
|
9763
|
+
content: {
|
|
9764
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9765
|
+
};
|
|
9766
|
+
};
|
|
9767
|
+
};
|
|
9768
|
+
};
|
|
9769
|
+
put?: never;
|
|
9770
|
+
/**
|
|
9771
|
+
* Attach custom domain
|
|
9772
|
+
* @description Attach a custom domain to the flow's latest server deployment, or to an explicit deployment supplied in the body. Requires member role and the customDomains feature.
|
|
9773
|
+
*/
|
|
9774
|
+
post: {
|
|
9775
|
+
parameters: {
|
|
9776
|
+
query?: never;
|
|
9777
|
+
header?: never;
|
|
9778
|
+
path: {
|
|
9779
|
+
projectId: string;
|
|
9780
|
+
flowId: string;
|
|
9781
|
+
};
|
|
9782
|
+
cookie?: never;
|
|
9783
|
+
};
|
|
9784
|
+
requestBody?: {
|
|
9785
|
+
content: {
|
|
9786
|
+
'application/json': components['schemas']['CreateCustomDomainRequest'];
|
|
9787
|
+
};
|
|
9788
|
+
};
|
|
9789
|
+
responses: {
|
|
9790
|
+
/** @description Custom domain attached */
|
|
9791
|
+
201: {
|
|
9792
|
+
headers: {
|
|
9793
|
+
[name: string]: unknown;
|
|
9794
|
+
};
|
|
9795
|
+
content: {
|
|
9796
|
+
'application/json': components['schemas']['CustomDomain'];
|
|
9797
|
+
};
|
|
9798
|
+
};
|
|
9799
|
+
/** @description Validation error */
|
|
9800
|
+
400: {
|
|
9801
|
+
headers: {
|
|
9802
|
+
[name: string]: unknown;
|
|
9803
|
+
};
|
|
9804
|
+
content: {
|
|
9805
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9806
|
+
};
|
|
9807
|
+
};
|
|
9808
|
+
/** @description Unauthorized */
|
|
9809
|
+
401: {
|
|
9810
|
+
headers: {
|
|
9811
|
+
[name: string]: unknown;
|
|
9812
|
+
};
|
|
9813
|
+
content: {
|
|
9814
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9815
|
+
};
|
|
9816
|
+
};
|
|
9817
|
+
/** @description Forbidden */
|
|
9818
|
+
403: {
|
|
9819
|
+
headers: {
|
|
9820
|
+
[name: string]: unknown;
|
|
9821
|
+
};
|
|
9822
|
+
content: {
|
|
9823
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9824
|
+
};
|
|
9825
|
+
};
|
|
9826
|
+
/** @description Not found */
|
|
9827
|
+
404: {
|
|
9828
|
+
headers: {
|
|
9829
|
+
[name: string]: unknown;
|
|
9830
|
+
};
|
|
9831
|
+
content: {
|
|
9832
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9833
|
+
};
|
|
9834
|
+
};
|
|
9835
|
+
/** @description Conflict */
|
|
9836
|
+
409: {
|
|
9837
|
+
headers: {
|
|
9838
|
+
[name: string]: unknown;
|
|
9839
|
+
};
|
|
9840
|
+
content: {
|
|
9841
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9842
|
+
};
|
|
9843
|
+
};
|
|
9844
|
+
};
|
|
9845
|
+
};
|
|
9846
|
+
delete?: never;
|
|
9847
|
+
options?: never;
|
|
9848
|
+
head?: never;
|
|
9849
|
+
patch?: never;
|
|
9850
|
+
trace?: never;
|
|
9851
|
+
};
|
|
9852
|
+
'/api/projects/{projectId}/flows/{flowId}/custom-domains/{domainId}': {
|
|
9853
|
+
parameters: {
|
|
9854
|
+
query?: never;
|
|
9855
|
+
header?: never;
|
|
9856
|
+
path?: never;
|
|
9857
|
+
cookie?: never;
|
|
9858
|
+
};
|
|
9859
|
+
get?: never;
|
|
9860
|
+
put?: never;
|
|
9861
|
+
post?: never;
|
|
9862
|
+
/**
|
|
9863
|
+
* Detach custom domain
|
|
9864
|
+
* @description Detach a custom domain from its deployment and remove the Scaleway record. Idempotent: a missing domain still returns 204.
|
|
9865
|
+
*/
|
|
9866
|
+
delete: {
|
|
9867
|
+
parameters: {
|
|
9868
|
+
query?: never;
|
|
9869
|
+
header?: never;
|
|
9870
|
+
path: {
|
|
9871
|
+
projectId: string;
|
|
9872
|
+
flowId: string;
|
|
9873
|
+
domainId: string;
|
|
9874
|
+
};
|
|
9875
|
+
cookie?: never;
|
|
9876
|
+
};
|
|
9877
|
+
requestBody?: never;
|
|
9878
|
+
responses: {
|
|
9879
|
+
/** @description Custom domain detached */
|
|
9880
|
+
204: {
|
|
9881
|
+
headers: {
|
|
9882
|
+
[name: string]: unknown;
|
|
9883
|
+
};
|
|
9884
|
+
content?: never;
|
|
9885
|
+
};
|
|
9886
|
+
/** @description Unauthorized */
|
|
9887
|
+
401: {
|
|
9888
|
+
headers: {
|
|
9889
|
+
[name: string]: unknown;
|
|
9890
|
+
};
|
|
9891
|
+
content: {
|
|
9892
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9893
|
+
};
|
|
9894
|
+
};
|
|
9895
|
+
/** @description Forbidden */
|
|
9896
|
+
403: {
|
|
9897
|
+
headers: {
|
|
9898
|
+
[name: string]: unknown;
|
|
9899
|
+
};
|
|
9900
|
+
content: {
|
|
9901
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9902
|
+
};
|
|
9903
|
+
};
|
|
9904
|
+
};
|
|
9905
|
+
};
|
|
9906
|
+
options?: never;
|
|
9907
|
+
head?: never;
|
|
9908
|
+
patch?: never;
|
|
9909
|
+
trace?: never;
|
|
9910
|
+
};
|
|
9911
|
+
'/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deploy-token': {
|
|
9912
|
+
parameters: {
|
|
9913
|
+
query?: never;
|
|
9914
|
+
header?: never;
|
|
9915
|
+
path?: never;
|
|
9916
|
+
cookie?: never;
|
|
9917
|
+
};
|
|
9918
|
+
/**
|
|
9919
|
+
* Self-hosted deploy-token status
|
|
9920
|
+
* @description Report whether a self-hosted deploy token exists for this config, plus the deployment health summary when present. Requires member role.
|
|
9921
|
+
*/
|
|
9922
|
+
get: {
|
|
9923
|
+
parameters: {
|
|
9924
|
+
query?: never;
|
|
9925
|
+
header?: never;
|
|
9926
|
+
path: {
|
|
9927
|
+
projectId: string;
|
|
9928
|
+
flowId: string;
|
|
9929
|
+
settingsId: string;
|
|
9930
|
+
};
|
|
9931
|
+
cookie?: never;
|
|
9932
|
+
};
|
|
9933
|
+
requestBody?: never;
|
|
9934
|
+
responses: {
|
|
9935
|
+
/** @description Deploy-token status */
|
|
9936
|
+
200: {
|
|
9937
|
+
headers: {
|
|
9938
|
+
[name: string]: unknown;
|
|
9939
|
+
};
|
|
9940
|
+
content: {
|
|
9941
|
+
'application/json': components['schemas']['DeployTokenStatusResponse'];
|
|
9942
|
+
};
|
|
9943
|
+
};
|
|
9944
|
+
/** @description Unauthorized */
|
|
9945
|
+
401: {
|
|
9946
|
+
headers: {
|
|
9947
|
+
[name: string]: unknown;
|
|
9948
|
+
};
|
|
9949
|
+
content: {
|
|
9950
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9951
|
+
};
|
|
9952
|
+
};
|
|
9953
|
+
/** @description Forbidden */
|
|
9954
|
+
403: {
|
|
9955
|
+
headers: {
|
|
9956
|
+
[name: string]: unknown;
|
|
9957
|
+
};
|
|
9958
|
+
content: {
|
|
9959
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9960
|
+
};
|
|
9961
|
+
};
|
|
9962
|
+
/** @description Not found */
|
|
9963
|
+
404: {
|
|
9964
|
+
headers: {
|
|
9965
|
+
[name: string]: unknown;
|
|
9966
|
+
};
|
|
9967
|
+
content: {
|
|
9968
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9969
|
+
};
|
|
9970
|
+
};
|
|
9971
|
+
};
|
|
9972
|
+
};
|
|
9973
|
+
put?: never;
|
|
9974
|
+
/**
|
|
9975
|
+
* Mint self-hosted deploy token
|
|
9976
|
+
* @description Create a self-hosted deployment (if none exists) and mint a flow+deployment-bound runner token. Admin-only. The raw token is returned once and never stored in plaintext.
|
|
9977
|
+
*/
|
|
9978
|
+
post: {
|
|
9979
|
+
parameters: {
|
|
9980
|
+
query?: never;
|
|
9981
|
+
header?: never;
|
|
9982
|
+
path: {
|
|
9983
|
+
projectId: string;
|
|
9984
|
+
flowId: string;
|
|
9985
|
+
settingsId: string;
|
|
9986
|
+
};
|
|
9987
|
+
cookie?: never;
|
|
9988
|
+
};
|
|
9989
|
+
requestBody?: never;
|
|
9990
|
+
responses: {
|
|
9991
|
+
/** @description Deploy token minted */
|
|
9992
|
+
201: {
|
|
9993
|
+
headers: {
|
|
9994
|
+
[name: string]: unknown;
|
|
9995
|
+
};
|
|
9996
|
+
content: {
|
|
9997
|
+
'application/json': components['schemas']['CreateDeployTokenResponse'];
|
|
9998
|
+
};
|
|
9999
|
+
};
|
|
10000
|
+
/** @description Unauthorized */
|
|
10001
|
+
401: {
|
|
10002
|
+
headers: {
|
|
10003
|
+
[name: string]: unknown;
|
|
10004
|
+
};
|
|
10005
|
+
content: {
|
|
10006
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10007
|
+
};
|
|
10008
|
+
};
|
|
10009
|
+
/** @description Forbidden */
|
|
10010
|
+
403: {
|
|
10011
|
+
headers: {
|
|
10012
|
+
[name: string]: unknown;
|
|
10013
|
+
};
|
|
10014
|
+
content: {
|
|
10015
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10016
|
+
};
|
|
10017
|
+
};
|
|
10018
|
+
/** @description Not found */
|
|
10019
|
+
404: {
|
|
10020
|
+
headers: {
|
|
10021
|
+
[name: string]: unknown;
|
|
10022
|
+
};
|
|
10023
|
+
content: {
|
|
10024
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10025
|
+
};
|
|
10026
|
+
};
|
|
10027
|
+
};
|
|
10028
|
+
};
|
|
10029
|
+
delete?: never;
|
|
10030
|
+
options?: never;
|
|
10031
|
+
head?: never;
|
|
10032
|
+
patch?: never;
|
|
10033
|
+
trace?: never;
|
|
10034
|
+
};
|
|
10035
|
+
'/api/projects/{projectId}/entitlements': {
|
|
10036
|
+
parameters: {
|
|
10037
|
+
query?: never;
|
|
10038
|
+
header?: never;
|
|
10039
|
+
path?: never;
|
|
10040
|
+
cookie?: never;
|
|
10041
|
+
};
|
|
10042
|
+
/**
|
|
10043
|
+
* Resolved entitlements
|
|
10044
|
+
* @description Return resolved feature entitlements for the authenticated user and project. Used by CLI/API clients; the web UI uses SSR-resolved entitlements. Requires viewer role.
|
|
10045
|
+
*/
|
|
10046
|
+
get: {
|
|
10047
|
+
parameters: {
|
|
10048
|
+
query?: never;
|
|
10049
|
+
header?: never;
|
|
10050
|
+
path: {
|
|
10051
|
+
projectId: string;
|
|
10052
|
+
};
|
|
10053
|
+
cookie?: never;
|
|
10054
|
+
};
|
|
10055
|
+
requestBody?: never;
|
|
10056
|
+
responses: {
|
|
10057
|
+
/** @description Resolved entitlements */
|
|
10058
|
+
200: {
|
|
10059
|
+
headers: {
|
|
10060
|
+
[name: string]: unknown;
|
|
10061
|
+
};
|
|
10062
|
+
content: {
|
|
10063
|
+
'application/json': components['schemas']['EntitlementsResponse'];
|
|
10064
|
+
};
|
|
10065
|
+
};
|
|
10066
|
+
/** @description Unauthorized */
|
|
10067
|
+
401: {
|
|
10068
|
+
headers: {
|
|
10069
|
+
[name: string]: unknown;
|
|
10070
|
+
};
|
|
10071
|
+
content: {
|
|
10072
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10073
|
+
};
|
|
10074
|
+
};
|
|
10075
|
+
/** @description Forbidden */
|
|
10076
|
+
403: {
|
|
10077
|
+
headers: {
|
|
10078
|
+
[name: string]: unknown;
|
|
10079
|
+
};
|
|
10080
|
+
content: {
|
|
10081
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10082
|
+
};
|
|
10083
|
+
};
|
|
10084
|
+
};
|
|
10085
|
+
};
|
|
10086
|
+
put?: never;
|
|
10087
|
+
post?: never;
|
|
10088
|
+
delete?: never;
|
|
10089
|
+
options?: never;
|
|
10090
|
+
head?: never;
|
|
10091
|
+
patch?: never;
|
|
10092
|
+
trace?: never;
|
|
10093
|
+
};
|
|
10094
|
+
'/api/projects/{projectId}/settings/llm': {
|
|
10095
|
+
parameters: {
|
|
10096
|
+
query?: never;
|
|
10097
|
+
header?: never;
|
|
10098
|
+
path?: never;
|
|
10099
|
+
cookie?: never;
|
|
10100
|
+
};
|
|
10101
|
+
/**
|
|
10102
|
+
* Active LLM provider
|
|
10103
|
+
* @description Report which LLM provider is currently active for the project and where billing is sourced. Never returns the apiKey. Requires member role and the chat feature.
|
|
10104
|
+
*/
|
|
10105
|
+
get: {
|
|
10106
|
+
parameters: {
|
|
10107
|
+
query?: never;
|
|
10108
|
+
header?: never;
|
|
10109
|
+
path: {
|
|
10110
|
+
projectId: string;
|
|
10111
|
+
};
|
|
10112
|
+
cookie?: never;
|
|
10113
|
+
};
|
|
10114
|
+
requestBody?: never;
|
|
10115
|
+
responses: {
|
|
10116
|
+
/** @description Active LLM provider status */
|
|
10117
|
+
200: {
|
|
10118
|
+
headers: {
|
|
10119
|
+
[name: string]: unknown;
|
|
10120
|
+
};
|
|
10121
|
+
content: {
|
|
10122
|
+
'application/json': components['schemas']['LlmConfigStatusResponse'];
|
|
10123
|
+
};
|
|
10124
|
+
};
|
|
10125
|
+
/** @description Unauthorized */
|
|
10126
|
+
401: {
|
|
10127
|
+
headers: {
|
|
10128
|
+
[name: string]: unknown;
|
|
10129
|
+
};
|
|
10130
|
+
content: {
|
|
10131
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10132
|
+
};
|
|
10133
|
+
};
|
|
10134
|
+
/** @description Forbidden */
|
|
10135
|
+
403: {
|
|
10136
|
+
headers: {
|
|
10137
|
+
[name: string]: unknown;
|
|
10138
|
+
};
|
|
10139
|
+
content: {
|
|
10140
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10141
|
+
};
|
|
10142
|
+
};
|
|
10143
|
+
/** @description No platform LLM provider configured */
|
|
10144
|
+
503: {
|
|
10145
|
+
headers: {
|
|
10146
|
+
[name: string]: unknown;
|
|
10147
|
+
};
|
|
10148
|
+
content: {
|
|
10149
|
+
'application/json': components['schemas']['LlmConfigStatusResponse'];
|
|
10150
|
+
};
|
|
10151
|
+
};
|
|
10152
|
+
};
|
|
10153
|
+
};
|
|
10154
|
+
put?: never;
|
|
10155
|
+
/**
|
|
10156
|
+
* Set LLM provider
|
|
10157
|
+
* @description Set or clear the project LLM provider override. Admin-only, gated by the chat feature. The apiKey is write-only: it is encrypted and never returned.
|
|
10158
|
+
*/
|
|
10159
|
+
post: {
|
|
10160
|
+
parameters: {
|
|
10161
|
+
query?: never;
|
|
10162
|
+
header?: never;
|
|
10163
|
+
path: {
|
|
10164
|
+
projectId: string;
|
|
10165
|
+
};
|
|
10166
|
+
cookie?: never;
|
|
10167
|
+
};
|
|
10168
|
+
requestBody?: {
|
|
10169
|
+
content: {
|
|
10170
|
+
'application/json': components['schemas']['SetLlmConfigRequest'];
|
|
10171
|
+
};
|
|
10172
|
+
};
|
|
10173
|
+
responses: {
|
|
10174
|
+
/** @description LLM config saved or cleared */
|
|
10175
|
+
200: {
|
|
10176
|
+
headers: {
|
|
10177
|
+
[name: string]: unknown;
|
|
10178
|
+
};
|
|
10179
|
+
content: {
|
|
10180
|
+
'application/json': components['schemas']['SetLlmConfigResponse'];
|
|
10181
|
+
};
|
|
10182
|
+
};
|
|
10183
|
+
/** @description Validation error */
|
|
10184
|
+
400: {
|
|
10185
|
+
headers: {
|
|
10186
|
+
[name: string]: unknown;
|
|
10187
|
+
};
|
|
10188
|
+
content: {
|
|
10189
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10190
|
+
};
|
|
10191
|
+
};
|
|
10192
|
+
/** @description Unauthorized */
|
|
10193
|
+
401: {
|
|
10194
|
+
headers: {
|
|
10195
|
+
[name: string]: unknown;
|
|
10196
|
+
};
|
|
10197
|
+
content: {
|
|
10198
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10199
|
+
};
|
|
10200
|
+
};
|
|
10201
|
+
/** @description Forbidden */
|
|
10202
|
+
403: {
|
|
10203
|
+
headers: {
|
|
10204
|
+
[name: string]: unknown;
|
|
10205
|
+
};
|
|
10206
|
+
content: {
|
|
10207
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10208
|
+
};
|
|
10209
|
+
};
|
|
10210
|
+
/** @description Not found */
|
|
10211
|
+
404: {
|
|
10212
|
+
headers: {
|
|
10213
|
+
[name: string]: unknown;
|
|
10214
|
+
};
|
|
10215
|
+
content: {
|
|
10216
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10217
|
+
};
|
|
10218
|
+
};
|
|
10219
|
+
};
|
|
10220
|
+
};
|
|
10221
|
+
delete?: never;
|
|
10222
|
+
options?: never;
|
|
10223
|
+
head?: never;
|
|
10224
|
+
patch?: never;
|
|
10225
|
+
trace?: never;
|
|
10226
|
+
};
|
|
10227
|
+
'/api/projects/{projectId}/chat/sessions': {
|
|
10228
|
+
parameters: {
|
|
10229
|
+
query?: never;
|
|
10230
|
+
header?: never;
|
|
10231
|
+
path?: never;
|
|
10232
|
+
cookie?: never;
|
|
10233
|
+
};
|
|
10234
|
+
/**
|
|
10235
|
+
* List chat sessions
|
|
10236
|
+
* @description List the caller's recent chat sessions for a project, ordered by last activity. Requires member role and the chat feature.
|
|
10237
|
+
*/
|
|
10238
|
+
get: {
|
|
10239
|
+
parameters: {
|
|
10240
|
+
query?: {
|
|
10241
|
+
limit?: number;
|
|
10242
|
+
offset?: number | null;
|
|
10243
|
+
};
|
|
10244
|
+
header?: never;
|
|
10245
|
+
path: {
|
|
10246
|
+
projectId: string;
|
|
10247
|
+
};
|
|
10248
|
+
cookie?: never;
|
|
10249
|
+
};
|
|
10250
|
+
requestBody?: never;
|
|
10251
|
+
responses: {
|
|
10252
|
+
/** @description Chat session list */
|
|
10253
|
+
200: {
|
|
10254
|
+
headers: {
|
|
10255
|
+
[name: string]: unknown;
|
|
10256
|
+
};
|
|
10257
|
+
content: {
|
|
10258
|
+
'application/json': components['schemas']['ListChatSessionsResponse'];
|
|
10259
|
+
};
|
|
10260
|
+
};
|
|
10261
|
+
/** @description Unauthorized */
|
|
10262
|
+
401: {
|
|
10263
|
+
headers: {
|
|
10264
|
+
[name: string]: unknown;
|
|
10265
|
+
};
|
|
10266
|
+
content: {
|
|
10267
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10268
|
+
};
|
|
10269
|
+
};
|
|
10270
|
+
/** @description Forbidden */
|
|
10271
|
+
403: {
|
|
10272
|
+
headers: {
|
|
10273
|
+
[name: string]: unknown;
|
|
10274
|
+
};
|
|
10275
|
+
content: {
|
|
10276
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10277
|
+
};
|
|
10278
|
+
};
|
|
10279
|
+
};
|
|
10280
|
+
};
|
|
10281
|
+
put?: never;
|
|
10282
|
+
post?: never;
|
|
10283
|
+
delete?: never;
|
|
10284
|
+
options?: never;
|
|
10285
|
+
head?: never;
|
|
10286
|
+
patch?: never;
|
|
10287
|
+
trace?: never;
|
|
10288
|
+
};
|
|
10289
|
+
'/api/projects/{projectId}/chat/sessions/{sessionId}': {
|
|
10290
|
+
parameters: {
|
|
10291
|
+
query?: never;
|
|
10292
|
+
header?: never;
|
|
10293
|
+
path?: never;
|
|
10294
|
+
cookie?: never;
|
|
10295
|
+
};
|
|
10296
|
+
/**
|
|
10297
|
+
* Get chat session
|
|
10298
|
+
* @description Return a chat session and its full message history when the caller owns it. Foreign or unknown sessions return 404 (never 403) so existence is not leaked. Requires member role and the chat feature.
|
|
10299
|
+
*/
|
|
10300
|
+
get: {
|
|
10301
|
+
parameters: {
|
|
10302
|
+
query?: never;
|
|
10303
|
+
header?: never;
|
|
10304
|
+
path: {
|
|
10305
|
+
projectId: string;
|
|
10306
|
+
sessionId: string;
|
|
10307
|
+
};
|
|
10308
|
+
cookie?: never;
|
|
10309
|
+
};
|
|
10310
|
+
requestBody?: never;
|
|
10311
|
+
responses: {
|
|
10312
|
+
/** @description Chat session with messages */
|
|
10313
|
+
200: {
|
|
10314
|
+
headers: {
|
|
10315
|
+
[name: string]: unknown;
|
|
10316
|
+
};
|
|
10317
|
+
content: {
|
|
10318
|
+
'application/json': components['schemas']['ChatSessionDetailResponse'];
|
|
10319
|
+
};
|
|
10320
|
+
};
|
|
10321
|
+
/** @description Unauthorized */
|
|
10322
|
+
401: {
|
|
10323
|
+
headers: {
|
|
10324
|
+
[name: string]: unknown;
|
|
10325
|
+
};
|
|
10326
|
+
content: {
|
|
10327
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10328
|
+
};
|
|
10329
|
+
};
|
|
10330
|
+
/** @description Forbidden */
|
|
10331
|
+
403: {
|
|
10332
|
+
headers: {
|
|
10333
|
+
[name: string]: unknown;
|
|
10334
|
+
};
|
|
10335
|
+
content: {
|
|
10336
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10337
|
+
};
|
|
10338
|
+
};
|
|
10339
|
+
/** @description Not found */
|
|
10340
|
+
404: {
|
|
10341
|
+
headers: {
|
|
10342
|
+
[name: string]: unknown;
|
|
10343
|
+
};
|
|
10344
|
+
content: {
|
|
10345
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10346
|
+
};
|
|
10347
|
+
};
|
|
10348
|
+
};
|
|
10349
|
+
};
|
|
10350
|
+
put?: never;
|
|
10351
|
+
post?: never;
|
|
10352
|
+
delete?: never;
|
|
10353
|
+
options?: never;
|
|
10354
|
+
head?: never;
|
|
10355
|
+
patch?: never;
|
|
10356
|
+
trace?: never;
|
|
10357
|
+
};
|
|
10358
|
+
'/api/projects/{projectId}/chat/elicit': {
|
|
10359
|
+
parameters: {
|
|
10360
|
+
query?: never;
|
|
10361
|
+
header?: never;
|
|
10362
|
+
path?: never;
|
|
10363
|
+
cookie?: never;
|
|
10364
|
+
};
|
|
10365
|
+
get?: never;
|
|
10366
|
+
put?: never;
|
|
10367
|
+
/**
|
|
10368
|
+
* Answer elicitation prompt
|
|
10369
|
+
* @description Answer a pending MCP elicitation prompt (accept, decline, or cancel), unblocking the waiting tool invocation. Requires member role and the chat feature.
|
|
10370
|
+
*/
|
|
10371
|
+
post: {
|
|
10372
|
+
parameters: {
|
|
10373
|
+
query?: never;
|
|
10374
|
+
header?: never;
|
|
10375
|
+
path: {
|
|
10376
|
+
projectId: string;
|
|
10377
|
+
};
|
|
10378
|
+
cookie?: never;
|
|
10379
|
+
};
|
|
10380
|
+
requestBody?: {
|
|
10381
|
+
content: {
|
|
10382
|
+
'application/json': components['schemas']['ElicitRequest'];
|
|
10383
|
+
};
|
|
10384
|
+
};
|
|
10385
|
+
responses: {
|
|
10386
|
+
/** @description Elicitation resolved */
|
|
10387
|
+
200: {
|
|
10388
|
+
headers: {
|
|
10389
|
+
[name: string]: unknown;
|
|
10390
|
+
};
|
|
10391
|
+
content: {
|
|
10392
|
+
'application/json': components['schemas']['ElicitResponse'];
|
|
10393
|
+
};
|
|
10394
|
+
};
|
|
10395
|
+
/** @description Validation error */
|
|
10396
|
+
400: {
|
|
10397
|
+
headers: {
|
|
10398
|
+
[name: string]: unknown;
|
|
10399
|
+
};
|
|
10400
|
+
content: {
|
|
10401
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10402
|
+
};
|
|
10403
|
+
};
|
|
10404
|
+
/** @description Unauthorized */
|
|
10405
|
+
401: {
|
|
10406
|
+
headers: {
|
|
10407
|
+
[name: string]: unknown;
|
|
10408
|
+
};
|
|
10409
|
+
content: {
|
|
10410
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10411
|
+
};
|
|
10412
|
+
};
|
|
10413
|
+
/** @description Forbidden */
|
|
10414
|
+
403: {
|
|
10415
|
+
headers: {
|
|
10416
|
+
[name: string]: unknown;
|
|
10417
|
+
};
|
|
10418
|
+
content: {
|
|
10419
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10420
|
+
};
|
|
10421
|
+
};
|
|
10422
|
+
/** @description Not found */
|
|
10423
|
+
404: {
|
|
10424
|
+
headers: {
|
|
10425
|
+
[name: string]: unknown;
|
|
10426
|
+
};
|
|
10427
|
+
content: {
|
|
10428
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10429
|
+
};
|
|
10430
|
+
};
|
|
10431
|
+
};
|
|
10432
|
+
};
|
|
10433
|
+
delete?: never;
|
|
10434
|
+
options?: never;
|
|
10435
|
+
head?: never;
|
|
10436
|
+
patch?: never;
|
|
10437
|
+
trace?: never;
|
|
10438
|
+
};
|
|
10439
|
+
'/api/mcp/tokens': {
|
|
10440
|
+
parameters: {
|
|
10441
|
+
query?: never;
|
|
10442
|
+
header?: never;
|
|
10443
|
+
path?: never;
|
|
10444
|
+
cookie?: never;
|
|
10445
|
+
};
|
|
10446
|
+
/**
|
|
10447
|
+
* List MCP tokens
|
|
10448
|
+
* @description List the authenticated user's personal MCP tokens. No secret material is returned.
|
|
10449
|
+
*/
|
|
10450
|
+
get: {
|
|
10451
|
+
parameters: {
|
|
10452
|
+
query?: never;
|
|
10453
|
+
header?: never;
|
|
10454
|
+
path?: never;
|
|
10455
|
+
cookie?: never;
|
|
10456
|
+
};
|
|
10457
|
+
requestBody?: never;
|
|
10458
|
+
responses: {
|
|
10459
|
+
/** @description MCP token list */
|
|
10460
|
+
200: {
|
|
10461
|
+
headers: {
|
|
10462
|
+
[name: string]: unknown;
|
|
10463
|
+
};
|
|
10464
|
+
content: {
|
|
10465
|
+
'application/json': components['schemas']['ListMcpTokensResponse'];
|
|
10466
|
+
};
|
|
10467
|
+
};
|
|
10468
|
+
/** @description Unauthorized */
|
|
10469
|
+
401: {
|
|
10470
|
+
headers: {
|
|
10471
|
+
[name: string]: unknown;
|
|
10472
|
+
};
|
|
10473
|
+
content: {
|
|
10474
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10475
|
+
};
|
|
10476
|
+
};
|
|
8817
10477
|
};
|
|
8818
10478
|
};
|
|
8819
10479
|
put?: never;
|
|
8820
10480
|
/**
|
|
8821
|
-
*
|
|
8822
|
-
* @description
|
|
10481
|
+
* Issue MCP token
|
|
10482
|
+
* @description Issue a personal MCP token. The raw token is returned exactly once and is never retrievable afterwards.
|
|
8823
10483
|
*/
|
|
8824
10484
|
post: {
|
|
8825
10485
|
parameters: {
|
|
8826
10486
|
query?: never;
|
|
8827
10487
|
header?: never;
|
|
8828
|
-
path
|
|
8829
|
-
projectId: string;
|
|
8830
|
-
flowId: string;
|
|
8831
|
-
settingsId: string;
|
|
8832
|
-
};
|
|
10488
|
+
path?: never;
|
|
8833
10489
|
cookie?: never;
|
|
8834
10490
|
};
|
|
8835
|
-
requestBody?:
|
|
10491
|
+
requestBody?: {
|
|
10492
|
+
content: {
|
|
10493
|
+
'application/json': components['schemas']['CreateMcpTokenRequest'];
|
|
10494
|
+
};
|
|
10495
|
+
};
|
|
8836
10496
|
responses: {
|
|
8837
|
-
/** @description
|
|
10497
|
+
/** @description MCP token issued */
|
|
8838
10498
|
201: {
|
|
8839
10499
|
headers: {
|
|
8840
10500
|
[name: string]: unknown;
|
|
8841
10501
|
};
|
|
8842
10502
|
content: {
|
|
8843
|
-
'application/json': components['schemas']['
|
|
8844
|
-
};
|
|
8845
|
-
};
|
|
8846
|
-
/** @description Unauthorized */
|
|
8847
|
-
401: {
|
|
8848
|
-
headers: {
|
|
8849
|
-
[name: string]: unknown;
|
|
8850
|
-
};
|
|
8851
|
-
content: {
|
|
8852
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
10503
|
+
'application/json': components['schemas']['CreateMcpTokenResponse'];
|
|
8853
10504
|
};
|
|
8854
10505
|
};
|
|
8855
|
-
/** @description
|
|
8856
|
-
|
|
10506
|
+
/** @description Validation error */
|
|
10507
|
+
400: {
|
|
8857
10508
|
headers: {
|
|
8858
10509
|
[name: string]: unknown;
|
|
8859
10510
|
};
|
|
@@ -8861,8 +10512,8 @@ interface paths {
|
|
|
8861
10512
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8862
10513
|
};
|
|
8863
10514
|
};
|
|
8864
|
-
/** @description
|
|
8865
|
-
|
|
10515
|
+
/** @description Unauthorized */
|
|
10516
|
+
401: {
|
|
8866
10517
|
headers: {
|
|
8867
10518
|
[name: string]: unknown;
|
|
8868
10519
|
};
|
|
@@ -8878,36 +10529,37 @@ interface paths {
|
|
|
8878
10529
|
patch?: never;
|
|
8879
10530
|
trace?: never;
|
|
8880
10531
|
};
|
|
8881
|
-
'/api/
|
|
10532
|
+
'/api/mcp/tokens/{tokenId}': {
|
|
8882
10533
|
parameters: {
|
|
8883
10534
|
query?: never;
|
|
8884
10535
|
header?: never;
|
|
8885
10536
|
path?: never;
|
|
8886
10537
|
cookie?: never;
|
|
8887
10538
|
};
|
|
10539
|
+
get?: never;
|
|
10540
|
+
put?: never;
|
|
10541
|
+
post?: never;
|
|
8888
10542
|
/**
|
|
8889
|
-
*
|
|
8890
|
-
* @description
|
|
10543
|
+
* Revoke MCP token
|
|
10544
|
+
* @description Revoke a personal MCP token by id.
|
|
8891
10545
|
*/
|
|
8892
|
-
|
|
10546
|
+
delete: {
|
|
8893
10547
|
parameters: {
|
|
8894
10548
|
query?: never;
|
|
8895
10549
|
header?: never;
|
|
8896
10550
|
path: {
|
|
8897
|
-
|
|
10551
|
+
tokenId: string;
|
|
8898
10552
|
};
|
|
8899
10553
|
cookie?: never;
|
|
8900
10554
|
};
|
|
8901
10555
|
requestBody?: never;
|
|
8902
10556
|
responses: {
|
|
8903
|
-
/** @description
|
|
8904
|
-
|
|
10557
|
+
/** @description MCP token revoked */
|
|
10558
|
+
204: {
|
|
8905
10559
|
headers: {
|
|
8906
10560
|
[name: string]: unknown;
|
|
8907
10561
|
};
|
|
8908
|
-
content
|
|
8909
|
-
'application/json': components['schemas']['EntitlementsResponse'];
|
|
8910
|
-
};
|
|
10562
|
+
content?: never;
|
|
8911
10563
|
};
|
|
8912
10564
|
/** @description Unauthorized */
|
|
8913
10565
|
401: {
|
|
@@ -8918,26 +10570,14 @@ interface paths {
|
|
|
8918
10570
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8919
10571
|
};
|
|
8920
10572
|
};
|
|
8921
|
-
/** @description Forbidden */
|
|
8922
|
-
403: {
|
|
8923
|
-
headers: {
|
|
8924
|
-
[name: string]: unknown;
|
|
8925
|
-
};
|
|
8926
|
-
content: {
|
|
8927
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
8928
|
-
};
|
|
8929
|
-
};
|
|
8930
10573
|
};
|
|
8931
10574
|
};
|
|
8932
|
-
put?: never;
|
|
8933
|
-
post?: never;
|
|
8934
|
-
delete?: never;
|
|
8935
10575
|
options?: never;
|
|
8936
10576
|
head?: never;
|
|
8937
10577
|
patch?: never;
|
|
8938
10578
|
trace?: never;
|
|
8939
10579
|
};
|
|
8940
|
-
'/api/projects/{projectId}/
|
|
10580
|
+
'/api/projects/{projectId}/runners': {
|
|
8941
10581
|
parameters: {
|
|
8942
10582
|
query?: never;
|
|
8943
10583
|
header?: never;
|
|
@@ -8945,8 +10585,8 @@ interface paths {
|
|
|
8945
10585
|
cookie?: never;
|
|
8946
10586
|
};
|
|
8947
10587
|
/**
|
|
8948
|
-
*
|
|
8949
|
-
* @description
|
|
10588
|
+
* List runners (deprecated)
|
|
10589
|
+
* @description Deprecated: runners migrated to deployments (origin=self-hosted). Always returns an empty list for backward compatibility. Requires member role.
|
|
8950
10590
|
*/
|
|
8951
10591
|
get: {
|
|
8952
10592
|
parameters: {
|
|
@@ -8959,13 +10599,13 @@ interface paths {
|
|
|
8959
10599
|
};
|
|
8960
10600
|
requestBody?: never;
|
|
8961
10601
|
responses: {
|
|
8962
|
-
/** @description
|
|
10602
|
+
/** @description Empty runner list */
|
|
8963
10603
|
200: {
|
|
8964
10604
|
headers: {
|
|
8965
10605
|
[name: string]: unknown;
|
|
8966
10606
|
};
|
|
8967
10607
|
content: {
|
|
8968
|
-
'application/json': components['schemas']['
|
|
10608
|
+
'application/json': components['schemas']['ListRunnersResponse'];
|
|
8969
10609
|
};
|
|
8970
10610
|
};
|
|
8971
10611
|
/** @description Unauthorized */
|
|
@@ -8986,21 +10626,28 @@ interface paths {
|
|
|
8986
10626
|
'application/json': components['schemas']['ErrorResponse'];
|
|
8987
10627
|
};
|
|
8988
10628
|
};
|
|
8989
|
-
/** @description No platform LLM provider configured */
|
|
8990
|
-
503: {
|
|
8991
|
-
headers: {
|
|
8992
|
-
[name: string]: unknown;
|
|
8993
|
-
};
|
|
8994
|
-
content: {
|
|
8995
|
-
'application/json': components['schemas']['LlmConfigStatusResponse'];
|
|
8996
|
-
};
|
|
8997
|
-
};
|
|
8998
10629
|
};
|
|
8999
10630
|
};
|
|
9000
10631
|
put?: never;
|
|
10632
|
+
post?: never;
|
|
10633
|
+
delete?: never;
|
|
10634
|
+
options?: never;
|
|
10635
|
+
head?: never;
|
|
10636
|
+
patch?: never;
|
|
10637
|
+
trace?: never;
|
|
10638
|
+
};
|
|
10639
|
+
'/api/projects/{projectId}/runners/heartbeat': {
|
|
10640
|
+
parameters: {
|
|
10641
|
+
query?: never;
|
|
10642
|
+
header?: never;
|
|
10643
|
+
path?: never;
|
|
10644
|
+
cookie?: never;
|
|
10645
|
+
};
|
|
10646
|
+
get?: never;
|
|
10647
|
+
put?: never;
|
|
9001
10648
|
/**
|
|
9002
|
-
*
|
|
9003
|
-
* @description
|
|
10649
|
+
* Runner heartbeat
|
|
10650
|
+
* @description Accept a self-hosted runner heartbeat with usage counters. Authenticated by a flow+deployment-bound runner token. Updates deployment liveness and records an immutable usage row.
|
|
9004
10651
|
*/
|
|
9005
10652
|
post: {
|
|
9006
10653
|
parameters: {
|
|
@@ -9013,17 +10660,17 @@ interface paths {
|
|
|
9013
10660
|
};
|
|
9014
10661
|
requestBody?: {
|
|
9015
10662
|
content: {
|
|
9016
|
-
'application/json': components['schemas']['
|
|
10663
|
+
'application/json': components['schemas']['HeartbeatRequest'];
|
|
9017
10664
|
};
|
|
9018
10665
|
};
|
|
9019
10666
|
responses: {
|
|
9020
|
-
/** @description
|
|
10667
|
+
/** @description Heartbeat accepted */
|
|
9021
10668
|
200: {
|
|
9022
10669
|
headers: {
|
|
9023
10670
|
[name: string]: unknown;
|
|
9024
10671
|
};
|
|
9025
10672
|
content: {
|
|
9026
|
-
'application/json': components['schemas']['
|
|
10673
|
+
'application/json': components['schemas']['RunnerHeartbeatResponse'];
|
|
9027
10674
|
};
|
|
9028
10675
|
};
|
|
9029
10676
|
/** @description Validation error */
|
|
@@ -9044,15 +10691,6 @@ interface paths {
|
|
|
9044
10691
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9045
10692
|
};
|
|
9046
10693
|
};
|
|
9047
|
-
/** @description Forbidden */
|
|
9048
|
-
403: {
|
|
9049
|
-
headers: {
|
|
9050
|
-
[name: string]: unknown;
|
|
9051
|
-
};
|
|
9052
|
-
content: {
|
|
9053
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
9054
|
-
};
|
|
9055
|
-
};
|
|
9056
10694
|
/** @description Not found */
|
|
9057
10695
|
404: {
|
|
9058
10696
|
headers: {
|
|
@@ -9070,7 +10708,7 @@ interface paths {
|
|
|
9070
10708
|
patch?: never;
|
|
9071
10709
|
trace?: never;
|
|
9072
10710
|
};
|
|
9073
|
-
'/api/
|
|
10711
|
+
'/api/packages': {
|
|
9074
10712
|
parameters: {
|
|
9075
10713
|
query?: never;
|
|
9076
10714
|
header?: never;
|
|
@@ -9078,34 +10716,34 @@ interface paths {
|
|
|
9078
10716
|
cookie?: never;
|
|
9079
10717
|
};
|
|
9080
10718
|
/**
|
|
9081
|
-
*
|
|
9082
|
-
* @description
|
|
10719
|
+
* Package catalog
|
|
10720
|
+
* @description Resolved `@walkeros/*` package catalog for the add-step picker, optionally filtered by type and platform.
|
|
9083
10721
|
*/
|
|
9084
10722
|
get: {
|
|
9085
10723
|
parameters: {
|
|
9086
10724
|
query?: {
|
|
9087
|
-
|
|
9088
|
-
|
|
10725
|
+
/** @description Filter by package type. */
|
|
10726
|
+
type?: string;
|
|
10727
|
+
/** @description Filter by platform. */
|
|
10728
|
+
platform?: string;
|
|
9089
10729
|
};
|
|
9090
10730
|
header?: never;
|
|
9091
|
-
path
|
|
9092
|
-
projectId: string;
|
|
9093
|
-
};
|
|
10731
|
+
path?: never;
|
|
9094
10732
|
cookie?: never;
|
|
9095
10733
|
};
|
|
9096
10734
|
requestBody?: never;
|
|
9097
10735
|
responses: {
|
|
9098
|
-
/** @description
|
|
10736
|
+
/** @description Package catalog */
|
|
9099
10737
|
200: {
|
|
9100
10738
|
headers: {
|
|
9101
10739
|
[name: string]: unknown;
|
|
9102
10740
|
};
|
|
9103
10741
|
content: {
|
|
9104
|
-
'application/json': components['schemas']['
|
|
10742
|
+
'application/json': components['schemas']['PackageCatalogResponse'];
|
|
9105
10743
|
};
|
|
9106
10744
|
};
|
|
9107
|
-
/** @description
|
|
9108
|
-
|
|
10745
|
+
/** @description Validation error */
|
|
10746
|
+
400: {
|
|
9109
10747
|
headers: {
|
|
9110
10748
|
[name: string]: unknown;
|
|
9111
10749
|
};
|
|
@@ -9113,8 +10751,8 @@ interface paths {
|
|
|
9113
10751
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9114
10752
|
};
|
|
9115
10753
|
};
|
|
9116
|
-
/** @description
|
|
9117
|
-
|
|
10754
|
+
/** @description Package catalog unavailable */
|
|
10755
|
+
502: {
|
|
9118
10756
|
headers: {
|
|
9119
10757
|
[name: string]: unknown;
|
|
9120
10758
|
};
|
|
@@ -9132,7 +10770,7 @@ interface paths {
|
|
|
9132
10770
|
patch?: never;
|
|
9133
10771
|
trace?: never;
|
|
9134
10772
|
};
|
|
9135
|
-
'/api/
|
|
10773
|
+
'/api/packages/search': {
|
|
9136
10774
|
parameters: {
|
|
9137
10775
|
query?: never;
|
|
9138
10776
|
header?: never;
|
|
@@ -9140,32 +10778,29 @@ interface paths {
|
|
|
9140
10778
|
cookie?: never;
|
|
9141
10779
|
};
|
|
9142
10780
|
/**
|
|
9143
|
-
*
|
|
9144
|
-
* @description
|
|
10781
|
+
* Search packages
|
|
10782
|
+
* @description Returns the full @walkeros/* package catalog; clients filter locally.
|
|
9145
10783
|
*/
|
|
9146
10784
|
get: {
|
|
9147
10785
|
parameters: {
|
|
9148
10786
|
query?: never;
|
|
9149
10787
|
header?: never;
|
|
9150
|
-
path
|
|
9151
|
-
projectId: string;
|
|
9152
|
-
sessionId: string;
|
|
9153
|
-
};
|
|
10788
|
+
path?: never;
|
|
9154
10789
|
cookie?: never;
|
|
9155
10790
|
};
|
|
9156
10791
|
requestBody?: never;
|
|
9157
10792
|
responses: {
|
|
9158
|
-
/** @description
|
|
10793
|
+
/** @description Search results */
|
|
9159
10794
|
200: {
|
|
9160
10795
|
headers: {
|
|
9161
10796
|
[name: string]: unknown;
|
|
9162
10797
|
};
|
|
9163
10798
|
content: {
|
|
9164
|
-
'application/json': components['schemas']['
|
|
10799
|
+
'application/json': components['schemas']['PackageSearchResponse'];
|
|
9165
10800
|
};
|
|
9166
10801
|
};
|
|
9167
|
-
/** @description
|
|
9168
|
-
|
|
10802
|
+
/** @description Package search unavailable */
|
|
10803
|
+
502: {
|
|
9169
10804
|
headers: {
|
|
9170
10805
|
[name: string]: unknown;
|
|
9171
10806
|
};
|
|
@@ -9173,17 +10808,35 @@ interface paths {
|
|
|
9173
10808
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9174
10809
|
};
|
|
9175
10810
|
};
|
|
9176
|
-
|
|
9177
|
-
|
|
10811
|
+
};
|
|
10812
|
+
};
|
|
10813
|
+
put?: never;
|
|
10814
|
+
/**
|
|
10815
|
+
* Log a settled search
|
|
10816
|
+
* @description Records one settled search outcome (the term the user paused on and whether the catalog matched it). Fire-and-forget; returns 204.
|
|
10817
|
+
*/
|
|
10818
|
+
post: {
|
|
10819
|
+
parameters: {
|
|
10820
|
+
query?: never;
|
|
10821
|
+
header?: never;
|
|
10822
|
+
path?: never;
|
|
10823
|
+
cookie?: never;
|
|
10824
|
+
};
|
|
10825
|
+
requestBody?: {
|
|
10826
|
+
content: {
|
|
10827
|
+
'application/json': components['schemas']['PackageSearchLogRequest'];
|
|
10828
|
+
};
|
|
10829
|
+
};
|
|
10830
|
+
responses: {
|
|
10831
|
+
/** @description Search logged */
|
|
10832
|
+
204: {
|
|
9178
10833
|
headers: {
|
|
9179
10834
|
[name: string]: unknown;
|
|
9180
10835
|
};
|
|
9181
|
-
content
|
|
9182
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
9183
|
-
};
|
|
10836
|
+
content?: never;
|
|
9184
10837
|
};
|
|
9185
|
-
/** @description
|
|
9186
|
-
|
|
10838
|
+
/** @description Validation error */
|
|
10839
|
+
400: {
|
|
9187
10840
|
headers: {
|
|
9188
10841
|
[name: string]: unknown;
|
|
9189
10842
|
};
|
|
@@ -9193,15 +10846,13 @@ interface paths {
|
|
|
9193
10846
|
};
|
|
9194
10847
|
};
|
|
9195
10848
|
};
|
|
9196
|
-
put?: never;
|
|
9197
|
-
post?: never;
|
|
9198
10849
|
delete?: never;
|
|
9199
10850
|
options?: never;
|
|
9200
10851
|
head?: never;
|
|
9201
10852
|
patch?: never;
|
|
9202
10853
|
trace?: never;
|
|
9203
10854
|
};
|
|
9204
|
-
'/api/
|
|
10855
|
+
'/api/observe/timing': {
|
|
9205
10856
|
parameters: {
|
|
9206
10857
|
query?: never;
|
|
9207
10858
|
header?: never;
|
|
@@ -9211,32 +10862,28 @@ interface paths {
|
|
|
9211
10862
|
get?: never;
|
|
9212
10863
|
put?: never;
|
|
9213
10864
|
/**
|
|
9214
|
-
*
|
|
9215
|
-
* @description
|
|
10865
|
+
* Report connect timing
|
|
10866
|
+
* @description Fire-and-forget beacon for client-side connect timing SLIs. No auth required; carries no secrets. Returns 204.
|
|
9216
10867
|
*/
|
|
9217
10868
|
post: {
|
|
9218
10869
|
parameters: {
|
|
9219
10870
|
query?: never;
|
|
9220
10871
|
header?: never;
|
|
9221
|
-
path
|
|
9222
|
-
projectId: string;
|
|
9223
|
-
};
|
|
10872
|
+
path?: never;
|
|
9224
10873
|
cookie?: never;
|
|
9225
10874
|
};
|
|
9226
10875
|
requestBody?: {
|
|
9227
10876
|
content: {
|
|
9228
|
-
'application/json': components['schemas']['
|
|
10877
|
+
'application/json': components['schemas']['ObserveTimingRequest'];
|
|
9229
10878
|
};
|
|
9230
10879
|
};
|
|
9231
10880
|
responses: {
|
|
9232
|
-
/** @description
|
|
9233
|
-
|
|
10881
|
+
/** @description Timing recorded */
|
|
10882
|
+
204: {
|
|
9234
10883
|
headers: {
|
|
9235
10884
|
[name: string]: unknown;
|
|
9236
10885
|
};
|
|
9237
|
-
content
|
|
9238
|
-
'application/json': components['schemas']['ElicitResponse'];
|
|
9239
|
-
};
|
|
10886
|
+
content?: never;
|
|
9240
10887
|
};
|
|
9241
10888
|
/** @description Validation error */
|
|
9242
10889
|
400: {
|
|
@@ -9247,26 +10894,60 @@ interface paths {
|
|
|
9247
10894
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9248
10895
|
};
|
|
9249
10896
|
};
|
|
9250
|
-
|
|
9251
|
-
|
|
10897
|
+
};
|
|
10898
|
+
};
|
|
10899
|
+
delete?: never;
|
|
10900
|
+
options?: never;
|
|
10901
|
+
head?: never;
|
|
10902
|
+
patch?: never;
|
|
10903
|
+
trace?: never;
|
|
10904
|
+
};
|
|
10905
|
+
'/api/oauth/register': {
|
|
10906
|
+
parameters: {
|
|
10907
|
+
query?: never;
|
|
10908
|
+
header?: never;
|
|
10909
|
+
path?: never;
|
|
10910
|
+
cookie?: never;
|
|
10911
|
+
};
|
|
10912
|
+
get?: never;
|
|
10913
|
+
put?: never;
|
|
10914
|
+
/**
|
|
10915
|
+
* Register a client
|
|
10916
|
+
* @description RFC 7591 dynamic client registration. Unauthenticated: a client registers itself before it holds any credential. Issues public clients only (`token_endpoint_auth_method: none`), which prove themselves with PKCE. Errors use the RFC 7591 section 3.2.2 shape, not the standard error envelope.
|
|
10917
|
+
*/
|
|
10918
|
+
post: {
|
|
10919
|
+
parameters: {
|
|
10920
|
+
query?: never;
|
|
10921
|
+
header?: never;
|
|
10922
|
+
path?: never;
|
|
10923
|
+
cookie?: never;
|
|
10924
|
+
};
|
|
10925
|
+
requestBody?: {
|
|
10926
|
+
content: {
|
|
10927
|
+
'application/json': components['schemas']['OAuthClientRegistrationRequest'];
|
|
10928
|
+
};
|
|
10929
|
+
};
|
|
10930
|
+
responses: {
|
|
10931
|
+
/** @description Client registered */
|
|
10932
|
+
201: {
|
|
9252
10933
|
headers: {
|
|
9253
10934
|
[name: string]: unknown;
|
|
9254
10935
|
};
|
|
9255
10936
|
content: {
|
|
9256
|
-
'application/json': components['schemas']['
|
|
10937
|
+
'application/json': components['schemas']['OAuthClientRegistrationResponse'];
|
|
9257
10938
|
};
|
|
9258
10939
|
};
|
|
9259
|
-
/** @description
|
|
9260
|
-
|
|
10940
|
+
/** @description Invalid client metadata or redirect URI */
|
|
10941
|
+
400: {
|
|
9261
10942
|
headers: {
|
|
9262
10943
|
[name: string]: unknown;
|
|
9263
10944
|
};
|
|
9264
10945
|
content: {
|
|
9265
|
-
'application/json': components['schemas']['
|
|
10946
|
+
'application/json': components['schemas']['OAuthRegistrationError'];
|
|
9266
10947
|
};
|
|
9267
10948
|
};
|
|
9268
|
-
/** @description
|
|
9269
|
-
|
|
10949
|
+
/** @description Registration ceiling reached (Retry-After header) */
|
|
10950
|
+
429: {
|
|
9270
10951
|
headers: {
|
|
9271
10952
|
[name: string]: unknown;
|
|
9272
10953
|
};
|
|
@@ -9282,50 +10963,79 @@ interface paths {
|
|
|
9282
10963
|
patch?: never;
|
|
9283
10964
|
trace?: never;
|
|
9284
10965
|
};
|
|
9285
|
-
'/api/
|
|
10966
|
+
'/api/oauth/device_authorization': {
|
|
9286
10967
|
parameters: {
|
|
9287
10968
|
query?: never;
|
|
9288
10969
|
header?: never;
|
|
9289
10970
|
path?: never;
|
|
9290
10971
|
cookie?: never;
|
|
9291
10972
|
};
|
|
10973
|
+
get?: never;
|
|
10974
|
+
put?: never;
|
|
9292
10975
|
/**
|
|
9293
|
-
*
|
|
9294
|
-
* @description
|
|
10976
|
+
* Start a device authorization
|
|
10977
|
+
* @description RFC 8628 section 3.1. A client that cannot host a browser redirect asks for a device code and a user code here, then polls the token endpoint while the person approves the user code at `/oauth/device`. Unauthenticated, and public clients only: the code is worth nothing until a signed-in person approves it. Body is `application/x-www-form-urlencoded`; errors use the RFC 6749 section 5.2 shape, not the standard error envelope.
|
|
9295
10978
|
*/
|
|
9296
|
-
|
|
10979
|
+
post: {
|
|
9297
10980
|
parameters: {
|
|
9298
10981
|
query?: never;
|
|
9299
10982
|
header?: never;
|
|
9300
10983
|
path?: never;
|
|
9301
10984
|
cookie?: never;
|
|
9302
10985
|
};
|
|
9303
|
-
requestBody?:
|
|
10986
|
+
requestBody?: {
|
|
10987
|
+
content: {
|
|
10988
|
+
'application/x-www-form-urlencoded': components['schemas']['DeviceAuthorizationRequest'];
|
|
10989
|
+
};
|
|
10990
|
+
};
|
|
9304
10991
|
responses: {
|
|
9305
|
-
/** @description
|
|
10992
|
+
/** @description Device authorization opened */
|
|
9306
10993
|
200: {
|
|
9307
10994
|
headers: {
|
|
9308
10995
|
[name: string]: unknown;
|
|
9309
10996
|
};
|
|
9310
10997
|
content: {
|
|
9311
|
-
'application/json': components['schemas']['
|
|
10998
|
+
'application/json': components['schemas']['DeviceAuthorizationResponse'];
|
|
9312
10999
|
};
|
|
9313
11000
|
};
|
|
9314
|
-
/** @description
|
|
11001
|
+
/** @description invalid_request, unauthorized_client, invalid_scope or invalid_target */
|
|
11002
|
+
400: {
|
|
11003
|
+
headers: {
|
|
11004
|
+
[name: string]: unknown;
|
|
11005
|
+
};
|
|
11006
|
+
content: {
|
|
11007
|
+
'application/json': components['schemas']['OAuthError'];
|
|
11008
|
+
};
|
|
11009
|
+
};
|
|
11010
|
+
/** @description invalid_client: unknown, revoked or confidential client */
|
|
9315
11011
|
401: {
|
|
9316
11012
|
headers: {
|
|
9317
11013
|
[name: string]: unknown;
|
|
9318
11014
|
};
|
|
9319
11015
|
content: {
|
|
9320
|
-
'application/json': components['schemas']['
|
|
11016
|
+
'application/json': components['schemas']['OAuthError'];
|
|
9321
11017
|
};
|
|
9322
11018
|
};
|
|
9323
11019
|
};
|
|
9324
11020
|
};
|
|
11021
|
+
delete?: never;
|
|
11022
|
+
options?: never;
|
|
11023
|
+
head?: never;
|
|
11024
|
+
patch?: never;
|
|
11025
|
+
trace?: never;
|
|
11026
|
+
};
|
|
11027
|
+
'/api/oauth/token': {
|
|
11028
|
+
parameters: {
|
|
11029
|
+
query?: never;
|
|
11030
|
+
header?: never;
|
|
11031
|
+
path?: never;
|
|
11032
|
+
cookie?: never;
|
|
11033
|
+
};
|
|
11034
|
+
get?: never;
|
|
9325
11035
|
put?: never;
|
|
9326
11036
|
/**
|
|
9327
|
-
*
|
|
9328
|
-
* @description
|
|
11037
|
+
* Exchange a grant for tokens
|
|
11038
|
+
* @description RFC 6749 section 3.2. Runs the authorization code, refresh token and device code grants. The client authenticates here: a public client with PKCE, a confidential one with HTTP Basic or a form secret. Body is `application/x-www-form-urlencoded` only; errors use the RFC 6749 section 5.2 shape, not the standard error envelope, and a failed Basic authentication is answered with a `WWW-Authenticate: Basic` challenge. Responses are never cacheable. Rate limited per `client_id`.
|
|
9329
11039
|
*/
|
|
9330
11040
|
post: {
|
|
9331
11041
|
parameters: {
|
|
@@ -9336,30 +11046,39 @@ interface paths {
|
|
|
9336
11046
|
};
|
|
9337
11047
|
requestBody?: {
|
|
9338
11048
|
content: {
|
|
9339
|
-
'application/
|
|
11049
|
+
'application/x-www-form-urlencoded': components['schemas']['TokenRequest'];
|
|
9340
11050
|
};
|
|
9341
11051
|
};
|
|
9342
11052
|
responses: {
|
|
9343
|
-
/** @description
|
|
9344
|
-
|
|
11053
|
+
/** @description Tokens issued */
|
|
11054
|
+
200: {
|
|
9345
11055
|
headers: {
|
|
9346
11056
|
[name: string]: unknown;
|
|
9347
11057
|
};
|
|
9348
11058
|
content: {
|
|
9349
|
-
'application/json': components['schemas']['
|
|
11059
|
+
'application/json': components['schemas']['TokenResponse'];
|
|
9350
11060
|
};
|
|
9351
11061
|
};
|
|
9352
|
-
/** @description
|
|
11062
|
+
/** @description invalid_request, invalid_grant, invalid_scope, invalid_target, unsupported_grant_type, or a device grant status (authorization_pending, slow_down, access_denied, expired_token) */
|
|
9353
11063
|
400: {
|
|
9354
11064
|
headers: {
|
|
9355
11065
|
[name: string]: unknown;
|
|
9356
11066
|
};
|
|
9357
11067
|
content: {
|
|
9358
|
-
'application/json': components['schemas']['
|
|
11068
|
+
'application/json': components['schemas']['OAuthError'];
|
|
9359
11069
|
};
|
|
9360
11070
|
};
|
|
9361
|
-
/** @description
|
|
11071
|
+
/** @description invalid_client: unknown, revoked, or bad credentials */
|
|
9362
11072
|
401: {
|
|
11073
|
+
headers: {
|
|
11074
|
+
[name: string]: unknown;
|
|
11075
|
+
};
|
|
11076
|
+
content: {
|
|
11077
|
+
'application/json': components['schemas']['OAuthError'];
|
|
11078
|
+
};
|
|
11079
|
+
};
|
|
11080
|
+
/** @description Per-client token budget reached (Retry-After header) */
|
|
11081
|
+
429: {
|
|
9363
11082
|
headers: {
|
|
9364
11083
|
[name: string]: unknown;
|
|
9365
11084
|
};
|
|
@@ -9375,7 +11094,7 @@ interface paths {
|
|
|
9375
11094
|
patch?: never;
|
|
9376
11095
|
trace?: never;
|
|
9377
11096
|
};
|
|
9378
|
-
'/api/
|
|
11097
|
+
'/api/oauth/revoke': {
|
|
9379
11098
|
parameters: {
|
|
9380
11099
|
query?: never;
|
|
9381
11100
|
header?: never;
|
|
@@ -9384,74 +11103,98 @@ interface paths {
|
|
|
9384
11103
|
};
|
|
9385
11104
|
get?: never;
|
|
9386
11105
|
put?: never;
|
|
9387
|
-
post?: never;
|
|
9388
11106
|
/**
|
|
9389
|
-
* Revoke
|
|
9390
|
-
* @description
|
|
11107
|
+
* Revoke a token
|
|
11108
|
+
* @description RFC 7009. Client authentication is the same as at the token endpoint. A refresh token revokes its whole rotation family, an access token only itself. An authenticated request always answers 200 with an empty body, unknown tokens included: a distinguishable answer would be an oracle. Body is `application/x-www-form-urlencoded`.
|
|
9391
11109
|
*/
|
|
9392
|
-
|
|
11110
|
+
post: {
|
|
9393
11111
|
parameters: {
|
|
9394
11112
|
query?: never;
|
|
9395
11113
|
header?: never;
|
|
9396
|
-
path
|
|
9397
|
-
tokenId: string;
|
|
9398
|
-
};
|
|
11114
|
+
path?: never;
|
|
9399
11115
|
cookie?: never;
|
|
9400
11116
|
};
|
|
9401
|
-
requestBody?:
|
|
11117
|
+
requestBody?: {
|
|
11118
|
+
content: {
|
|
11119
|
+
'application/x-www-form-urlencoded': components['schemas']['RevocationRequest'];
|
|
11120
|
+
};
|
|
11121
|
+
};
|
|
9402
11122
|
responses: {
|
|
9403
|
-
/** @description
|
|
9404
|
-
|
|
11123
|
+
/** @description Revoked, or nothing matched */
|
|
11124
|
+
200: {
|
|
9405
11125
|
headers: {
|
|
9406
11126
|
[name: string]: unknown;
|
|
9407
11127
|
};
|
|
9408
11128
|
content?: never;
|
|
9409
11129
|
};
|
|
9410
|
-
/** @description
|
|
11130
|
+
/** @description invalid_request or unsupported_token_type */
|
|
11131
|
+
400: {
|
|
11132
|
+
headers: {
|
|
11133
|
+
[name: string]: unknown;
|
|
11134
|
+
};
|
|
11135
|
+
content: {
|
|
11136
|
+
'application/json': components['schemas']['OAuthError'];
|
|
11137
|
+
};
|
|
11138
|
+
};
|
|
11139
|
+
/** @description invalid_client: unknown, revoked, or bad credentials */
|
|
9411
11140
|
401: {
|
|
9412
11141
|
headers: {
|
|
9413
11142
|
[name: string]: unknown;
|
|
9414
11143
|
};
|
|
9415
11144
|
content: {
|
|
9416
|
-
'application/json': components['schemas']['
|
|
11145
|
+
'application/json': components['schemas']['OAuthError'];
|
|
9417
11146
|
};
|
|
9418
11147
|
};
|
|
9419
11148
|
};
|
|
9420
11149
|
};
|
|
11150
|
+
delete?: never;
|
|
9421
11151
|
options?: never;
|
|
9422
11152
|
head?: never;
|
|
9423
11153
|
patch?: never;
|
|
9424
11154
|
trace?: never;
|
|
9425
11155
|
};
|
|
9426
|
-
'/api/
|
|
11156
|
+
'/api/oauth/device/approve': {
|
|
9427
11157
|
parameters: {
|
|
9428
11158
|
query?: never;
|
|
9429
11159
|
header?: never;
|
|
9430
11160
|
path?: never;
|
|
9431
11161
|
cookie?: never;
|
|
9432
11162
|
};
|
|
11163
|
+
get?: never;
|
|
11164
|
+
put?: never;
|
|
9433
11165
|
/**
|
|
9434
|
-
*
|
|
9435
|
-
* @description
|
|
11166
|
+
* Decide a device authorization
|
|
11167
|
+
* @description The person's approve or deny decision on a pending device authorization. Session only: a bearer credential is refused with 401 `SESSION_REQUIRED`, so a machine token can never approve its own device. Requires the `X-CSRF-Token` minted with the consent page, bound to this user code.
|
|
9436
11168
|
*/
|
|
9437
|
-
|
|
11169
|
+
post: {
|
|
9438
11170
|
parameters: {
|
|
9439
11171
|
query?: never;
|
|
9440
11172
|
header?: never;
|
|
9441
|
-
path
|
|
9442
|
-
projectId: string;
|
|
9443
|
-
};
|
|
11173
|
+
path?: never;
|
|
9444
11174
|
cookie?: never;
|
|
9445
11175
|
};
|
|
9446
|
-
requestBody?:
|
|
11176
|
+
requestBody?: {
|
|
11177
|
+
content: {
|
|
11178
|
+
'application/json': components['schemas']['DeviceApprovalRequest'];
|
|
11179
|
+
};
|
|
11180
|
+
};
|
|
9447
11181
|
responses: {
|
|
9448
|
-
/** @description
|
|
11182
|
+
/** @description Decision recorded */
|
|
9449
11183
|
200: {
|
|
9450
11184
|
headers: {
|
|
9451
11185
|
[name: string]: unknown;
|
|
9452
11186
|
};
|
|
9453
11187
|
content: {
|
|
9454
|
-
'application/json': components['schemas']['
|
|
11188
|
+
'application/json': components['schemas']['DeviceApprovalResponse'];
|
|
11189
|
+
};
|
|
11190
|
+
};
|
|
11191
|
+
/** @description Validation error */
|
|
11192
|
+
400: {
|
|
11193
|
+
headers: {
|
|
11194
|
+
[name: string]: unknown;
|
|
11195
|
+
};
|
|
11196
|
+
content: {
|
|
11197
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
9455
11198
|
};
|
|
9456
11199
|
};
|
|
9457
11200
|
/** @description Unauthorized */
|
|
@@ -9472,17 +11215,24 @@ interface paths {
|
|
|
9472
11215
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9473
11216
|
};
|
|
9474
11217
|
};
|
|
11218
|
+
/** @description Not found */
|
|
11219
|
+
404: {
|
|
11220
|
+
headers: {
|
|
11221
|
+
[name: string]: unknown;
|
|
11222
|
+
};
|
|
11223
|
+
content: {
|
|
11224
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
11225
|
+
};
|
|
11226
|
+
};
|
|
9475
11227
|
};
|
|
9476
11228
|
};
|
|
9477
|
-
put?: never;
|
|
9478
|
-
post?: never;
|
|
9479
11229
|
delete?: never;
|
|
9480
11230
|
options?: never;
|
|
9481
11231
|
head?: never;
|
|
9482
11232
|
patch?: never;
|
|
9483
11233
|
trace?: never;
|
|
9484
11234
|
};
|
|
9485
|
-
'/api/
|
|
11235
|
+
'/api/oauth/authorize': {
|
|
9486
11236
|
parameters: {
|
|
9487
11237
|
query?: never;
|
|
9488
11238
|
header?: never;
|
|
@@ -9492,31 +11242,29 @@ interface paths {
|
|
|
9492
11242
|
get?: never;
|
|
9493
11243
|
put?: never;
|
|
9494
11244
|
/**
|
|
9495
|
-
*
|
|
9496
|
-
* @description
|
|
11245
|
+
* Decide a consent request
|
|
11246
|
+
* @description The person's allow or deny decision on the consent screen at `/oauth/authorize`. The ticket is the HMAC-signed authorization request that screen was rendered from, so the decision cannot alter what was validated, and it is bound to the person it was minted for. Session only: a bearer credential is refused with 401 `SESSION_REQUIRED`, so a machine token can never approve a consent. The response says where to send the browser: the client's registered redirect URI, carrying `code` on allow and `error=access_denied` on deny.
|
|
9497
11247
|
*/
|
|
9498
11248
|
post: {
|
|
9499
11249
|
parameters: {
|
|
9500
11250
|
query?: never;
|
|
9501
11251
|
header?: never;
|
|
9502
|
-
path
|
|
9503
|
-
projectId: string;
|
|
9504
|
-
};
|
|
11252
|
+
path?: never;
|
|
9505
11253
|
cookie?: never;
|
|
9506
11254
|
};
|
|
9507
11255
|
requestBody?: {
|
|
9508
11256
|
content: {
|
|
9509
|
-
'application/json': components['schemas']['
|
|
11257
|
+
'application/json': components['schemas']['OAuthConsentDecisionRequest'];
|
|
9510
11258
|
};
|
|
9511
11259
|
};
|
|
9512
11260
|
responses: {
|
|
9513
|
-
/** @description
|
|
11261
|
+
/** @description Decision recorded */
|
|
9514
11262
|
200: {
|
|
9515
11263
|
headers: {
|
|
9516
11264
|
[name: string]: unknown;
|
|
9517
11265
|
};
|
|
9518
11266
|
content: {
|
|
9519
|
-
'application/json': components['schemas']['
|
|
11267
|
+
'application/json': components['schemas']['OAuthConsentDecisionResponse'];
|
|
9520
11268
|
};
|
|
9521
11269
|
};
|
|
9522
11270
|
/** @description Validation error */
|
|
@@ -9537,15 +11285,6 @@ interface paths {
|
|
|
9537
11285
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9538
11286
|
};
|
|
9539
11287
|
};
|
|
9540
|
-
/** @description Not found */
|
|
9541
|
-
404: {
|
|
9542
|
-
headers: {
|
|
9543
|
-
[name: string]: unknown;
|
|
9544
|
-
};
|
|
9545
|
-
content: {
|
|
9546
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
9547
|
-
};
|
|
9548
|
-
};
|
|
9549
11288
|
};
|
|
9550
11289
|
};
|
|
9551
11290
|
delete?: never;
|
|
@@ -9554,7 +11293,7 @@ interface paths {
|
|
|
9554
11293
|
patch?: never;
|
|
9555
11294
|
trace?: never;
|
|
9556
11295
|
};
|
|
9557
|
-
'/api/
|
|
11296
|
+
'/api/oauth/grants': {
|
|
9558
11297
|
parameters: {
|
|
9559
11298
|
query?: never;
|
|
9560
11299
|
header?: never;
|
|
@@ -9562,34 +11301,29 @@ interface paths {
|
|
|
9562
11301
|
cookie?: never;
|
|
9563
11302
|
};
|
|
9564
11303
|
/**
|
|
9565
|
-
*
|
|
9566
|
-
* @description
|
|
11304
|
+
* List connected apps
|
|
11305
|
+
* @description The apps the signed-in person has consented to, as the Connected apps page renders them. Revoked grants are absent. Session only: a bearer credential is refused with 401 `SESSION_REQUIRED`, so a machine token cannot read the connections its owner holds.
|
|
9567
11306
|
*/
|
|
9568
11307
|
get: {
|
|
9569
11308
|
parameters: {
|
|
9570
|
-
query?:
|
|
9571
|
-
/** @description Filter by package type. */
|
|
9572
|
-
type?: string;
|
|
9573
|
-
/** @description Filter by platform. */
|
|
9574
|
-
platform?: string;
|
|
9575
|
-
};
|
|
11309
|
+
query?: never;
|
|
9576
11310
|
header?: never;
|
|
9577
11311
|
path?: never;
|
|
9578
11312
|
cookie?: never;
|
|
9579
11313
|
};
|
|
9580
11314
|
requestBody?: never;
|
|
9581
11315
|
responses: {
|
|
9582
|
-
/** @description
|
|
11316
|
+
/** @description Connected apps */
|
|
9583
11317
|
200: {
|
|
9584
11318
|
headers: {
|
|
9585
11319
|
[name: string]: unknown;
|
|
9586
11320
|
};
|
|
9587
11321
|
content: {
|
|
9588
|
-
'application/json': components['schemas']['
|
|
11322
|
+
'application/json': components['schemas']['ListOAuthGrantsResponse'];
|
|
9589
11323
|
};
|
|
9590
11324
|
};
|
|
9591
|
-
/** @description
|
|
9592
|
-
|
|
11325
|
+
/** @description Unauthorized */
|
|
11326
|
+
401: {
|
|
9593
11327
|
headers: {
|
|
9594
11328
|
[name: string]: unknown;
|
|
9595
11329
|
};
|
|
@@ -9597,8 +11331,32 @@ interface paths {
|
|
|
9597
11331
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9598
11332
|
};
|
|
9599
11333
|
};
|
|
9600
|
-
|
|
9601
|
-
|
|
11334
|
+
};
|
|
11335
|
+
};
|
|
11336
|
+
put?: never;
|
|
11337
|
+
post?: never;
|
|
11338
|
+
/**
|
|
11339
|
+
* Disconnect every app
|
|
11340
|
+
* @description Revoke every grant this person holds and the tokens hanging from them. Automation tokens hang from no grant and survive. Session only: a bearer credential is refused with 401 `SESSION_REQUIRED`, so a read-scoped machine token cannot disconnect everything its owner has connected.
|
|
11341
|
+
*/
|
|
11342
|
+
delete: {
|
|
11343
|
+
parameters: {
|
|
11344
|
+
query?: never;
|
|
11345
|
+
header?: never;
|
|
11346
|
+
path?: never;
|
|
11347
|
+
cookie?: never;
|
|
11348
|
+
};
|
|
11349
|
+
requestBody?: never;
|
|
11350
|
+
responses: {
|
|
11351
|
+
/** @description Apps disconnected */
|
|
11352
|
+
204: {
|
|
11353
|
+
headers: {
|
|
11354
|
+
[name: string]: unknown;
|
|
11355
|
+
};
|
|
11356
|
+
content?: never;
|
|
11357
|
+
};
|
|
11358
|
+
/** @description Unauthorized */
|
|
11359
|
+
401: {
|
|
9602
11360
|
headers: {
|
|
9603
11361
|
[name: string]: unknown;
|
|
9604
11362
|
};
|
|
@@ -9608,15 +11366,60 @@ interface paths {
|
|
|
9608
11366
|
};
|
|
9609
11367
|
};
|
|
9610
11368
|
};
|
|
11369
|
+
options?: never;
|
|
11370
|
+
head?: never;
|
|
11371
|
+
patch?: never;
|
|
11372
|
+
trace?: never;
|
|
11373
|
+
};
|
|
11374
|
+
'/api/oauth/grants/{grantId}': {
|
|
11375
|
+
parameters: {
|
|
11376
|
+
query?: never;
|
|
11377
|
+
header?: never;
|
|
11378
|
+
path?: never;
|
|
11379
|
+
cookie?: never;
|
|
11380
|
+
};
|
|
11381
|
+
get?: never;
|
|
9611
11382
|
put?: never;
|
|
9612
11383
|
post?: never;
|
|
9613
|
-
|
|
11384
|
+
/**
|
|
11385
|
+
* Disconnect one app
|
|
11386
|
+
* @description Revoke one grant and the tokens hanging from it. Idempotent: an unknown grant, another person's grant and an already revoked one all answer 204, and the token sweep runs either way, so pressing Disconnect twice cleans up a token minted inside the first press's window. Session only: a bearer credential is refused with 401 `SESSION_REQUIRED`.
|
|
11387
|
+
*/
|
|
11388
|
+
delete: {
|
|
11389
|
+
parameters: {
|
|
11390
|
+
query?: never;
|
|
11391
|
+
header?: never;
|
|
11392
|
+
path: {
|
|
11393
|
+
grantId: string;
|
|
11394
|
+
};
|
|
11395
|
+
cookie?: never;
|
|
11396
|
+
};
|
|
11397
|
+
requestBody?: never;
|
|
11398
|
+
responses: {
|
|
11399
|
+
/** @description App disconnected */
|
|
11400
|
+
204: {
|
|
11401
|
+
headers: {
|
|
11402
|
+
[name: string]: unknown;
|
|
11403
|
+
};
|
|
11404
|
+
content?: never;
|
|
11405
|
+
};
|
|
11406
|
+
/** @description Unauthorized */
|
|
11407
|
+
401: {
|
|
11408
|
+
headers: {
|
|
11409
|
+
[name: string]: unknown;
|
|
11410
|
+
};
|
|
11411
|
+
content: {
|
|
11412
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
11413
|
+
};
|
|
11414
|
+
};
|
|
11415
|
+
};
|
|
11416
|
+
};
|
|
9614
11417
|
options?: never;
|
|
9615
11418
|
head?: never;
|
|
9616
11419
|
patch?: never;
|
|
9617
11420
|
trace?: never;
|
|
9618
11421
|
};
|
|
9619
|
-
'/api/
|
|
11422
|
+
'/api/admin/oauth/clients': {
|
|
9620
11423
|
parameters: {
|
|
9621
11424
|
query?: never;
|
|
9622
11425
|
header?: never;
|
|
@@ -9624,8 +11427,8 @@ interface paths {
|
|
|
9624
11427
|
cookie?: never;
|
|
9625
11428
|
};
|
|
9626
11429
|
/**
|
|
9627
|
-
*
|
|
9628
|
-
* @description
|
|
11430
|
+
* List OAuth clients
|
|
11431
|
+
* @description Every registered OAuth client, revoked ones included. No secret material is returned. Admin only: a non-admin caller gets 404, not 403, so the endpoint does not confirm its own existence.
|
|
9629
11432
|
*/
|
|
9630
11433
|
get: {
|
|
9631
11434
|
parameters: {
|
|
@@ -9636,17 +11439,26 @@ interface paths {
|
|
|
9636
11439
|
};
|
|
9637
11440
|
requestBody?: never;
|
|
9638
11441
|
responses: {
|
|
9639
|
-
/** @description
|
|
11442
|
+
/** @description OAuth client list */
|
|
9640
11443
|
200: {
|
|
9641
11444
|
headers: {
|
|
9642
11445
|
[name: string]: unknown;
|
|
9643
11446
|
};
|
|
9644
11447
|
content: {
|
|
9645
|
-
'application/json': components['schemas']['
|
|
11448
|
+
'application/json': components['schemas']['ListOAuthClientsResponse'];
|
|
9646
11449
|
};
|
|
9647
11450
|
};
|
|
9648
|
-
/** @description
|
|
9649
|
-
|
|
11451
|
+
/** @description Unauthorized */
|
|
11452
|
+
401: {
|
|
11453
|
+
headers: {
|
|
11454
|
+
[name: string]: unknown;
|
|
11455
|
+
};
|
|
11456
|
+
content: {
|
|
11457
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
11458
|
+
};
|
|
11459
|
+
};
|
|
11460
|
+
/** @description Not found */
|
|
11461
|
+
404: {
|
|
9650
11462
|
headers: {
|
|
9651
11463
|
[name: string]: unknown;
|
|
9652
11464
|
};
|
|
@@ -9658,8 +11470,8 @@ interface paths {
|
|
|
9658
11470
|
};
|
|
9659
11471
|
put?: never;
|
|
9660
11472
|
/**
|
|
9661
|
-
*
|
|
9662
|
-
* @description
|
|
11473
|
+
* Create a confidential OAuth client
|
|
11474
|
+
* @description Create an OAuth client that authenticates with a secret. The raw secret is returned exactly once and is never retrievable afterwards. Admin only: a non-admin caller gets 404, not 403.
|
|
9663
11475
|
*/
|
|
9664
11476
|
post: {
|
|
9665
11477
|
parameters: {
|
|
@@ -9670,16 +11482,18 @@ interface paths {
|
|
|
9670
11482
|
};
|
|
9671
11483
|
requestBody?: {
|
|
9672
11484
|
content: {
|
|
9673
|
-
'application/json': components['schemas']['
|
|
11485
|
+
'application/json': components['schemas']['CreateOAuthClientRequest'];
|
|
9674
11486
|
};
|
|
9675
11487
|
};
|
|
9676
|
-
responses: {
|
|
9677
|
-
/** @description
|
|
9678
|
-
|
|
11488
|
+
responses: {
|
|
11489
|
+
/** @description Client created */
|
|
11490
|
+
201: {
|
|
9679
11491
|
headers: {
|
|
9680
11492
|
[name: string]: unknown;
|
|
9681
11493
|
};
|
|
9682
|
-
content
|
|
11494
|
+
content: {
|
|
11495
|
+
'application/json': components['schemas']['CreateOAuthClientResponse'];
|
|
11496
|
+
};
|
|
9683
11497
|
};
|
|
9684
11498
|
/** @description Validation error */
|
|
9685
11499
|
400: {
|
|
@@ -9690,6 +11504,24 @@ interface paths {
|
|
|
9690
11504
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9691
11505
|
};
|
|
9692
11506
|
};
|
|
11507
|
+
/** @description Unauthorized */
|
|
11508
|
+
401: {
|
|
11509
|
+
headers: {
|
|
11510
|
+
[name: string]: unknown;
|
|
11511
|
+
};
|
|
11512
|
+
content: {
|
|
11513
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
11514
|
+
};
|
|
11515
|
+
};
|
|
11516
|
+
/** @description Not found */
|
|
11517
|
+
404: {
|
|
11518
|
+
headers: {
|
|
11519
|
+
[name: string]: unknown;
|
|
11520
|
+
};
|
|
11521
|
+
content: {
|
|
11522
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
11523
|
+
};
|
|
11524
|
+
};
|
|
9693
11525
|
};
|
|
9694
11526
|
};
|
|
9695
11527
|
delete?: never;
|
|
@@ -9698,7 +11530,7 @@ interface paths {
|
|
|
9698
11530
|
patch?: never;
|
|
9699
11531
|
trace?: never;
|
|
9700
11532
|
};
|
|
9701
|
-
'/api/
|
|
11533
|
+
'/api/admin/oauth/clients/{clientId}': {
|
|
9702
11534
|
parameters: {
|
|
9703
11535
|
query?: never;
|
|
9704
11536
|
header?: never;
|
|
@@ -9707,32 +11539,40 @@ interface paths {
|
|
|
9707
11539
|
};
|
|
9708
11540
|
get?: never;
|
|
9709
11541
|
put?: never;
|
|
11542
|
+
post?: never;
|
|
9710
11543
|
/**
|
|
9711
|
-
*
|
|
9712
|
-
* @description
|
|
11544
|
+
* Revoke an OAuth client
|
|
11545
|
+
* @description Revoke a client together with the grants consented to it and the tokens minted under them. Admin only: a non-admin caller gets 404, not 403, the same answer an unknown client id gets.
|
|
9713
11546
|
*/
|
|
9714
|
-
|
|
11547
|
+
delete: {
|
|
9715
11548
|
parameters: {
|
|
9716
11549
|
query?: never;
|
|
9717
11550
|
header?: never;
|
|
9718
|
-
path
|
|
9719
|
-
|
|
9720
|
-
};
|
|
9721
|
-
requestBody?: {
|
|
9722
|
-
content: {
|
|
9723
|
-
'application/json': components['schemas']['ObserveTimingRequest'];
|
|
11551
|
+
path: {
|
|
11552
|
+
clientId: string;
|
|
9724
11553
|
};
|
|
11554
|
+
cookie?: never;
|
|
9725
11555
|
};
|
|
11556
|
+
requestBody?: never;
|
|
9726
11557
|
responses: {
|
|
9727
|
-
/** @description
|
|
11558
|
+
/** @description Client revoked */
|
|
9728
11559
|
204: {
|
|
9729
11560
|
headers: {
|
|
9730
11561
|
[name: string]: unknown;
|
|
9731
11562
|
};
|
|
9732
11563
|
content?: never;
|
|
9733
11564
|
};
|
|
9734
|
-
/** @description
|
|
9735
|
-
|
|
11565
|
+
/** @description Unauthorized */
|
|
11566
|
+
401: {
|
|
11567
|
+
headers: {
|
|
11568
|
+
[name: string]: unknown;
|
|
11569
|
+
};
|
|
11570
|
+
content: {
|
|
11571
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
11572
|
+
};
|
|
11573
|
+
};
|
|
11574
|
+
/** @description Not found */
|
|
11575
|
+
404: {
|
|
9736
11576
|
headers: {
|
|
9737
11577
|
[name: string]: unknown;
|
|
9738
11578
|
};
|
|
@@ -9742,7 +11582,6 @@ interface paths {
|
|
|
9742
11582
|
};
|
|
9743
11583
|
};
|
|
9744
11584
|
};
|
|
9745
|
-
delete?: never;
|
|
9746
11585
|
options?: never;
|
|
9747
11586
|
head?: never;
|
|
9748
11587
|
patch?: never;
|
|
@@ -10127,6 +11966,10 @@ interface components {
|
|
|
10127
11966
|
*/
|
|
10128
11967
|
updatedAt: string;
|
|
10129
11968
|
};
|
|
11969
|
+
DeploySettingsRequest: {
|
|
11970
|
+
flow?: string;
|
|
11971
|
+
humanText?: string;
|
|
11972
|
+
};
|
|
10130
11973
|
DeploySettingsResponse: {
|
|
10131
11974
|
deploymentId: string;
|
|
10132
11975
|
/** @example cfg_a1b2c3d4 */
|
|
@@ -10295,9 +12138,9 @@ interface components {
|
|
|
10295
12138
|
| 'active'
|
|
10296
12139
|
| 'stopped'
|
|
10297
12140
|
| 'failed';
|
|
10298
|
-
currentVersion: components['schemas']['DeploymentVersionDetail'];
|
|
12141
|
+
currentVersion: components['schemas']['DeploymentVersionDetail'] | null;
|
|
10299
12142
|
versions: components['schemas']['DeploymentVersionHistoryEntry'][];
|
|
10300
|
-
error: components['schemas']['DeploymentError'];
|
|
12143
|
+
error: components['schemas']['DeploymentError'] | null;
|
|
10301
12144
|
recentErrors?:
|
|
10302
12145
|
| {
|
|
10303
12146
|
message: string;
|
|
@@ -10342,7 +12185,7 @@ interface components {
|
|
|
10342
12185
|
/** Format: date-time */
|
|
10343
12186
|
publishedAt: string;
|
|
10344
12187
|
publishedBy: string | null;
|
|
10345
|
-
}
|
|
12188
|
+
};
|
|
10346
12189
|
DeploymentVersionHistoryEntry: {
|
|
10347
12190
|
versionNumber: number;
|
|
10348
12191
|
status: string;
|
|
@@ -10363,7 +12206,7 @@ interface components {
|
|
|
10363
12206
|
*/
|
|
10364
12207
|
phase: 'preflight' | 'deploy' | 'bundle' | 'publish' | 'provision';
|
|
10365
12208
|
detail?: string;
|
|
10366
|
-
}
|
|
12209
|
+
};
|
|
10367
12210
|
CreateDeploymentResponse: {
|
|
10368
12211
|
/** @example dep_a1b2c3d4 */
|
|
10369
12212
|
id: string;
|
|
@@ -10568,9 +12411,48 @@ interface components {
|
|
|
10568
12411
|
/** Format: date-time */
|
|
10569
12412
|
createdAt: string;
|
|
10570
12413
|
createdBy: string | null;
|
|
12414
|
+
createdByLabel: string | null;
|
|
12415
|
+
rationale?: components['schemas']['ReleaseRationaleSummary'] | null;
|
|
10571
12416
|
};
|
|
10572
|
-
|
|
10573
|
-
|
|
12417
|
+
ReleaseRationaleSummary: {
|
|
12418
|
+
hasHumanText: boolean;
|
|
12419
|
+
hasGeneratedSummary: boolean;
|
|
12420
|
+
firstLine: string | null;
|
|
12421
|
+
};
|
|
12422
|
+
ReleaseContentResponse: {
|
|
12423
|
+
/** @example ver_a1b2c3d4 */
|
|
12424
|
+
versionId: string;
|
|
12425
|
+
/** @example 22 */
|
|
12426
|
+
versionNumber: number;
|
|
12427
|
+
content: components['schemas']['FlowConfig'];
|
|
12428
|
+
/**
|
|
12429
|
+
* Format: date-time
|
|
12430
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12431
|
+
*/
|
|
12432
|
+
createdAt: string;
|
|
12433
|
+
/** @enum {string} */
|
|
12434
|
+
createdBy: 'user' | 'auto_save' | 'restore' | 'deploy' | 'preview';
|
|
12435
|
+
};
|
|
12436
|
+
ReleaseDiff: {
|
|
12437
|
+
/** @example ver_a1b2c3d4 */
|
|
12438
|
+
prevVersionId: string;
|
|
12439
|
+
prevVersionNumber: number;
|
|
12440
|
+
text: string;
|
|
12441
|
+
contentIdentical: boolean;
|
|
12442
|
+
};
|
|
12443
|
+
ReleaseDetailResponse: {
|
|
12444
|
+
/** @example ver_a1b2c3d4 */
|
|
12445
|
+
versionId: string;
|
|
12446
|
+
versionNumber: number;
|
|
12447
|
+
contentHash: string | null;
|
|
12448
|
+
/**
|
|
12449
|
+
* Format: date-time
|
|
12450
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12451
|
+
*/
|
|
12452
|
+
createdAt: string;
|
|
12453
|
+
createdBy: string;
|
|
12454
|
+
rationale: components['schemas']['VersionAnnotation'] | null;
|
|
12455
|
+
diff: components['schemas']['ReleaseDiff'] | null;
|
|
10574
12456
|
};
|
|
10575
12457
|
VersionAnnotation: {
|
|
10576
12458
|
/** @example ver_a1b2c3d4 */
|
|
@@ -10590,6 +12472,9 @@ interface components {
|
|
|
10590
12472
|
*/
|
|
10591
12473
|
updatedAt: string;
|
|
10592
12474
|
};
|
|
12475
|
+
ListVersionAnnotationsResponse: {
|
|
12476
|
+
annotations: components['schemas']['VersionAnnotation'][];
|
|
12477
|
+
};
|
|
10593
12478
|
UpsertVersionAnnotationResponse: {
|
|
10594
12479
|
/** @example ver_a1b2c3d4 */
|
|
10595
12480
|
versionId: string;
|
|
@@ -10616,75 +12501,414 @@ interface components {
|
|
|
10616
12501
|
/** @example thr_a1b2c3d4 */
|
|
10617
12502
|
id: string;
|
|
10618
12503
|
/**
|
|
10619
|
-
* @example release
|
|
12504
|
+
* @example release
|
|
12505
|
+
* @enum {string}
|
|
12506
|
+
*/
|
|
12507
|
+
anchorType: 'step' | 'entity_action' | 'release' | 'contract' | 'tag';
|
|
12508
|
+
anchorKey: string;
|
|
12509
|
+
anchorLabel: string;
|
|
12510
|
+
/**
|
|
12511
|
+
* @example open
|
|
12512
|
+
* @enum {string}
|
|
12513
|
+
*/
|
|
12514
|
+
status: 'open' | 'resolved';
|
|
12515
|
+
resolvedByVersionId: string | null;
|
|
12516
|
+
resolvedByVersionNumber: number | null;
|
|
12517
|
+
/**
|
|
12518
|
+
* Format: date-time
|
|
12519
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12520
|
+
*/
|
|
12521
|
+
resolvedAt: string | null;
|
|
12522
|
+
resolvedBy: string | null;
|
|
12523
|
+
createdBy: string;
|
|
12524
|
+
/**
|
|
12525
|
+
* Format: date-time
|
|
12526
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12527
|
+
*/
|
|
12528
|
+
createdAt: string;
|
|
12529
|
+
/**
|
|
12530
|
+
* Format: date-time
|
|
12531
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12532
|
+
*/
|
|
12533
|
+
updatedAt: string;
|
|
12534
|
+
messageCount: number;
|
|
12535
|
+
messages?: components['schemas']['HubMessage'][];
|
|
12536
|
+
hasMoreMessages?: boolean;
|
|
12537
|
+
};
|
|
12538
|
+
HubMessage: {
|
|
12539
|
+
id: string;
|
|
12540
|
+
/** @example user_a1b2c3d4 */
|
|
12541
|
+
author: string;
|
|
12542
|
+
text: string;
|
|
12543
|
+
/**
|
|
12544
|
+
* Format: date-time
|
|
12545
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12546
|
+
*/
|
|
12547
|
+
createdAt: string;
|
|
12548
|
+
};
|
|
12549
|
+
HubThreadResponse: {
|
|
12550
|
+
/** @example thr_a1b2c3d4 */
|
|
12551
|
+
id: string;
|
|
12552
|
+
/**
|
|
12553
|
+
* @example release
|
|
12554
|
+
* @enum {string}
|
|
12555
|
+
*/
|
|
12556
|
+
anchorType: 'step' | 'entity_action' | 'release' | 'contract' | 'tag';
|
|
12557
|
+
anchorKey: string;
|
|
12558
|
+
anchorLabel: string;
|
|
12559
|
+
/**
|
|
12560
|
+
* @example open
|
|
12561
|
+
* @enum {string}
|
|
12562
|
+
*/
|
|
12563
|
+
status: 'open' | 'resolved';
|
|
12564
|
+
resolvedByVersionId: string | null;
|
|
12565
|
+
resolvedByVersionNumber: number | null;
|
|
12566
|
+
/**
|
|
12567
|
+
* Format: date-time
|
|
12568
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12569
|
+
*/
|
|
12570
|
+
resolvedAt: string | null;
|
|
12571
|
+
resolvedBy: string | null;
|
|
12572
|
+
createdBy: string;
|
|
12573
|
+
/**
|
|
12574
|
+
* Format: date-time
|
|
12575
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12576
|
+
*/
|
|
12577
|
+
createdAt: string;
|
|
12578
|
+
/**
|
|
12579
|
+
* Format: date-time
|
|
12580
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12581
|
+
*/
|
|
12582
|
+
updatedAt: string;
|
|
12583
|
+
messageCount: number;
|
|
12584
|
+
messages?: components['schemas']['HubMessage'][];
|
|
12585
|
+
hasMoreMessages?: boolean;
|
|
12586
|
+
};
|
|
12587
|
+
ListKnowledgeResponse: {
|
|
12588
|
+
entries: components['schemas']['KnowledgeEntry'][];
|
|
12589
|
+
hasMoreEntries: boolean;
|
|
12590
|
+
};
|
|
12591
|
+
KnowledgeEntry:
|
|
12592
|
+
| components['schemas']['KnowledgeThread']
|
|
12593
|
+
| components['schemas']['KnowledgeDescription'];
|
|
12594
|
+
KnowledgeThread: {
|
|
12595
|
+
id: string;
|
|
12596
|
+
anchorKey: string;
|
|
12597
|
+
anchorLabel: string;
|
|
12598
|
+
frameId: string | null;
|
|
12599
|
+
frameName: string | null;
|
|
12600
|
+
flowId: string | null;
|
|
12601
|
+
subjectKey: string | null;
|
|
12602
|
+
spatial: components['schemas']['KnowledgeSpatial'] | null;
|
|
12603
|
+
validity: components['schemas']['KnowledgeValidity'];
|
|
12604
|
+
/** @enum {string} */
|
|
12605
|
+
freshness: 'current' | 'subject_changed' | 'unknown';
|
|
12606
|
+
author: components['schemas']['KnowledgeAuthor'];
|
|
12607
|
+
/** @enum {string} */
|
|
12608
|
+
source: 'tag_mode' | 'hub' | 'mcp';
|
|
12609
|
+
/**
|
|
12610
|
+
* Format: date-time
|
|
12611
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12612
|
+
*/
|
|
12613
|
+
updatedAt: string;
|
|
12614
|
+
/**
|
|
12615
|
+
* @description discriminator enum property added by openapi-typescript
|
|
12616
|
+
* @enum {string}
|
|
12617
|
+
*/
|
|
12618
|
+
kind: 'thread';
|
|
12619
|
+
/**
|
|
12620
|
+
* @example tag
|
|
12621
|
+
* @enum {string}
|
|
12622
|
+
*/
|
|
12623
|
+
anchorType:
|
|
12624
|
+
| 'step'
|
|
12625
|
+
| 'entity_action'
|
|
12626
|
+
| 'release'
|
|
12627
|
+
| 'contract'
|
|
12628
|
+
| 'tag'
|
|
12629
|
+
| 'page';
|
|
12630
|
+
/**
|
|
12631
|
+
* @example open
|
|
12632
|
+
* @enum {string}
|
|
12633
|
+
*/
|
|
12634
|
+
status: 'open' | 'resolved';
|
|
12635
|
+
/**
|
|
12636
|
+
* Format: date-time
|
|
12637
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12638
|
+
*/
|
|
12639
|
+
createdAt: string;
|
|
12640
|
+
messageCount: number;
|
|
12641
|
+
messages?: components['schemas']['KnowledgeMessage'][];
|
|
12642
|
+
hasMoreMessages?: boolean;
|
|
12643
|
+
};
|
|
12644
|
+
KnowledgeSpatial: {
|
|
12645
|
+
at: {
|
|
12646
|
+
x: number;
|
|
12647
|
+
y: number;
|
|
12648
|
+
};
|
|
12649
|
+
element?: {
|
|
12650
|
+
[key: string]: unknown;
|
|
12651
|
+
};
|
|
12652
|
+
};
|
|
12653
|
+
KnowledgeValidity:
|
|
12654
|
+
| {
|
|
12655
|
+
/** @enum {string} */
|
|
12656
|
+
tier: 'release';
|
|
12657
|
+
versionId: string;
|
|
12658
|
+
versionNumber: number;
|
|
12659
|
+
promoted: boolean;
|
|
12660
|
+
}
|
|
12661
|
+
| {
|
|
12662
|
+
/** @enum {string} */
|
|
12663
|
+
tier: 'draft';
|
|
12664
|
+
versionId?: string;
|
|
12665
|
+
}
|
|
12666
|
+
| {
|
|
12667
|
+
/** @enum {string} */
|
|
12668
|
+
tier: 'none';
|
|
12669
|
+
};
|
|
12670
|
+
KnowledgeAuthor: {
|
|
12671
|
+
/** @enum {string} */
|
|
12672
|
+
kind: 'user' | 'preview' | 'agent';
|
|
12673
|
+
id: string | null;
|
|
12674
|
+
label: string;
|
|
12675
|
+
};
|
|
12676
|
+
KnowledgeMessage: {
|
|
12677
|
+
id: string;
|
|
12678
|
+
/** @example user_a1b2c3d4 */
|
|
12679
|
+
author: string;
|
|
12680
|
+
/** @example ayla@elbwalker.com */
|
|
12681
|
+
authorLabel: string;
|
|
12682
|
+
text: string;
|
|
12683
|
+
/**
|
|
12684
|
+
* Format: date-time
|
|
12685
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12686
|
+
*/
|
|
12687
|
+
createdAt: string;
|
|
12688
|
+
clientMessageId: string | null;
|
|
12689
|
+
};
|
|
12690
|
+
KnowledgeDescription: {
|
|
12691
|
+
id: string;
|
|
12692
|
+
anchorKey: string;
|
|
12693
|
+
anchorLabel: string;
|
|
12694
|
+
frameId: string | null;
|
|
12695
|
+
frameName: string | null;
|
|
12696
|
+
flowId: string | null;
|
|
12697
|
+
subjectKey: string | null;
|
|
12698
|
+
spatial: components['schemas']['KnowledgeSpatial'] | null;
|
|
12699
|
+
validity: components['schemas']['KnowledgeValidity'];
|
|
12700
|
+
/** @enum {string} */
|
|
12701
|
+
freshness: 'current' | 'subject_changed' | 'unknown';
|
|
12702
|
+
author: components['schemas']['KnowledgeAuthor'];
|
|
12703
|
+
/** @enum {string} */
|
|
12704
|
+
source: 'tag_mode' | 'hub' | 'mcp';
|
|
12705
|
+
/**
|
|
12706
|
+
* Format: date-time
|
|
12707
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12708
|
+
*/
|
|
12709
|
+
updatedAt: string;
|
|
12710
|
+
/**
|
|
12711
|
+
* @description discriminator enum property added by openapi-typescript
|
|
12712
|
+
* @enum {string}
|
|
12713
|
+
*/
|
|
12714
|
+
kind: 'description';
|
|
12715
|
+
/**
|
|
12716
|
+
* @example tag
|
|
12717
|
+
* @enum {string}
|
|
12718
|
+
*/
|
|
12719
|
+
anchorType: 'tag' | 'page';
|
|
12720
|
+
body: string;
|
|
12721
|
+
};
|
|
12722
|
+
KnowledgeThreadResponse: {
|
|
12723
|
+
id: string;
|
|
12724
|
+
anchorKey: string;
|
|
12725
|
+
anchorLabel: string;
|
|
12726
|
+
frameId: string | null;
|
|
12727
|
+
frameName: string | null;
|
|
12728
|
+
flowId: string | null;
|
|
12729
|
+
subjectKey: string | null;
|
|
12730
|
+
spatial: components['schemas']['KnowledgeSpatial'] | null;
|
|
12731
|
+
validity: components['schemas']['KnowledgeValidity'];
|
|
12732
|
+
/** @enum {string} */
|
|
12733
|
+
freshness: 'current' | 'subject_changed' | 'unknown';
|
|
12734
|
+
author: components['schemas']['KnowledgeAuthor'];
|
|
12735
|
+
/** @enum {string} */
|
|
12736
|
+
source: 'tag_mode' | 'hub' | 'mcp';
|
|
12737
|
+
/**
|
|
12738
|
+
* Format: date-time
|
|
12739
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12740
|
+
*/
|
|
12741
|
+
updatedAt: string;
|
|
12742
|
+
/** @enum {string} */
|
|
12743
|
+
kind: 'thread';
|
|
12744
|
+
/**
|
|
12745
|
+
* @example tag
|
|
10620
12746
|
* @enum {string}
|
|
10621
12747
|
*/
|
|
10622
|
-
anchorType:
|
|
10623
|
-
|
|
10624
|
-
|
|
12748
|
+
anchorType:
|
|
12749
|
+
| 'step'
|
|
12750
|
+
| 'entity_action'
|
|
12751
|
+
| 'release'
|
|
12752
|
+
| 'contract'
|
|
12753
|
+
| 'tag'
|
|
12754
|
+
| 'page';
|
|
10625
12755
|
/**
|
|
10626
12756
|
* @example open
|
|
10627
12757
|
* @enum {string}
|
|
10628
12758
|
*/
|
|
10629
12759
|
status: 'open' | 'resolved';
|
|
10630
|
-
resolvedByVersionId: string | null;
|
|
10631
|
-
resolvedByVersionNumber: number | null;
|
|
10632
|
-
/**
|
|
10633
|
-
* Format: date-time
|
|
10634
|
-
* @example 2026-01-26T14:30:00.000Z
|
|
10635
|
-
*/
|
|
10636
|
-
resolvedAt: string | null;
|
|
10637
|
-
resolvedBy: string | null;
|
|
10638
|
-
createdBy: string;
|
|
10639
12760
|
/**
|
|
10640
12761
|
* Format: date-time
|
|
10641
12762
|
* @example 2026-01-26T14:30:00.000Z
|
|
10642
12763
|
*/
|
|
10643
12764
|
createdAt: string;
|
|
12765
|
+
messageCount: number;
|
|
12766
|
+
messages?: components['schemas']['KnowledgeMessage'][];
|
|
12767
|
+
hasMoreMessages?: boolean;
|
|
12768
|
+
};
|
|
12769
|
+
KnowledgeDescriptionResponse: {
|
|
12770
|
+
id: string;
|
|
12771
|
+
anchorKey: string;
|
|
12772
|
+
anchorLabel: string;
|
|
12773
|
+
frameId: string | null;
|
|
12774
|
+
frameName: string | null;
|
|
12775
|
+
flowId: string | null;
|
|
12776
|
+
subjectKey: string | null;
|
|
12777
|
+
spatial: components['schemas']['KnowledgeSpatial'] | null;
|
|
12778
|
+
validity: components['schemas']['KnowledgeValidity'];
|
|
12779
|
+
/** @enum {string} */
|
|
12780
|
+
freshness: 'current' | 'subject_changed' | 'unknown';
|
|
12781
|
+
author: components['schemas']['KnowledgeAuthor'];
|
|
12782
|
+
/** @enum {string} */
|
|
12783
|
+
source: 'tag_mode' | 'hub' | 'mcp';
|
|
10644
12784
|
/**
|
|
10645
12785
|
* Format: date-time
|
|
10646
12786
|
* @example 2026-01-26T14:30:00.000Z
|
|
10647
12787
|
*/
|
|
10648
12788
|
updatedAt: string;
|
|
10649
|
-
|
|
10650
|
-
|
|
10651
|
-
|
|
12789
|
+
/** @enum {string} */
|
|
12790
|
+
kind: 'description';
|
|
12791
|
+
/**
|
|
12792
|
+
* @example tag
|
|
12793
|
+
* @enum {string}
|
|
12794
|
+
*/
|
|
12795
|
+
anchorType: 'tag' | 'page';
|
|
12796
|
+
body: string;
|
|
10652
12797
|
};
|
|
10653
|
-
|
|
12798
|
+
FrameInput: {
|
|
12799
|
+
name: string;
|
|
12800
|
+
/** @example frm_V1StGXR8Z5jdHi6BmyT7K */
|
|
12801
|
+
parentId: string | null;
|
|
12802
|
+
placements: components['schemas']['FramePlacement'][];
|
|
12803
|
+
size: components['schemas']['PlanSize'];
|
|
12804
|
+
marks: {
|
|
12805
|
+
[key: string]: unknown;
|
|
12806
|
+
};
|
|
12807
|
+
/** @example frm_V1StGXR8Z5jdHi6BmyT7K */
|
|
12808
|
+
extends: string | null;
|
|
12809
|
+
source: components['schemas']['FrameSource'];
|
|
12810
|
+
/** @enum {string} */
|
|
12811
|
+
origin: 'drawn' | 'imported' | 'observed';
|
|
12812
|
+
flowId: string | null;
|
|
12813
|
+
};
|
|
12814
|
+
FramePlacement: {
|
|
10654
12815
|
id: string;
|
|
10655
|
-
|
|
10656
|
-
|
|
10657
|
-
|
|
12816
|
+
rect: components['schemas']['PlanRect'];
|
|
12817
|
+
selector?: string;
|
|
12818
|
+
anchor?: {
|
|
12819
|
+
[key: string]: unknown;
|
|
12820
|
+
};
|
|
12821
|
+
};
|
|
12822
|
+
PlanRect: {
|
|
12823
|
+
x: number;
|
|
12824
|
+
y: number;
|
|
12825
|
+
w: number;
|
|
12826
|
+
h: number;
|
|
12827
|
+
};
|
|
12828
|
+
PlanSize: {
|
|
12829
|
+
width: number;
|
|
12830
|
+
height: number;
|
|
12831
|
+
};
|
|
12832
|
+
FrameSource:
|
|
12833
|
+
| {
|
|
12834
|
+
/** @enum {string} */
|
|
12835
|
+
kind: 'page';
|
|
12836
|
+
key: string;
|
|
12837
|
+
url: string;
|
|
12838
|
+
}
|
|
12839
|
+
| {
|
|
12840
|
+
/** @enum {string} */
|
|
12841
|
+
kind: 'figma';
|
|
12842
|
+
fileKey: string;
|
|
12843
|
+
nodeId: string;
|
|
12844
|
+
}
|
|
12845
|
+
| {
|
|
12846
|
+
/** @enum {string} */
|
|
12847
|
+
kind: 'image';
|
|
12848
|
+
}
|
|
12849
|
+
| null;
|
|
12850
|
+
Frame: {
|
|
12851
|
+
/** @example frm_V1StGXR8Z5jdHi6BmyT7K */
|
|
12852
|
+
id: string;
|
|
12853
|
+
projectId: string;
|
|
12854
|
+
name: string;
|
|
12855
|
+
parentId: string | null;
|
|
12856
|
+
placements: components['schemas']['FramePlacement'][];
|
|
12857
|
+
size: components['schemas']['PlanSize'];
|
|
12858
|
+
marks: {
|
|
12859
|
+
[key: string]: unknown;
|
|
12860
|
+
};
|
|
12861
|
+
extends: string | null;
|
|
12862
|
+
source: components['schemas']['FrameSource'];
|
|
12863
|
+
/** @enum {string} */
|
|
12864
|
+
origin: 'drawn' | 'imported' | 'observed';
|
|
12865
|
+
flowId: string | null;
|
|
12866
|
+
screenshot: components['schemas']['FrameScreenshot'] | null;
|
|
12867
|
+
version: number;
|
|
10658
12868
|
/**
|
|
10659
12869
|
* Format: date-time
|
|
10660
12870
|
* @example 2026-01-26T14:30:00.000Z
|
|
10661
12871
|
*/
|
|
10662
12872
|
createdAt: string;
|
|
10663
|
-
};
|
|
10664
|
-
HubThreadResponse: {
|
|
10665
|
-
/** @example thr_a1b2c3d4 */
|
|
10666
|
-
id: string;
|
|
10667
12873
|
/**
|
|
10668
|
-
*
|
|
10669
|
-
* @
|
|
12874
|
+
* Format: date-time
|
|
12875
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
10670
12876
|
*/
|
|
10671
|
-
|
|
10672
|
-
|
|
10673
|
-
|
|
12877
|
+
updatedAt: string;
|
|
12878
|
+
createdBy: string;
|
|
12879
|
+
updatedBy: string;
|
|
10674
12880
|
/**
|
|
10675
|
-
*
|
|
10676
|
-
* @
|
|
12881
|
+
* Format: date-time
|
|
12882
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
10677
12883
|
*/
|
|
10678
|
-
|
|
10679
|
-
|
|
10680
|
-
|
|
12884
|
+
deletedAt: string | null;
|
|
12885
|
+
};
|
|
12886
|
+
FrameScreenshot: {
|
|
12887
|
+
assetId: string;
|
|
10681
12888
|
/**
|
|
10682
12889
|
* Format: date-time
|
|
10683
12890
|
* @example 2026-01-26T14:30:00.000Z
|
|
10684
12891
|
*/
|
|
10685
|
-
|
|
10686
|
-
|
|
10687
|
-
|
|
12892
|
+
capturedAt: string;
|
|
12893
|
+
size: components['schemas']['PlanSize'];
|
|
12894
|
+
dpr: number;
|
|
12895
|
+
capturedRect: components['schemas']['PlanRect'];
|
|
12896
|
+
};
|
|
12897
|
+
FrameLean: {
|
|
12898
|
+
/** @example frm_V1StGXR8Z5jdHi6BmyT7K */
|
|
12899
|
+
id: string;
|
|
12900
|
+
projectId: string;
|
|
12901
|
+
name: string;
|
|
12902
|
+
parentId: string | null;
|
|
12903
|
+
placements: components['schemas']['FramePlacement'][];
|
|
12904
|
+
size: components['schemas']['PlanSize'];
|
|
12905
|
+
extends: string | null;
|
|
12906
|
+
source: components['schemas']['FrameSource'];
|
|
12907
|
+
/** @enum {string} */
|
|
12908
|
+
origin: 'drawn' | 'imported' | 'observed';
|
|
12909
|
+
flowId: string | null;
|
|
12910
|
+
screenshot: components['schemas']['FrameScreenshot'] | null;
|
|
12911
|
+
version: number;
|
|
10688
12912
|
/**
|
|
10689
12913
|
* Format: date-time
|
|
10690
12914
|
* @example 2026-01-26T14:30:00.000Z
|
|
@@ -10695,9 +12919,30 @@ interface components {
|
|
|
10695
12919
|
* @example 2026-01-26T14:30:00.000Z
|
|
10696
12920
|
*/
|
|
10697
12921
|
updatedAt: string;
|
|
10698
|
-
|
|
10699
|
-
|
|
10700
|
-
|
|
12922
|
+
createdBy: string;
|
|
12923
|
+
updatedBy: string;
|
|
12924
|
+
/**
|
|
12925
|
+
* Format: date-time
|
|
12926
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
12927
|
+
*/
|
|
12928
|
+
deletedAt: string | null;
|
|
12929
|
+
};
|
|
12930
|
+
FrameListResponse: {
|
|
12931
|
+
frames: components['schemas']['Frame'][];
|
|
12932
|
+
};
|
|
12933
|
+
FrameLeanListResponse: {
|
|
12934
|
+
frames: components['schemas']['FrameLean'][];
|
|
12935
|
+
};
|
|
12936
|
+
PutFrameResponse: {
|
|
12937
|
+
version: number;
|
|
12938
|
+
};
|
|
12939
|
+
FrameConflictResponse: {
|
|
12940
|
+
error: {
|
|
12941
|
+
/** @enum {string} */
|
|
12942
|
+
code: 'FRAME_VERSION_CONFLICT';
|
|
12943
|
+
message: string;
|
|
12944
|
+
};
|
|
12945
|
+
head: components['schemas']['Frame'];
|
|
10701
12946
|
};
|
|
10702
12947
|
SummarizeReleaseResponse: {
|
|
10703
12948
|
/** @enum {string} */
|
|
@@ -10822,8 +13067,8 @@ interface components {
|
|
|
10822
13067
|
observedFlowName: string | null;
|
|
10823
13068
|
serverFlowName: string | null;
|
|
10824
13069
|
serverEndpoint: string | null;
|
|
10825
|
-
web: components['schemas']['ObserveSessionWeb'];
|
|
10826
|
-
server: components['schemas']['ObserveSessionServer'];
|
|
13070
|
+
web: components['schemas']['ObserveSessionWeb'] | null;
|
|
13071
|
+
server: components['schemas']['ObserveSessionServer'] | null;
|
|
10827
13072
|
/** Format: date-time */
|
|
10828
13073
|
expiresAt: string;
|
|
10829
13074
|
recordsReceived: number;
|
|
@@ -10841,12 +13086,12 @@ interface components {
|
|
|
10841
13086
|
/** Format: uri */
|
|
10842
13087
|
url?: string;
|
|
10843
13088
|
binding?: string;
|
|
10844
|
-
}
|
|
13089
|
+
};
|
|
10845
13090
|
ObserveSessionServer: {
|
|
10846
13091
|
/** Format: uri */
|
|
10847
13092
|
endpoint: string | null;
|
|
10848
13093
|
env: components['schemas']['ObserveSessionServerEnv'];
|
|
10849
|
-
}
|
|
13094
|
+
};
|
|
10850
13095
|
ObserveSessionServerEnv: {
|
|
10851
13096
|
/** Format: uri */
|
|
10852
13097
|
WALKEROS_OBSERVER_URL: string;
|
|
@@ -11936,6 +14181,21 @@ interface components {
|
|
|
11936
14181
|
DeclineInvitationResponse: {
|
|
11937
14182
|
message: string;
|
|
11938
14183
|
};
|
|
14184
|
+
ScreenshotUploadResponse: {
|
|
14185
|
+
/** @example fas_V1StGXR8Z5jdHi6BmyT7K */
|
|
14186
|
+
assetId: string;
|
|
14187
|
+
reused: boolean;
|
|
14188
|
+
};
|
|
14189
|
+
FrameScreenshotMeta: {
|
|
14190
|
+
/**
|
|
14191
|
+
* Format: date-time
|
|
14192
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
14193
|
+
*/
|
|
14194
|
+
capturedAt: string;
|
|
14195
|
+
size: components['schemas']['PlanSize'];
|
|
14196
|
+
dpr: number;
|
|
14197
|
+
capturedRect: components['schemas']['PlanRect'];
|
|
14198
|
+
};
|
|
11939
14199
|
HeartbeatRequest: {
|
|
11940
14200
|
/** @example a1b2c3d4e5f6 */
|
|
11941
14201
|
instanceId: string;
|
|
@@ -11982,6 +14242,211 @@ interface components {
|
|
|
11982
14242
|
message: string;
|
|
11983
14243
|
}[];
|
|
11984
14244
|
};
|
|
14245
|
+
OAuthClientRegistrationResponse: {
|
|
14246
|
+
/** @example client_abc */
|
|
14247
|
+
client_id: string;
|
|
14248
|
+
/** @example 1725400000 */
|
|
14249
|
+
client_id_issued_at: number;
|
|
14250
|
+
client_name: string;
|
|
14251
|
+
redirect_uris: string[];
|
|
14252
|
+
/** @enum {string} */
|
|
14253
|
+
token_endpoint_auth_method: 'none';
|
|
14254
|
+
grant_types: string[];
|
|
14255
|
+
response_types: string[];
|
|
14256
|
+
};
|
|
14257
|
+
OAuthRegistrationError: {
|
|
14258
|
+
/** @enum {string} */
|
|
14259
|
+
error: 'invalid_client_metadata' | 'invalid_redirect_uri';
|
|
14260
|
+
error_description: string;
|
|
14261
|
+
};
|
|
14262
|
+
OAuthClientRegistrationRequest: {
|
|
14263
|
+
/**
|
|
14264
|
+
* @example [
|
|
14265
|
+
* "https://claude.ai/api/mcp/auth_callback"
|
|
14266
|
+
* ]
|
|
14267
|
+
*/
|
|
14268
|
+
redirect_uris: string[];
|
|
14269
|
+
client_name?: string;
|
|
14270
|
+
/** @enum {string} */
|
|
14271
|
+
token_endpoint_auth_method?: 'none';
|
|
14272
|
+
grant_types?: ('authorization_code' | 'refresh_token')[];
|
|
14273
|
+
response_types?: 'code'[];
|
|
14274
|
+
/** Format: uri */
|
|
14275
|
+
client_uri?: string;
|
|
14276
|
+
/** Format: uri */
|
|
14277
|
+
logo_uri?: string;
|
|
14278
|
+
scope?: string;
|
|
14279
|
+
software_id?: string;
|
|
14280
|
+
software_version?: string;
|
|
14281
|
+
};
|
|
14282
|
+
DeviceAuthorizationResponse: {
|
|
14283
|
+
device_code: string;
|
|
14284
|
+
/** @example WDJB-MJHT */
|
|
14285
|
+
user_code: string;
|
|
14286
|
+
verification_uri: string;
|
|
14287
|
+
verification_uri_complete: string;
|
|
14288
|
+
/** @example 900 */
|
|
14289
|
+
expires_in: number;
|
|
14290
|
+
/** @example 5 */
|
|
14291
|
+
interval: number;
|
|
14292
|
+
};
|
|
14293
|
+
OAuthError: {
|
|
14294
|
+
/** @example invalid_client */
|
|
14295
|
+
error: string;
|
|
14296
|
+
error_description: string;
|
|
14297
|
+
};
|
|
14298
|
+
DeviceAuthorizationRequest: {
|
|
14299
|
+
/** @example walkeros-cli */
|
|
14300
|
+
client_id: string;
|
|
14301
|
+
/** @example read write offline_access */
|
|
14302
|
+
scope?: string;
|
|
14303
|
+
/** @example https://app.walkeros.io/api */
|
|
14304
|
+
resource?: string;
|
|
14305
|
+
};
|
|
14306
|
+
TokenResponse: {
|
|
14307
|
+
access_token: string;
|
|
14308
|
+
/** @enum {string} */
|
|
14309
|
+
token_type: 'Bearer';
|
|
14310
|
+
/** @example 3600 */
|
|
14311
|
+
expires_in: number;
|
|
14312
|
+
refresh_token?: string;
|
|
14313
|
+
/** @example read write offline_access */
|
|
14314
|
+
scope: string;
|
|
14315
|
+
};
|
|
14316
|
+
TokenRequest: {
|
|
14317
|
+
/**
|
|
14318
|
+
* @example authorization_code
|
|
14319
|
+
* @enum {string}
|
|
14320
|
+
*/
|
|
14321
|
+
grant_type:
|
|
14322
|
+
| 'authorization_code'
|
|
14323
|
+
| 'refresh_token'
|
|
14324
|
+
| 'urn:ietf:params:oauth:grant-type:device_code';
|
|
14325
|
+
/** @example walkeros-cli */
|
|
14326
|
+
client_id?: string;
|
|
14327
|
+
client_secret?: string;
|
|
14328
|
+
code?: string;
|
|
14329
|
+
redirect_uri?: string;
|
|
14330
|
+
code_verifier?: string;
|
|
14331
|
+
refresh_token?: string;
|
|
14332
|
+
device_code?: string;
|
|
14333
|
+
/** @example read offline_access */
|
|
14334
|
+
scope?: string;
|
|
14335
|
+
/** @example https://app.walkeros.io/api */
|
|
14336
|
+
resource?: string;
|
|
14337
|
+
};
|
|
14338
|
+
RevocationRequest: {
|
|
14339
|
+
token: string;
|
|
14340
|
+
/** @enum {string} */
|
|
14341
|
+
token_type_hint?: 'access_token' | 'refresh_token';
|
|
14342
|
+
client_id?: string;
|
|
14343
|
+
client_secret?: string;
|
|
14344
|
+
};
|
|
14345
|
+
DeviceApprovalResponse: {
|
|
14346
|
+
/** @enum {boolean} */
|
|
14347
|
+
success: true;
|
|
14348
|
+
/** @enum {string} */
|
|
14349
|
+
decision: 'approve' | 'deny';
|
|
14350
|
+
};
|
|
14351
|
+
DeviceApprovalRequest: {
|
|
14352
|
+
/** @example WDJB-MJHT */
|
|
14353
|
+
userCode: string;
|
|
14354
|
+
/** @enum {string} */
|
|
14355
|
+
decision: 'approve' | 'deny';
|
|
14356
|
+
};
|
|
14357
|
+
OAuthConsentDecisionResponse: {
|
|
14358
|
+
/** @example https://claude.ai/api/mcp/auth_callback?code=abc&state=xyz */
|
|
14359
|
+
redirectTo: string;
|
|
14360
|
+
};
|
|
14361
|
+
OAuthConsentDecisionRequest: {
|
|
14362
|
+
ticket: string;
|
|
14363
|
+
/** @enum {string} */
|
|
14364
|
+
decision: 'allow' | 'deny';
|
|
14365
|
+
};
|
|
14366
|
+
ListOAuthGrantsResponse: {
|
|
14367
|
+
grants: components['schemas']['OAuthGrantSummary'][];
|
|
14368
|
+
};
|
|
14369
|
+
OAuthGrantSummary: {
|
|
14370
|
+
id: string;
|
|
14371
|
+
clientId: string;
|
|
14372
|
+
clientName: string;
|
|
14373
|
+
scope: string[];
|
|
14374
|
+
/**
|
|
14375
|
+
* Format: date-time
|
|
14376
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
14377
|
+
*/
|
|
14378
|
+
createdAt: string;
|
|
14379
|
+
/**
|
|
14380
|
+
* Format: date-time
|
|
14381
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
14382
|
+
*/
|
|
14383
|
+
lastUsedAt: string | null;
|
|
14384
|
+
};
|
|
14385
|
+
ListOAuthClientsResponse: {
|
|
14386
|
+
clients: components['schemas']['OAuthClientSummary'][];
|
|
14387
|
+
};
|
|
14388
|
+
OAuthClientSummary: {
|
|
14389
|
+
clientId: string;
|
|
14390
|
+
/** @enum {string} */
|
|
14391
|
+
kind: 'dcr' | 'cimd' | 'confidential' | 'builtin';
|
|
14392
|
+
name: string;
|
|
14393
|
+
redirectUris: string[];
|
|
14394
|
+
grantTypes: string[];
|
|
14395
|
+
/** @enum {string} */
|
|
14396
|
+
tokenEndpointAuthMethod:
|
|
14397
|
+
| 'none'
|
|
14398
|
+
| 'client_secret_basic'
|
|
14399
|
+
| 'client_secret_post';
|
|
14400
|
+
allowedResources: ('mcp' | 'api')[];
|
|
14401
|
+
/**
|
|
14402
|
+
* Format: date-time
|
|
14403
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
14404
|
+
*/
|
|
14405
|
+
revokedAt: string | null;
|
|
14406
|
+
};
|
|
14407
|
+
CreateOAuthClientResponse: {
|
|
14408
|
+
clientId: string;
|
|
14409
|
+
/** @enum {string} */
|
|
14410
|
+
kind: 'dcr' | 'cimd' | 'confidential' | 'builtin';
|
|
14411
|
+
name: string;
|
|
14412
|
+
redirectUris: string[];
|
|
14413
|
+
grantTypes: string[];
|
|
14414
|
+
/** @enum {string} */
|
|
14415
|
+
tokenEndpointAuthMethod:
|
|
14416
|
+
| 'none'
|
|
14417
|
+
| 'client_secret_basic'
|
|
14418
|
+
| 'client_secret_post';
|
|
14419
|
+
allowedResources: ('mcp' | 'api')[];
|
|
14420
|
+
/**
|
|
14421
|
+
* Format: date-time
|
|
14422
|
+
* @example 2026-01-26T14:30:00.000Z
|
|
14423
|
+
*/
|
|
14424
|
+
revokedAt: string | null;
|
|
14425
|
+
clientSecret: string;
|
|
14426
|
+
};
|
|
14427
|
+
CreateOAuthClientRequest: {
|
|
14428
|
+
name: string;
|
|
14429
|
+
redirectUris: string[];
|
|
14430
|
+
/**
|
|
14431
|
+
* @default [
|
|
14432
|
+
* "authorization_code",
|
|
14433
|
+
* "refresh_token"
|
|
14434
|
+
* ]
|
|
14435
|
+
*/
|
|
14436
|
+
grantTypes: ('authorization_code' | 'refresh_token')[];
|
|
14437
|
+
/**
|
|
14438
|
+
* @default [
|
|
14439
|
+
* "mcp",
|
|
14440
|
+
* "api"
|
|
14441
|
+
* ]
|
|
14442
|
+
*/
|
|
14443
|
+
allowedResources: ('mcp' | 'api')[];
|
|
14444
|
+
/**
|
|
14445
|
+
* @default client_secret_basic
|
|
14446
|
+
* @enum {string}
|
|
14447
|
+
*/
|
|
14448
|
+
authMethod: 'client_secret_basic' | 'client_secret_post';
|
|
14449
|
+
};
|
|
11985
14450
|
};
|
|
11986
14451
|
responses: never;
|
|
11987
14452
|
parameters: never;
|
|
@@ -12492,6 +14957,20 @@ interface WrapSkeletonOptions {
|
|
|
12492
14957
|
}
|
|
12493
14958
|
declare function wrapSkeleton(options: WrapSkeletonOptions): Promise<void>;
|
|
12494
14959
|
|
|
14960
|
+
interface DeviceAuthorization {
|
|
14961
|
+
deviceCode: string;
|
|
14962
|
+
userCode: string;
|
|
14963
|
+
verificationUri: string;
|
|
14964
|
+
verificationUriComplete: string;
|
|
14965
|
+
expiresIn: number;
|
|
14966
|
+
interval: number;
|
|
14967
|
+
}
|
|
14968
|
+
/**
|
|
14969
|
+
* RFC 8628 section 3.1. Ask for a device code and the URL to send the person
|
|
14970
|
+
* to. Unauthenticated: the code is worth nothing until somebody approves it.
|
|
14971
|
+
*/
|
|
14972
|
+
declare function startDeviceAuthorization(appUrl: string, fetchFn?: typeof fetch): Promise<DeviceAuthorization>;
|
|
14973
|
+
|
|
12495
14974
|
declare function createApiClient(): openapi_fetch.Client<paths, `${string}/${string}`>;
|
|
12496
14975
|
|
|
12497
14976
|
/**
|
|
@@ -12523,8 +15002,8 @@ interface HealthResult {
|
|
|
12523
15002
|
}
|
|
12524
15003
|
/**
|
|
12525
15004
|
* Tokenless reachability + contract probe of the app's PUBLIC `/api/health`
|
|
12526
|
-
* route. Uses a plain `fetch` (never `createApiClient`,
|
|
12527
|
-
*
|
|
15005
|
+
* route. Uses a plain `fetch` (never `createApiClient`, whose every request
|
|
15006
|
+
* rejects without a credential) and defensively parses the JSON body. Resolves `{ reachable: false }`
|
|
12528
15007
|
* only on a real network/timeout failure; a non-2xx status still counts as
|
|
12529
15008
|
* reachable.
|
|
12530
15009
|
*/
|
|
@@ -12731,6 +15210,117 @@ interface EndObserveSessionOptions {
|
|
|
12731
15210
|
*/
|
|
12732
15211
|
declare function endObserveSession(options: EndObserveSessionOptions): Promise<void>;
|
|
12733
15212
|
|
|
15213
|
+
type VersionAnnotation = components['schemas']['VersionAnnotation'];
|
|
15214
|
+
type StepHistoryResponse = components['schemas']['StepHistoryResponse'];
|
|
15215
|
+
type ListHubThreadsResponse = components['schemas']['ListHubThreadsResponse'];
|
|
15216
|
+
type HubThreadResponse = components['schemas']['HubThreadResponse'];
|
|
15217
|
+
type ListKnowledgeResponse = components['schemas']['ListKnowledgeResponse'];
|
|
15218
|
+
/** The rationale summary a release index row carries when asked for one. */
|
|
15219
|
+
type ReleaseRationaleSummary = components['schemas']['ReleaseRationaleSummary'];
|
|
15220
|
+
/** The release index. Each row carries `rationale` when one was asked for. */
|
|
15221
|
+
type ReleaseIndexResponse = components['schemas']['ListFlowReleasesResponse'];
|
|
15222
|
+
/** The diff a release carries against its spine predecessor. */
|
|
15223
|
+
type ReleaseDiffResponse = components['schemas']['ReleaseDiff'];
|
|
15224
|
+
/** One release in full: rationale plus the diff the server computed. */
|
|
15225
|
+
type ReleaseDetailResponse = components['schemas']['ReleaseDetailResponse'];
|
|
15226
|
+
interface ListReleasesOptions {
|
|
15227
|
+
projectId?: string;
|
|
15228
|
+
flowId: string;
|
|
15229
|
+
limit?: number;
|
|
15230
|
+
offset?: number;
|
|
15231
|
+
}
|
|
15232
|
+
/** The release index WITH its rationale summary. Requires the hub feature. */
|
|
15233
|
+
declare function listReleases(options: ListReleasesOptions): Promise<ReleaseIndexResponse>;
|
|
15234
|
+
/** How a release is addressed: by spine id, or by spine number. */
|
|
15235
|
+
type ReleaseRef = {
|
|
15236
|
+
versionId: string;
|
|
15237
|
+
} | {
|
|
15238
|
+
versionNumber: number;
|
|
15239
|
+
};
|
|
15240
|
+
interface GetReleaseOptions {
|
|
15241
|
+
projectId?: string;
|
|
15242
|
+
flowId: string;
|
|
15243
|
+
ref: ReleaseRef;
|
|
15244
|
+
}
|
|
15245
|
+
/**
|
|
15246
|
+
* One release in full: rationale plus the diff the SERVER computed against the
|
|
15247
|
+
* spine predecessor. The path segment is the id or the number; the app decides
|
|
15248
|
+
* which it was.
|
|
15249
|
+
*/
|
|
15250
|
+
declare function getRelease(options: GetReleaseOptions): Promise<ReleaseDetailResponse>;
|
|
15251
|
+
interface ListStepHistoryOptions {
|
|
15252
|
+
projectId?: string;
|
|
15253
|
+
flowId: string;
|
|
15254
|
+
step: string;
|
|
15255
|
+
flow?: string;
|
|
15256
|
+
limit?: number;
|
|
15257
|
+
}
|
|
15258
|
+
declare function listStepHistory(options: ListStepHistoryOptions): Promise<StepHistoryResponse>;
|
|
15259
|
+
interface SetReleaseRationaleOptions {
|
|
15260
|
+
projectId?: string;
|
|
15261
|
+
flowId: string;
|
|
15262
|
+
versionId: string;
|
|
15263
|
+
text: string;
|
|
15264
|
+
}
|
|
15265
|
+
declare function setReleaseRationale(options: SetReleaseRationaleOptions): Promise<VersionAnnotation>;
|
|
15266
|
+
type ThreadAnchorType = 'step' | 'entity_action' | 'release' | 'contract' | 'tag';
|
|
15267
|
+
type ThreadStatus = 'open' | 'resolved';
|
|
15268
|
+
interface ListThreadsOptions {
|
|
15269
|
+
projectId?: string;
|
|
15270
|
+
flowId: string;
|
|
15271
|
+
anchorType?: ThreadAnchorType;
|
|
15272
|
+
anchorKey?: string;
|
|
15273
|
+
status?: ThreadStatus;
|
|
15274
|
+
includeMessages: boolean;
|
|
15275
|
+
limit?: number;
|
|
15276
|
+
}
|
|
15277
|
+
declare function listThreads(options: ListThreadsOptions): Promise<ListHubThreadsResponse>;
|
|
15278
|
+
interface CreateThreadOptions {
|
|
15279
|
+
projectId?: string;
|
|
15280
|
+
flowId: string;
|
|
15281
|
+
anchorType: ThreadAnchorType;
|
|
15282
|
+
anchorKey: string;
|
|
15283
|
+
anchorLabel?: string;
|
|
15284
|
+
text: string;
|
|
15285
|
+
}
|
|
15286
|
+
declare function createThread(options: CreateThreadOptions): Promise<HubThreadResponse>;
|
|
15287
|
+
interface AddThreadMessageOptions {
|
|
15288
|
+
projectId?: string;
|
|
15289
|
+
flowId: string;
|
|
15290
|
+
threadId: string;
|
|
15291
|
+
text: string;
|
|
15292
|
+
}
|
|
15293
|
+
declare function addThreadMessage(options: AddThreadMessageOptions): Promise<HubThreadResponse>;
|
|
15294
|
+
interface ListKnowledgeOptions {
|
|
15295
|
+
projectId?: string;
|
|
15296
|
+
pageKey?: string;
|
|
15297
|
+
frameId?: string;
|
|
15298
|
+
markId?: string;
|
|
15299
|
+
includeMessages: boolean;
|
|
15300
|
+
limit?: number;
|
|
15301
|
+
}
|
|
15302
|
+
declare function listKnowledge(options: ListKnowledgeOptions): Promise<ListKnowledgeResponse>;
|
|
15303
|
+
|
|
15304
|
+
type FrameResponse = components['schemas']['Frame'];
|
|
15305
|
+
type FrameListResponse = components['schemas']['FrameListResponse'];
|
|
15306
|
+
type FrameLeanListResponse = components['schemas']['FrameLeanListResponse'];
|
|
15307
|
+
interface ListFramesOptions {
|
|
15308
|
+
projectId?: string;
|
|
15309
|
+
}
|
|
15310
|
+
/** Every live frame of the project, without marks. Requires the frames feature. */
|
|
15311
|
+
declare function listFrames(options?: ListFramesOptions): Promise<FrameLeanListResponse>;
|
|
15312
|
+
interface ListPageFramesOptions {
|
|
15313
|
+
projectId?: string;
|
|
15314
|
+
pageKey: string;
|
|
15315
|
+
}
|
|
15316
|
+
/** The frames of one page at any depth, with their marks. */
|
|
15317
|
+
declare function listPageFrames(options: ListPageFramesOptions): Promise<FrameListResponse>;
|
|
15318
|
+
interface GetFrameOptions {
|
|
15319
|
+
projectId?: string;
|
|
15320
|
+
frameId: string;
|
|
15321
|
+
}
|
|
15322
|
+
declare function getFrame(options: GetFrameOptions): Promise<FrameResponse>;
|
|
15323
|
+
|
|
12734
15324
|
interface ListSecretsOptions {
|
|
12735
15325
|
projectId?: string;
|
|
12736
15326
|
flowId: string;
|
|
@@ -12760,7 +15350,18 @@ declare function deleteSecret(options: DeleteSecretOptions): Promise<{
|
|
|
12760
15350
|
}>;
|
|
12761
15351
|
|
|
12762
15352
|
interface WalkerOSConfig {
|
|
15353
|
+
/**
|
|
15354
|
+
* Static bearer written by the pre-OAuth CLI. Honored until it expires, and
|
|
15355
|
+
* the first use in a process prints a one-line notice naming
|
|
15356
|
+
* `walkeros login`, which replaces it with a refreshable session.
|
|
15357
|
+
*/
|
|
12763
15358
|
token?: string;
|
|
15359
|
+
/** Short-lived bearer from the device authorization grant. */
|
|
15360
|
+
accessToken?: string;
|
|
15361
|
+
/** ISO 8601 instant at which `accessToken` stops being accepted. */
|
|
15362
|
+
accessTokenExpiresAt?: string;
|
|
15363
|
+
/** Single-use credential that buys a new `accessToken`. */
|
|
15364
|
+
refreshToken?: string;
|
|
12764
15365
|
email?: string;
|
|
12765
15366
|
appUrl?: string;
|
|
12766
15367
|
anonymousFeedback?: boolean;
|
|
@@ -12783,9 +15384,24 @@ interface WalkerOSConfig {
|
|
|
12783
15384
|
*/
|
|
12784
15385
|
declare function readConfig(): WalkerOSConfig | null;
|
|
12785
15386
|
/**
|
|
12786
|
-
*
|
|
15387
|
+
* Merge `config` into the stored config and write the result.
|
|
15388
|
+
*
|
|
15389
|
+
* Merging rather than replacing, because the file holds fields owned by
|
|
15390
|
+
* unrelated commands: a writer that knows only about tokens would otherwise
|
|
15391
|
+
* drop `defaultProjectId`, `installationId`, `telemetryEnabled` and
|
|
15392
|
+
* `anonymousFeedback` every time somebody logs in.
|
|
15393
|
+
*
|
|
15394
|
+
* A key passed explicitly as `undefined` is removed from the written file,
|
|
15395
|
+
* which is how login drops the legacy static token it replaces.
|
|
12787
15396
|
*/
|
|
12788
15397
|
declare function writeConfig(config: WalkerOSConfig): void;
|
|
15398
|
+
/**
|
|
15399
|
+
* Remove every credential field, keeping the rest of the config.
|
|
15400
|
+
*
|
|
15401
|
+
* Used when the stored session is known to be dead, so the next command can
|
|
15402
|
+
* say "run `walkeros login`" instead of failing against the API.
|
|
15403
|
+
*/
|
|
15404
|
+
declare function clearAuthFields(): void;
|
|
12789
15405
|
/**
|
|
12790
15406
|
* Delete the config file (logout)
|
|
12791
15407
|
*/
|
|
@@ -13076,4 +15692,4 @@ declare module '@walkeros/core' {
|
|
|
13076
15692
|
}
|
|
13077
15693
|
}
|
|
13078
15694
|
|
|
13079
|
-
export { ApiError, type ApiErrorDetail, type BuildOptions, type BundleStats, type CLIBuildOptions, type ClientContext, type ClientType, type CompareContractInput, type ContractComparison, type ContractVerdict, type CreatePreviewOptions, type CreateSecretOptions, type DeletePreviewOptions, type DeleteSecretOptions, type DeployOptions, DeploymentAmbiguityError, type DeploymentSummaryForFlow, type
|
|
15695
|
+
export { type AddThreadMessageOptions, ApiError, type ApiErrorDetail, type BuildOptions, type BundleStats, type CLIBuildOptions, type ClientContext, type ClientType, type CompareContractInput, type CompleteDeviceLoginOptions, type ContractComparison, type ContractVerdict, type CreatePreviewOptions, type CreateSecretOptions, type CreateThreadOptions, type DeletePreviewOptions, type DeleteSecretOptions, type DeployOptions, DeploymentAmbiguityError, type DeploymentSummaryForFlow, type DeviceAuthorization, type DeviceLoginResult, type EndObserveSessionOptions, type ExampleLookupResult, type FeedbackOptions, type GetFrameOptions, type GetObserveSessionOptions, type GetPreviewOptions, type GetReleaseOptions, type GlobalOptions, type HealthResult, type ListDeploymentsOptions, type ListFlowsOptions, type ListFramesOptions, type ListJourneysOptions, type ListKnowledgeOptions, type ListPageFramesOptions, type ListPreviewsOptions, type ListProjectsOptions, type ListReleasesOptions, type ListSecretsOptions, type ListStepHistoryOptions, type ListThreadsOptions, type LoginOptions, type LoginResult, type MinifyOptions, type PrepareInput, type PreparedFlow, type ProjectFlows, type PushResult, type RegrantPreviewOptions, type ReleaseDetailResponse, type ReleaseDiffResponse, type ReleaseIndexResponse, type ReleaseRationaleSummary, type ReleaseRef, type RunCommandOptions, type RunOptions, type RunResult, type SSEEvent, type SSEParseResult, type SetReleaseRationaleOptions, type SimulateCollectorOptions, type SimulateDataOptions, type SimulateDestinationOptions, type SimulateSourceOptions, type SimulateTransformerOptions, type StartObserveSessionOptions, type ThreadAnchorType, type ThreadStatus, type UpdateSecretOptions, VERSION, type ValidateResult, type ValidationError, type ValidationType, type ValidationWarning, type WalkerOSConfig, type WrapSkeletonOptions, addThreadMessage, annotateErrorWithDrift, apiFetch, bakedContractHash, bakedContractVersion, buildDataPayload, bundle, bundleCommand, canonicalContractHash, classifyStepProperties, clearAuthFields, clientContextHeaders, compareContract, compareOutput, completeDeviceLogin, containsCodeMarkers, createApiClient, createDeployCommand, createDeployment, createDeploymentCommand, createFlow, createFlowCommand, createPreview, createProject, createProjectCommand, createSecret, createThread, credentialSource, deleteConfig, deleteDeployment, deleteDeploymentByFlowId, deleteDeploymentCommand, deleteFlow, deleteFlowCommand, deletePreview, deleteProject, deleteProjectCommand, deleteSecret, deploy, deployCommand, deployFetch, duplicateFlow, duplicateFlowCommand, endObserveSession, feedback, feedbackCommand, fetchHealth, findExample, getAuthHeaders, getClientContext, getDefaultProject, getDeployment, getDeploymentBySlug, getDeploymentBySlugCommand, getDeploymentCommand, getFeedbackPreference, getFlow, getFlowCommand, getFrame, getObserveSession, getPreview, getProject, getProjectCommand, getRelease, listAllFlows, listDeployments, listDeploymentsCommand, listFlows, listFlowsCommand, listFrames, listJourneys, listKnowledge, listPageFrames, listPreviews, listProjects, listProjectsCommand, listReleases, listSecrets, listStepHistory, listThreads, loadConfig, loadJsonConfig, login, loginCommand, logout, logoutCommand, mergeAuthHeaders, parseSSEEvents, publicFetch, push, pushCommand, readConfig, regrantPreview, requireProjectId, resetClientContext, resolveAccessToken, resolveAppUrl, resolveToken, run, runCommand, setClientContext, setDefaultProject, setFeedbackPreference, setReleaseRationale, simulateCollector, simulateDestination, simulateSource, simulateTransformer, startDeviceAuthorization, startObserveSession, index as telemetry, telemetryDisableCommand, telemetryEnableCommand, telemetryStatusCommand, throwApiError, updateFlow, updateFlowCommand, updateProject, updateProjectCommand, updateSecret, validate, validateCommand, validateFlowStructure, whoami, whoamiCommand, wrapSkeleton, writeConfig };
|