@managoat/fountain-sdk 6.0.0 → 6.2.0
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 +12 -0
- package/README.md +24 -2
- package/dist/client.d.ts +7 -0
- package/dist/client.js +10 -0
- package/dist/client.js.map +1 -1
- package/dist/conversation.d.ts +12 -0
- package/dist/conversation.js +7 -0
- package/dist/conversation.js.map +1 -1
- package/dist/generated/openapi.d.ts +1118 -153
- package/dist/http.d.ts +1 -1
- package/dist/http.js +1 -1
- package/package.json +1 -1
|
@@ -63,6 +63,118 @@ export interface paths {
|
|
|
63
63
|
patch?: never;
|
|
64
64
|
trace?: never;
|
|
65
65
|
};
|
|
66
|
+
"/api/account/chatgpt-subscriptions": {
|
|
67
|
+
parameters: {
|
|
68
|
+
query?: never;
|
|
69
|
+
header?: never;
|
|
70
|
+
path?: never;
|
|
71
|
+
cookie?: never;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* List ChatGPT subscriptions
|
|
75
|
+
* @description Every subscription the account holds, by name, with how many it may hold and whether it may link another now. Tokens are never returned.
|
|
76
|
+
*/
|
|
77
|
+
get: operations["FountainWeb.ChatGPTSubscriptionController.index"];
|
|
78
|
+
put?: never;
|
|
79
|
+
post?: never;
|
|
80
|
+
delete?: never;
|
|
81
|
+
options?: never;
|
|
82
|
+
head?: never;
|
|
83
|
+
patch?: never;
|
|
84
|
+
trace?: never;
|
|
85
|
+
};
|
|
86
|
+
"/api/account/chatgpt-subscriptions/attempts": {
|
|
87
|
+
parameters: {
|
|
88
|
+
query?: never;
|
|
89
|
+
header?: never;
|
|
90
|
+
path?: never;
|
|
91
|
+
cookie?: never;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* List open ChatGPT sign-ins
|
|
95
|
+
* @description The account's pending attempts, oldest first, each with its code: what a client that lost its state reads to pick up where it was.
|
|
96
|
+
*/
|
|
97
|
+
get: operations["FountainWeb.ChatGPTSubscriptionController.index_attempts"];
|
|
98
|
+
put?: never;
|
|
99
|
+
/**
|
|
100
|
+
* Start a ChatGPT sign-in
|
|
101
|
+
* @description `name` links a new subscription; `grant_id` reconnects one, which keeps the old credential serving until the new sign-in commits. The answer carries the code to type and the page to type it on. It expires in fifteen minutes. Limited to ten an hour and three open at once, per account.
|
|
102
|
+
*/
|
|
103
|
+
post: operations["FountainWeb.ChatGPTSubscriptionController.create_attempt"];
|
|
104
|
+
delete?: never;
|
|
105
|
+
options?: never;
|
|
106
|
+
head?: never;
|
|
107
|
+
patch?: never;
|
|
108
|
+
trace?: never;
|
|
109
|
+
};
|
|
110
|
+
"/api/account/chatgpt-subscriptions/attempts/{id}": {
|
|
111
|
+
parameters: {
|
|
112
|
+
query?: never;
|
|
113
|
+
header?: never;
|
|
114
|
+
path?: never;
|
|
115
|
+
cookie?: never;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Read a ChatGPT sign-in
|
|
119
|
+
* @description The endpoint to poll. It reads a row and contacts nobody. An attempt that ran out of time reads `expired`.
|
|
120
|
+
*/
|
|
121
|
+
get: operations["FountainWeb.ChatGPTSubscriptionController.show_attempt"];
|
|
122
|
+
put?: never;
|
|
123
|
+
post?: never;
|
|
124
|
+
/**
|
|
125
|
+
* Cancel a ChatGPT sign-in
|
|
126
|
+
* @description Ends a pending attempt; a sign-in approved afterwards stores nothing. Already cancelled is a 200. An attempt that has completed, failed or expired is a 409 `chatgpt_link_attempt_not_pending` carrying its `state`.
|
|
127
|
+
*/
|
|
128
|
+
delete: operations["FountainWeb.ChatGPTSubscriptionController.cancel_attempt"];
|
|
129
|
+
options?: never;
|
|
130
|
+
head?: never;
|
|
131
|
+
patch?: never;
|
|
132
|
+
trace?: never;
|
|
133
|
+
};
|
|
134
|
+
"/api/account/chatgpt-subscriptions/{id}": {
|
|
135
|
+
parameters: {
|
|
136
|
+
query?: never;
|
|
137
|
+
header?: never;
|
|
138
|
+
path?: never;
|
|
139
|
+
cookie?: never;
|
|
140
|
+
};
|
|
141
|
+
get?: never;
|
|
142
|
+
put?: never;
|
|
143
|
+
post?: never;
|
|
144
|
+
/**
|
|
145
|
+
* Remove a disconnected ChatGPT subscription
|
|
146
|
+
* @description Deletes the row, which frees its place under the limit. Refused with 409 `chatgpt_grant_still_connected` until it is disconnected, and with 409 `chatgpt_grant_named_by_sets` while credential sets name it.
|
|
147
|
+
*/
|
|
148
|
+
delete: operations["FountainWeb.ChatGPTSubscriptionController.delete"];
|
|
149
|
+
options?: never;
|
|
150
|
+
head?: never;
|
|
151
|
+
/**
|
|
152
|
+
* Rename a ChatGPT subscription
|
|
153
|
+
* @description A name is a label. Renaming changes no credential, and conversations running on the subscription are not disturbed.
|
|
154
|
+
*/
|
|
155
|
+
patch: operations["FountainWeb.ChatGPTSubscriptionController.update"];
|
|
156
|
+
trace?: never;
|
|
157
|
+
};
|
|
158
|
+
"/api/account/chatgpt-subscriptions/{id}/disconnect": {
|
|
159
|
+
parameters: {
|
|
160
|
+
query?: never;
|
|
161
|
+
header?: never;
|
|
162
|
+
path?: never;
|
|
163
|
+
cookie?: never;
|
|
164
|
+
};
|
|
165
|
+
get?: never;
|
|
166
|
+
put?: never;
|
|
167
|
+
/**
|
|
168
|
+
* Disconnect a ChatGPT subscription
|
|
169
|
+
* @description Forgets the subscription's tokens and keeps its row. From the moment this returns no sandbox request may use it, inside a connection that was already open too. A credential set that names it keeps naming it, and its codex runs fail by name until the subscription is reconnected or the set is pointed elsewhere; nothing is substituted. Already disconnected is a 200. The token is not revoked at ChatGPT.
|
|
170
|
+
*/
|
|
171
|
+
post: operations["FountainWeb.ChatGPTSubscriptionController.disconnect"];
|
|
172
|
+
delete?: never;
|
|
173
|
+
options?: never;
|
|
174
|
+
head?: never;
|
|
175
|
+
patch?: never;
|
|
176
|
+
trace?: never;
|
|
177
|
+
};
|
|
66
178
|
"/api/account/exports": {
|
|
67
179
|
parameters: {
|
|
68
180
|
query?: never;
|
|
@@ -166,8 +278,8 @@ export interface paths {
|
|
|
166
278
|
options?: never;
|
|
167
279
|
head?: never;
|
|
168
280
|
/**
|
|
169
|
-
* Rename an inference credential set,
|
|
170
|
-
* @description Omitting a field leaves it alone. `is_default: false` is refused: a set stops being the default when another becomes it, never on its own, because an account with no default has nothing to read a credential from.
|
|
281
|
+
* Rename an inference credential set, make it the default, or name a ChatGPT subscription
|
|
282
|
+
* @description Omitting a field leaves it alone. `is_default: false` is refused: a set stops being the default when another becomes it, never on its own, because an account with no default has nothing to read a credential from. `chatgpt_grant_id` names one of the account's ChatGPT subscriptions for the set's codex runs, and `null` stops naming one. Naming one ends the set's running codex conversations with `inference_source_changed`: their source is now the subscription. An id that is not one of the account's subscriptions, and a disconnected one, are 422; sending the id the set already names changes nothing.
|
|
171
283
|
*/
|
|
172
284
|
patch: operations["FountainWeb.InferenceCredentialSetController.update"];
|
|
173
285
|
trace?: never;
|
|
@@ -827,7 +939,7 @@ export interface paths {
|
|
|
827
939
|
put?: never;
|
|
828
940
|
/**
|
|
829
941
|
* Register an account
|
|
830
|
-
* @description Creates the account and sends the verification email. The account cannot mint an API key until it is verified, so a headless bootstrap is register → `POST /api/auth/verify` with the emailed token → `POST /api/auth/token`. Rate-limited to 5 per IP per hour. On an instance with open registration disabled this answers 403 with a reason code.
|
|
942
|
+
* @description Creates the account and sends the verification email. The account cannot mint an API key until it is verified, so a headless bootstrap is register → `POST /api/auth/verify` with the emailed token → `POST /api/auth/token`. Rate-limited to 5 per IP per hour. On an instance with open registration disabled this answers 403 with a reason code; an instance that asks for an access code answers 403 `access_code_required` until `access_code` carries it.
|
|
831
943
|
*/
|
|
832
944
|
post: operations["FountainWeb.RegistrationController.api_create"];
|
|
833
945
|
delete?: never;
|
|
@@ -1348,8 +1460,10 @@ export interface paths {
|
|
|
1348
1460
|
get?: never;
|
|
1349
1461
|
put?: never;
|
|
1350
1462
|
/**
|
|
1351
|
-
* Reapply a conversation's Agent, Environment and
|
|
1352
|
-
* @description Applies a selection to the machine this conversation already runs on, so its files stay where the agent left them. Variables, the system prompt, skills and MCP configuration are rewritten, and the next prompt reads them. An omitted field keeps its current selection; null clears the Environment override or the
|
|
1463
|
+
* Reapply a conversation's Agent, Environment, Vault and model
|
|
1464
|
+
* @description Applies a selection to the machine this conversation already runs on, so its files stay where the agent left them. Variables, the system prompt, skills and MCP configuration are rewritten, and the next prompt reads them. An omitted field keeps its current selection; null clears the Environment override, the Vault or the model override; an empty object reapplies what is already selected.
|
|
1465
|
+
*
|
|
1466
|
+
* `model` changes the model this conversation runs from its next turn (ADR 0061), continuing the same runtime session. It is refused with 422 `model_invalid` when the runtime cannot run it, and with 409 `inference_source_changed` when the conversation's credential does not serve it.
|
|
1353
1467
|
*
|
|
1354
1468
|
* Refused with 409 `conversation_busy` while a turn runs, 409 `rebuild_required` when the selection would need the machine built again (the `field` says which one forced it), 503 while the machine is still being built, and 410 once the conversation has ended.
|
|
1355
1469
|
*/
|
|
@@ -1834,7 +1948,7 @@ export interface paths {
|
|
|
1834
1948
|
post?: never;
|
|
1835
1949
|
/**
|
|
1836
1950
|
* Reset a sandbox
|
|
1837
|
-
* @description Destroy a persistent sandbox — the agent's home — so the next launch on the same agent, environment and vault builds a clean machine. The conversations on it are kept, idle; each one's next prompt lands on the fresh home. Only a `persistent` sandbox that is not `terminated` or `failed` resets (`422 sandbox_not_resettable`), and not while any conversation on it is mid-turn (`409 sandbox_mid_turn`).
|
|
1951
|
+
* @description Destroy a persistent sandbox — the agent's home — so the next launch on the same agent, environment and vault builds a clean machine. The conversations on it are kept, idle; each one's next prompt lands on the fresh home. Only a `persistent` sandbox that is not `terminated` or `failed` resets (`422 sandbox_not_resettable`), and not while any conversation on it is mid-turn (`409 sandbox_mid_turn`). A reset the provider does not confirm keeps its fence and the sandbox's capacity, and answers `409 sandbox_reset_pending`; retrying it is safe.
|
|
1838
1952
|
*/
|
|
1839
1953
|
delete: operations["FountainWeb.SandboxController.delete"];
|
|
1840
1954
|
options?: never;
|
|
@@ -1891,7 +2005,7 @@ export interface paths {
|
|
|
1891
2005
|
};
|
|
1892
2006
|
/**
|
|
1893
2007
|
* List a directory on a sandbox
|
|
1894
|
-
* @description The entries of one directory, directories first then by name. Without `path`, the agent's working directory. Only a `ready` sandbox answers (`409 sandbox_not_ready`): a parked one is not woken for a read. Full scope.
|
|
2008
|
+
* @description The entries of one directory, directories first then by name. Without `path`, the agent's working directory. Only a `ready` sandbox answers (`409 sandbox_not_ready`): a parked one is not woken for a read. A sandbox being parked or destroyed is `503 sandbox_unavailable`; retry after the `Retry-After`. Full scope.
|
|
1895
2009
|
*/
|
|
1896
2010
|
get: operations["FountainWeb.SandboxFilesController.index"];
|
|
1897
2011
|
put?: never;
|
|
@@ -2146,7 +2260,7 @@ export interface paths {
|
|
|
2146
2260
|
put?: never;
|
|
2147
2261
|
/**
|
|
2148
2262
|
* Open a fresh conversation on the teammate's computer
|
|
2149
|
-
* @description Retires the teammate's current conversation — it stays in its history, past resuming — and opens a new one on the **same sandbox**: the next message starts a fresh runtime session on the same disk, files and installed tools intact. Nothing is provisioned and nothing is interrupted: 400 `conversation_busy` while a turn is running (interrupt first), 503 `provisioning` while the computer is still starting. When the computer is gone (sandbox terminated or failed, or the conversation already past resuming) a new sandbox is provisioned instead, as `POST /api/team` does. 201 with the teammate and its new conversation; the stream sends `team`. Audited as `team.conversation.rotated`.
|
|
2263
|
+
* @description Retires the teammate's current conversation — it stays in its history, past resuming — and opens a new one on the **same sandbox**: the next message starts a fresh runtime session on the same disk, files and installed tools intact. Nothing is provisioned and nothing is interrupted: 400 `conversation_busy` while a turn is running (interrupt first), 503 `provisioning` while the computer is still starting. The computer's own door is asked before the current conversation is retired, so a refusal costs the teammate nothing and the same call can be repeated: 409 `sandbox_reset_pending` while the computer is being reset or deleted, 503 `sandbox_unavailable` while an operation holds it (retry after `Retry-After`), 422 `sandbox_identity_mismatch` or `sandbox_runtime_mismatch` when the agent's environment, vault or runtime no longer matches the computer it was built for — start a new conversation instead. When the computer is gone (sandbox terminated or failed, or the conversation already past resuming) a new sandbox is provisioned instead, as `POST /api/team` does. 201 with the teammate and its new conversation; the stream sends `team`. Audited as `team.conversation.rotated`.
|
|
2150
2264
|
*/
|
|
2151
2265
|
post: operations["FountainWeb.TeamController.fresh_conversation"];
|
|
2152
2266
|
delete?: never;
|
|
@@ -2686,13 +2800,13 @@ export interface components {
|
|
|
2686
2800
|
metadata?: {
|
|
2687
2801
|
[key: string]: unknown;
|
|
2688
2802
|
};
|
|
2689
|
-
/** @description Canonical provider/model_id (e.g. anthropic/claude-sonnet-5). The provider must match the runtime — anthropic for claude, openai for codex, google for gemini; opencode accepts any of the three. Other providers are rejected: Fountain has no credentials to export for them. The model id is not checked against a list, so a newly released model works without a Fountain release.
|
|
2803
|
+
/** @description Canonical provider/model_id (e.g. anthropic/claude-sonnet-5). The provider must match the runtime — anthropic for claude, openai for codex, google for gemini; opencode accepts any of the three. Other providers are rejected: Fountain has no credentials to export for them. The model id is not checked against a list, so a newly released model works without a Fountain release. Null on the acp runtime, which resolves no inference credential and reads no model. */
|
|
2690
2804
|
model: string | null;
|
|
2691
2805
|
name: string;
|
|
2692
2806
|
/** @description Per-tool permission policy: a map of key to verdict, plus an optional "default" key. A key is matched against the tool card's title first and then ACP's kind (execute, edit, read, fetch, …); prefer a kind, because claude titles a tool call with the command it is about to run. Unset keys fall back to the default, and an unset default is auto_allow — today's behaviour. "ask" holds the tool until a human answers it on the conversation stream, and denies if nobody does before the timeout. A runtime that never asks (opencode) refuses anything stricter than auto_allow with 422 permission_policy_unenforceable. */
|
|
2693
2807
|
permission_policy?: components["schemas"]["PermissionPolicy"] | null;
|
|
2694
2808
|
/** @enum {string} */
|
|
2695
|
-
runtime: "claude" | "codex" | "gemini" | "opencode" | "acp"
|
|
2809
|
+
runtime: "claude" | "codex" | "gemini" | "opencode" | "acp";
|
|
2696
2810
|
/** @description The command the acp runtime launches inside the sandbox, as a shell line resolved there (for example `chant acp`). Required when runtime is acp, and rejected on every other runtime, which resolves its own executable. A free string by design: it runs under the same isolation as an environment's setup script. */
|
|
2697
2811
|
runtime_command?: string | null;
|
|
2698
2812
|
/**
|
|
@@ -2727,7 +2841,7 @@ export interface components {
|
|
|
2727
2841
|
};
|
|
2728
2842
|
/** AgentRequest */
|
|
2729
2843
|
AgentRequest: {
|
|
2730
|
-
/** @description Environments a conversation may launch this agent under instead of its own. Same shape as allowed_vault_ids: null (default) allows any environment the tenant owns; an empty list forbids overriding; a non-empty list is an allowlist. The agent's own environment always passes. */
|
|
2844
|
+
/** @description Environments a conversation may launch this agent under instead of its own (environment_id on create). Same shape as allowed_vault_ids: null (default) allows any environment the tenant owns; an empty list forbids overriding; a non-empty list is an allowlist. The agent's own environment always passes. */
|
|
2731
2845
|
allowed_environment_ids?: string[] | null;
|
|
2732
2846
|
/** @description Credential sets a conversation may launch this agent on instead of the agent's (inference_credential_id on create). Same shape as allowed_vault_ids: null (default) allows any set the tenant owns; an empty list forbids overriding; a non-empty list is an allowlist. The agent's own set always passes. */
|
|
2733
2847
|
allowed_inference_credential_ids?: string[] | null;
|
|
@@ -2752,7 +2866,7 @@ export interface components {
|
|
|
2752
2866
|
/** @description Per-tool permission policy: a map of key to verdict, plus an optional "default" key. A key is matched against the tool card's title first and then ACP's kind (execute, edit, read, fetch, …); prefer a kind, because claude titles a tool call with the command it is about to run. Unset keys fall back to the default, and an unset default is auto_allow. "ask" holds the tool until a human answers it on the conversation stream, and denies if nobody does before the timeout. A conversation may narrow this at launch, never widen it. A runtime that never asks (opencode) refuses anything stricter than auto_allow with 422 permission_policy_unenforceable. */
|
|
2753
2867
|
permission_policy?: components["schemas"]["PermissionPolicy"] | null;
|
|
2754
2868
|
/** @enum {string} */
|
|
2755
|
-
runtime: "claude" | "codex" | "gemini" | "opencode" | "acp"
|
|
2869
|
+
runtime: "claude" | "codex" | "gemini" | "opencode" | "acp";
|
|
2756
2870
|
/** @description The command the acp runtime launches inside the sandbox, as a shell line resolved there (for example `chant acp`). Required when runtime is acp, and rejected on every other runtime, which resolves its own executable. A free string by design: it runs under the same isolation as an environment's setup script. */
|
|
2757
2871
|
runtime_command?: string | null;
|
|
2758
2872
|
/**
|
|
@@ -2809,7 +2923,7 @@ export interface components {
|
|
|
2809
2923
|
/** @description Per-tool permission policy: a map of key to verdict, plus an optional "default" key. A key is matched against the tool card's title first and then ACP's kind (execute, edit, read, fetch, …); prefer a kind, because claude titles a tool call with the command it is about to run. Unset keys fall back to the default, and an unset default is auto_allow. "ask" holds the tool until a human answers it on the conversation stream, and denies if nobody does before the timeout. A conversation may narrow this at launch, never widen it. A runtime that never asks (opencode) refuses anything stricter than auto_allow with 422 permission_policy_unenforceable. */
|
|
2810
2924
|
permission_policy?: components["schemas"]["PermissionPolicy"] | null;
|
|
2811
2925
|
/** @enum {string} */
|
|
2812
|
-
runtime?: "claude" | "codex" | "gemini" | "opencode" | "acp"
|
|
2926
|
+
runtime?: "claude" | "codex" | "gemini" | "opencode" | "acp";
|
|
2813
2927
|
/** @description The command the acp runtime launches inside the sandbox, as a shell line resolved there (for example `chant acp`). Required when runtime is acp, and rejected on every other runtime, which resolves its own executable. A free string by design: it runs under the same isolation as an environment's setup script. */
|
|
2814
2928
|
runtime_command?: string | null;
|
|
2815
2929
|
/**
|
|
@@ -2972,19 +3086,6 @@ export interface components {
|
|
|
2972
3086
|
next_cursor?: number | null;
|
|
2973
3087
|
};
|
|
2974
3088
|
};
|
|
2975
|
-
/**
|
|
2976
|
-
* AuthError
|
|
2977
|
-
* @description An auth failure with a stable reason code.
|
|
2978
|
-
*/
|
|
2979
|
-
AuthError: {
|
|
2980
|
-
/**
|
|
2981
|
-
* @description Reason code, e.g. `expired`, `invalid_token`, `invalid_current_password`.
|
|
2982
|
-
* @example invalid_token
|
|
2983
|
-
*/
|
|
2984
|
-
error: string;
|
|
2985
|
-
/** @description Human-readable detail. */
|
|
2986
|
-
message?: string;
|
|
2987
|
-
};
|
|
2988
3089
|
/**
|
|
2989
3090
|
* AuthMeResponse
|
|
2990
3091
|
* @description Identity of the account the bearer token belongs to.
|
|
@@ -2992,6 +3093,8 @@ export interface components {
|
|
|
2992
3093
|
AuthMeResponse: {
|
|
2993
3094
|
/** @description Whether this account's conversations run behind the egress credential broker (ADR 0019): secrets with bindings stay at the broker, a limited environment is enforced there, and /api/conversations/:id/egress has content. Connections availability is separate. Read-only; an operator sets it. */
|
|
2994
3095
|
brokered?: boolean;
|
|
3096
|
+
/** @description Whether this account may link a new ChatGPT subscription. Listing, renaming, reconnecting, disconnecting and removing the ones it holds never depend on it. */
|
|
3097
|
+
chatgpt_subscriptions_enabled?: boolean;
|
|
2995
3098
|
/** @description Null when billing is off. */
|
|
2996
3099
|
comped?: boolean | null;
|
|
2997
3100
|
/** @description Whether this account may add connections, providers, or credential bindings. Use connections_manageable to show existing credentials and their removal controls. */
|
|
@@ -3085,7 +3188,7 @@ export interface components {
|
|
|
3085
3188
|
};
|
|
3086
3189
|
/**
|
|
3087
3190
|
* Block
|
|
3088
|
-
* @description One structured piece of a log event's output — the same parse the web UI renders (`Fountain.Conversations.Blocks`). `kind` decides the other fields: `text`/`thinking` carry `body`; `plan` carries the full ordered checklist in `body` (entries with `content`, `status`, and optional `priority`, `id`, `activeForm`); `tool_use` carries `id`, `name`, `summary`, `body` (the input); `tool_result` carries `tool_id`, `body`, `error` and pairs with the `tool_use` of the same id; `init` carries `summary`, `body`; `result` carries `body`, `raw`; `error` carries `body`; `raw` carries `body`, `summary`; `permission_request` carries `request_id`, `name`, `summary` and `options` — the agent is blocked on it, and a client answers with POST /api/conversations/{id}/requests/{request_id}. Render only the options in `options`; never synthesise one the agent did not offer.
|
|
3191
|
+
* @description One structured piece of a log event's output — the same parse the web UI renders (`Fountain.Conversations.Blocks`). `kind` decides the other fields: `text`/`thinking` carry `body`; `plan` carries the full ordered checklist in `body` (entries with `content`, `status`, and optional `priority`, `id`, `activeForm`); `tool_use` carries `id`, `name`, `summary`, `body` (the input); `tool_result` carries `tool_id`, `body`, `error` and pairs with the `tool_use` of the same id; `init` carries `summary`, `body`; `result` carries `body`, `raw`; `error` carries `body`; `raw` carries `body`, `summary`; `permission_request` carries `request_id`, `name`, `summary` and `options` — the agent is blocked on it, and a client answers with POST /api/conversations/{id}/requests/{request_id}. Render only the options in `options`; never synthesise one the agent did not offer. `prompt` carries `body` — the prompt that opened the turn, which is the one kind not parsed out of a runtime's output. It appears only on a turn's `turn`/`started` stage event, and only when the events feed was asked for it with `blocks=true&prompts=true`.
|
|
3089
3192
|
*/
|
|
3090
3193
|
Block: {
|
|
3091
3194
|
body?: (string | null) | ({
|
|
@@ -3101,7 +3204,7 @@ export interface components {
|
|
|
3101
3204
|
error?: boolean | null;
|
|
3102
3205
|
id?: string | null;
|
|
3103
3206
|
/** @enum {string} */
|
|
3104
|
-
kind: "text" | "thinking" | "tool_use" | "tool_result" | "init" | "result" | "error" | "raw" | "permission_request" | "plan";
|
|
3207
|
+
kind: "text" | "thinking" | "tool_use" | "tool_result" | "init" | "result" | "error" | "raw" | "permission_request" | "plan" | "prompt";
|
|
3105
3208
|
name?: string | null;
|
|
3106
3209
|
/** @description permission_request only: the options the agent offered, in its order. Each carries at least `optionId` and `kind` (allow_once, allow_always, reject_once, reject_always, ...). */
|
|
3107
3210
|
options?: {
|
|
@@ -3115,18 +3218,6 @@ export interface components {
|
|
|
3115
3218
|
} & {
|
|
3116
3219
|
[key: string]: unknown;
|
|
3117
3220
|
};
|
|
3118
|
-
/**
|
|
3119
|
-
* BrokerUnavailableError
|
|
3120
|
-
* @description The egress broker did not answer the request log call.
|
|
3121
|
-
*/
|
|
3122
|
-
BrokerUnavailableError: {
|
|
3123
|
-
/** @description Always `broker_unavailable`. */
|
|
3124
|
-
error: string;
|
|
3125
|
-
/** @description A sentence for a human. */
|
|
3126
|
-
message: string;
|
|
3127
|
-
/** @description A stable word for a client to branch on: `econnrefused`, `timeout`, `nxdomain`, `api_error_<status>`, or `unknown`. The detail is in the server log, not here. */
|
|
3128
|
-
reason: string;
|
|
3129
|
-
};
|
|
3130
3221
|
/**
|
|
3131
3222
|
* BuzzAccessUpdateRequest
|
|
3132
3223
|
* @description Change who may @-mention a hosted Buzz agent. Sets buzz-acp's inbound author gate on the identity and restarts its harness. At least one field is required. A later provider deploy from the desktop resends the desktop's record and overwrites this.
|
|
@@ -3268,15 +3359,131 @@ export interface components {
|
|
|
3268
3359
|
};
|
|
3269
3360
|
};
|
|
3270
3361
|
/**
|
|
3271
|
-
*
|
|
3272
|
-
* @description
|
|
3362
|
+
* ChatGPTLinkAttempt
|
|
3363
|
+
* @description One device-code sign-in, for a new subscription or to reconnect one. Show `user_code` and `verification_url` to the person, then read the attempt again every `poll_interval` seconds until `state` leaves `pending`. The server does the polling of ChatGPT; reading this costs nothing upstream.
|
|
3273
3364
|
*/
|
|
3274
|
-
|
|
3275
|
-
/** @description
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3365
|
+
ChatGPTLinkAttempt: {
|
|
3366
|
+
/** @description True while a pending attempt's last poll of ChatGPT's sign-in service went unanswered. The attempt is still open and Fountain asks again, less often. */
|
|
3367
|
+
auth_unreachable: boolean;
|
|
3368
|
+
/** Format: date-time */
|
|
3369
|
+
expires_at: string;
|
|
3370
|
+
/** @description Why a `failed` attempt failed. Null otherwise. */
|
|
3371
|
+
failure: {
|
|
3372
|
+
grant: string | null;
|
|
3373
|
+
/** Format: uuid */
|
|
3374
|
+
grant_id: string | null;
|
|
3375
|
+
/**
|
|
3376
|
+
* @description `stale_grant`: the subscription was reconnected or disconnected after this attempt began, and what is there now was left alone. `account_already_linked`: the account holds this ChatGPT account already, as `grant`; reconnect that one instead. `linking_disabled`: linking was turned off for the account while this new link was open.
|
|
3377
|
+
* @enum {string}
|
|
3378
|
+
*/
|
|
3379
|
+
reason: "stale_grant" | "account_already_linked" | "grant_limit_reached" | "grant_not_found" | "name_taken" | "owner_ineligible" | "linking_disabled" | "tenant_key_unavailable" | "invalid_sign_in" | "authorization_failed" | "exchange_failed" | "internal_error";
|
|
3380
|
+
} | null;
|
|
3381
|
+
/**
|
|
3382
|
+
* Format: uuid
|
|
3383
|
+
* @description The subscription being reconnected. Null for a new link.
|
|
3384
|
+
*/
|
|
3385
|
+
grant_id: string | null;
|
|
3386
|
+
/** Format: uuid */
|
|
3387
|
+
id: string;
|
|
3388
|
+
/** Format: date-time */
|
|
3389
|
+
inserted_at: string;
|
|
3390
|
+
/** @enum {string} */
|
|
3391
|
+
kind: "link" | "reconnect";
|
|
3392
|
+
/** @description The name a new subscription will take. Null for a reconnect. */
|
|
3393
|
+
name: string | null;
|
|
3394
|
+
/** @description Seconds to wait between reads of this attempt. */
|
|
3395
|
+
poll_interval: number;
|
|
3396
|
+
/**
|
|
3397
|
+
* Format: uuid
|
|
3398
|
+
* @description The subscription a completed attempt linked or reconnected.
|
|
3399
|
+
*/
|
|
3400
|
+
result_grant_id: string | null;
|
|
3401
|
+
/**
|
|
3402
|
+
* @description `pending`, then exactly one of the other four, which are final.
|
|
3403
|
+
* @enum {string}
|
|
3404
|
+
*/
|
|
3405
|
+
state: "pending" | "completed" | "cancelled" | "expired" | "failed";
|
|
3406
|
+
/** Format: date-time */
|
|
3407
|
+
updated_at: string;
|
|
3408
|
+
/** @description The code to type at `verification_url`. Null once the attempt ends. */
|
|
3409
|
+
user_code: string | null;
|
|
3410
|
+
verification_url: string | null;
|
|
3411
|
+
};
|
|
3412
|
+
/**
|
|
3413
|
+
* ChatGPTLinkAttemptCreateRequest
|
|
3414
|
+
* @description Exactly one of the two: `name` links a new subscription under that name, `grant_id` reconnects the one it names.
|
|
3415
|
+
*/
|
|
3416
|
+
ChatGPTLinkAttemptCreateRequest: {
|
|
3417
|
+
/** Format: uuid */
|
|
3418
|
+
grant_id?: string;
|
|
3419
|
+
name?: string;
|
|
3420
|
+
};
|
|
3421
|
+
/** ChatGPTLinkAttemptListResponse */
|
|
3422
|
+
ChatGPTLinkAttemptListResponse: {
|
|
3423
|
+
data: components["schemas"]["ChatGPTLinkAttempt"][];
|
|
3424
|
+
};
|
|
3425
|
+
/** ChatGPTLinkAttemptResponse */
|
|
3426
|
+
ChatGPTLinkAttemptResponse: {
|
|
3427
|
+
data: components["schemas"]["ChatGPTLinkAttempt"];
|
|
3428
|
+
};
|
|
3429
|
+
/**
|
|
3430
|
+
* ChatGPTSubscription
|
|
3431
|
+
* @description One ChatGPT subscription linked to the account, for the codex runtime. Fountain holds and renews its tokens; none is ever returned, and neither is the provider's account id. A credential set names one by `id`.
|
|
3432
|
+
*/
|
|
3433
|
+
ChatGPTSubscription: {
|
|
3434
|
+
/** Format: date-time */
|
|
3435
|
+
access_expires_at: string | null;
|
|
3436
|
+
/** @description The ChatGPT account's email, shown to its owner and nobody else. */
|
|
3437
|
+
account_email: string | null;
|
|
3438
|
+
/**
|
|
3439
|
+
* Format: date-time
|
|
3440
|
+
* @description When the subscription's Codex usage resets, while that is in the future. Nothing records one for an account's subscription yet.
|
|
3441
|
+
*/
|
|
3442
|
+
exhausted_until: string | null;
|
|
3443
|
+
/** Format: uuid */
|
|
3444
|
+
id: string;
|
|
3445
|
+
/** Format: date-time */
|
|
3446
|
+
inserted_at: string;
|
|
3447
|
+
/** Format: date-time */
|
|
3448
|
+
last_refreshed_at: string | null;
|
|
3449
|
+
/** @description Unique within the account. */
|
|
3450
|
+
name: string;
|
|
3451
|
+
plan_type: string | null;
|
|
3452
|
+
/** @description Whether a refresh token is stored. False once disconnected. */
|
|
3453
|
+
refreshable: boolean;
|
|
3454
|
+
/** @description The auth server's reason code when `status` is `revoked`. */
|
|
3455
|
+
revoked_reason: string | null;
|
|
3456
|
+
/**
|
|
3457
|
+
* @description `active` serves runs. `revoked`: the auth server refused the refresh token; reconnect it. `disconnected`: the account disconnected it; the row holds no token, still counts against the limit, and can be reconnected or removed. A set that names a subscription that is not `active` fails its codex runs by name; nothing is substituted.
|
|
3458
|
+
* @enum {string}
|
|
3459
|
+
*/
|
|
3460
|
+
status: "active" | "revoked" | "expired" | "disconnected";
|
|
3461
|
+
/** Format: date-time */
|
|
3462
|
+
updated_at: string;
|
|
3463
|
+
};
|
|
3464
|
+
/**
|
|
3465
|
+
* ChatGPTSubscriptionListResponse
|
|
3466
|
+
* @description Every subscription the account holds, by name. Not paginated: it is capped.
|
|
3467
|
+
*/
|
|
3468
|
+
ChatGPTSubscriptionListResponse: {
|
|
3469
|
+
/** @description How many the account holds. A disconnected one counts until removed. */
|
|
3470
|
+
count: number;
|
|
3471
|
+
data: components["schemas"]["ChatGPTSubscription"][];
|
|
3472
|
+
/** @description How many it may hold. */
|
|
3473
|
+
limit: number;
|
|
3474
|
+
/** @description Whether this account may link a new subscription now. False leaves every other operation here working. */
|
|
3475
|
+
linking_enabled: boolean;
|
|
3476
|
+
};
|
|
3477
|
+
/** ChatGPTSubscriptionResponse */
|
|
3478
|
+
ChatGPTSubscriptionResponse: {
|
|
3479
|
+
data: components["schemas"]["ChatGPTSubscription"];
|
|
3480
|
+
};
|
|
3481
|
+
/**
|
|
3482
|
+
* ChatGPTSubscriptionUpdateRequest
|
|
3483
|
+
* @description A new name. A name is a label: renaming changes no credential.
|
|
3484
|
+
*/
|
|
3485
|
+
ChatGPTSubscriptionUpdateRequest: {
|
|
3486
|
+
name: string;
|
|
3280
3487
|
};
|
|
3281
3488
|
/**
|
|
3282
3489
|
* ClaimableUser
|
|
@@ -3554,14 +3761,16 @@ export interface components {
|
|
|
3554
3761
|
* @description Set by `POST /api/conversations/:id/read`. Null if never read.
|
|
3555
3762
|
*/
|
|
3556
3763
|
last_read_at?: string | null;
|
|
3764
|
+
/** @description This conversation's model override (ADR 0061), set at launch or by reapply; null means it runs the agent's model. Each turn's model_selection records the model that turn actually asked for. */
|
|
3765
|
+
model?: string | null;
|
|
3557
3766
|
/** Format: uuid */
|
|
3558
3767
|
parent_conversation_id?: string | null;
|
|
3559
|
-
/** @description Permission requests that outlived a turn and are still waiting for an answer (#1635).
|
|
3768
|
+
/** @description Permission requests that outlived a turn and are still waiting for an answer (#1635). Only GET /api/conversations/{id} can report one; every other response carrying this schema, including the list and the create response, sends an empty array rather than querying for it. */
|
|
3560
3769
|
pending_requests?: components["schemas"]["PendingPermissionRequest"][];
|
|
3561
3770
|
/** @description The per-launch permission override this conversation was started with, or null if it had none. The policy actually in force is this merged with the agent's, taking the stricter of the two per tool. */
|
|
3562
3771
|
permission_policy?: components["schemas"]["PermissionPolicy"] | null;
|
|
3563
3772
|
/** @enum {string} */
|
|
3564
|
-
runtime: "claude" | "codex" | "gemini" | "opencode" | "acp"
|
|
3773
|
+
runtime: "claude" | "codex" | "gemini" | "opencode" | "acp";
|
|
3565
3774
|
runtime_session_id?: string | null;
|
|
3566
3775
|
sandbox?: (components["schemas"]["Sandbox"] | (null)) | null;
|
|
3567
3776
|
/**
|
|
@@ -3592,6 +3801,8 @@ export interface components {
|
|
|
3592
3801
|
agent_id: string;
|
|
3593
3802
|
/** @description Opaque key for the external channel this conversation is bound to (for example a Buzz channel id). When set, the latest live conversation for the same agent, vault and channel is resumed (200) instead of a new one being opened (201). */
|
|
3594
3803
|
channel_id?: string | null;
|
|
3804
|
+
/** @description Your own name for the first prompt. Ignored when the request carries no `prompt`. An immediate `channel_id` resume does not deliver the prompt; send the value with it on the prompts route. If a queued start resumes a channel bound while it waited, the queue delivers the prompt and value. Fountain stores it on the turn the prompt opens and sends it on that turn's `started` stage event, beside the `turn_id`, so a client can bind its work item to the exact turn without inferring it from turn order. Use the event to find a candidate turn and the turn itself to confirm it: the event's copy has been through event redaction, and the turn's is what you sent. It is a correlation and not an idempotency key: a second prompt with the same value opens a second turn that carries it too. Make it unique within the conversation. */
|
|
3805
|
+
client_request_id?: string | null;
|
|
3595
3806
|
/**
|
|
3596
3807
|
* Format: uuid
|
|
3597
3808
|
* @description Optional environment to provision from instead of the agent's own; the conversation stays pinned to it across wakes. Must be owned by the caller (404 otherwise) and satisfy the agent's allowed_environment_ids when that allowlist is set (422 environment_not_allowed). Part of the channel_id resume key.
|
|
@@ -3603,14 +3814,16 @@ export interface components {
|
|
|
3603
3814
|
images?: components["schemas"]["ImageInput"][] | null;
|
|
3604
3815
|
/**
|
|
3605
3816
|
* Format: uuid
|
|
3606
|
-
* @description Optional credential set to run on instead of the agent's; the conversation stays pinned to it across wakes. Must be owned by the caller (404 inference_credential_not_found otherwise) and satisfy the agent's allowed_inference_credential_ids when that allowlist is set (422 inference_credential_not_allowed). An unusable selected set is 422 inference_credential_unusable. The resolved source and revision stay bound across wakes; replacing or deleting the source returns 409 inference_source_changed. Not part of sandbox identity, but a shared Codex sandbox requires the same resolved source and revision (409 codex_inference_conflict otherwise).
|
|
3817
|
+
* @description Optional credential set to run on instead of the agent's; the conversation stays pinned to it across wakes. Must be owned by the caller (404 inference_credential_not_found otherwise) and satisfy the agent's allowed_inference_credential_ids when that allowlist is set (422 inference_credential_not_allowed). An unusable selected set is 422 inference_credential_unusable. The resolved source and revision stay bound across wakes; replacing or deleting the source returns 409 inference_source_changed. Not part of sandbox identity, but a shared Codex sandbox requires the same resolved source and revision (409 codex_inference_conflict otherwise). The exception is a set that names a ChatGPT subscription: Codex keeps that sign-in in a home of its own, so it shares a sandbox with any other source, unless the sandbox was first bound before Fountain prepared such homes.
|
|
3607
3818
|
*/
|
|
3608
3819
|
inference_credential_id?: string | null;
|
|
3609
3820
|
/** @description Key/value strings to stamp on the conversation. At most 32 entries; a key is at most 64 bytes and a value at most 256 bytes, and a 422 names the offending key under `errors.labels`. With channel_id, a resume merges these into the conversation it hands back rather than dropping them. */
|
|
3610
3821
|
labels?: {
|
|
3611
3822
|
[key: string]: string;
|
|
3612
3823
|
} | null;
|
|
3613
|
-
/** @description
|
|
3824
|
+
/** @description Optional model to run instead of the agent's (ADR 0061), in canonical provider/model_id form, for this conversation only. Checked as the agent's own model is: a provider the runtime does not drive, or any model on the acp runtime, is 422 model_invalid. The model id itself is not checked against a catalog. Change it later with POST /api/conversations/{id}/reapply. Not part of the channel_id resume key: a request that resumes a conversation running a different model is 409 conversation_model_differs, before any prompt is sent; reapply the model, or set fresh: true. */
|
|
3825
|
+
model?: string | null;
|
|
3826
|
+
/** @description Per-launch permission override (#939). Keys are matched against the tool card's title first and then ACP's kind (execute, edit, read, fetch, …); "default" covers the rest. Prefer a kind: claude titles a tool call with the command it is about to run, so a title matches one invocation only. Merged with the agent's own policy, taking the stricter of the two. It may only narrow: a policy that would loosen any tool is refused with 422 permission_policy_widens rather than silently clamped, and one the runtime never consults is refused with 422 permission_policy_unenforceable. If a queued request with a prompt and a nonempty policy resumes an existing channel, it fails with permission_policy_requires_fresh_conversation before sending the prompt. Set fresh: true to create a conversation for that policy. */
|
|
3614
3827
|
permission_policy?: components["schemas"]["PermissionPolicy"] | null;
|
|
3615
3828
|
/** @description Optional first turn prompt. A launch may open with no prompt at all, but a prompt that is present must carry words: blank and whitespace-only text is refused with 422 invalid_prompt, before the launch reserves a sandbox. */
|
|
3616
3829
|
prompt?: string;
|
|
@@ -3623,7 +3836,7 @@ export interface components {
|
|
|
3623
3836
|
sandbox_api_access?: "owner" | "none";
|
|
3624
3837
|
/**
|
|
3625
3838
|
* Format: uuid
|
|
3626
|
-
* @description Attach the conversation to a sandbox you already have instead of provisioning one (ADR 0023). The sandbox must be yours (404 sandbox_not_found), ready or suspended (409 sandbox_not_attachable), and built for the same agent, environment and vault as this launch (422 sandbox_identity_mismatch; 422 sandbox_runtime_mismatch if the agent's runtime changed since). The conversation opens idle on that machine; a prompt here wakes it. Several conversations then run on one disk at once, except on opencode and gemini, where a second turn is refused with 409 sandbox_at_capacity while one runs.
|
|
3839
|
+
* @description Attach the conversation to a sandbox you already have instead of provisioning one (ADR 0023). The sandbox must be yours (404 sandbox_not_found), ready or suspended (409 sandbox_not_attachable), and built for the same agent, environment and vault as this launch (422 sandbox_identity_mismatch; 422 sandbox_runtime_mismatch if the agent's runtime changed since). The conversation opens idle on that machine; a prompt here wakes it. Several conversations then run on one disk at once, except on opencode and gemini, where a second turn of the same runtime is refused with 409 sandbox_at_capacity while one runs.
|
|
3627
3840
|
*/
|
|
3628
3841
|
sandbox_id?: string | null;
|
|
3629
3842
|
/**
|
|
@@ -3657,7 +3870,7 @@ export interface components {
|
|
|
3657
3870
|
};
|
|
3658
3871
|
/**
|
|
3659
3872
|
* ConversationReapplyRequest
|
|
3660
|
-
* @description A selection of Agent, Environment and
|
|
3873
|
+
* @description A selection of Agent, Environment, Vault and model to apply to the machine an existing conversation already runs on. An omitted field keeps its current selection. An explicit null clears the Environment override, the Vault or the model override. An empty object reapplies the current selection.
|
|
3661
3874
|
*/
|
|
3662
3875
|
ConversationReapplyRequest: {
|
|
3663
3876
|
/**
|
|
@@ -3670,6 +3883,8 @@ export interface components {
|
|
|
3670
3883
|
* @description Environment override to use; null returns to the selected Agent's Environment.
|
|
3671
3884
|
*/
|
|
3672
3885
|
environment_id?: string | null;
|
|
3886
|
+
/** @description Model to run from the next turn (ADR 0061), in canonical provider/model_id form; null returns to the selected Agent's model. Checked against the selected Agent's runtime (422 model_invalid). The conversation keeps its credential: a model that credential does not serve is 409 inference_source_changed and nothing changes. The runtime session is kept, so the next turn continues it on the new model. */
|
|
3887
|
+
model?: string | null;
|
|
3673
3888
|
/**
|
|
3674
3889
|
* Format: uuid
|
|
3675
3890
|
* @description Vault to use; null detaches the current Vault.
|
|
@@ -3679,6 +3894,11 @@ export interface components {
|
|
|
3679
3894
|
/** ConversationResponse */
|
|
3680
3895
|
ConversationResponse: {
|
|
3681
3896
|
data: components["schemas"]["Conversation"];
|
|
3897
|
+
/** @description Present when creating or resuming a conversation. */
|
|
3898
|
+
meta?: {
|
|
3899
|
+
/** @description Whether the channel resumed an existing conversation. */
|
|
3900
|
+
resumed: boolean;
|
|
3901
|
+
};
|
|
3682
3902
|
};
|
|
3683
3903
|
/**
|
|
3684
3904
|
* ConversationTreeNode
|
|
@@ -3698,14 +3918,6 @@ export interface components {
|
|
|
3698
3918
|
ConversationTreeResponse: {
|
|
3699
3919
|
data: components["schemas"]["ConversationTreeNode"][];
|
|
3700
3920
|
};
|
|
3701
|
-
/** CredentialSetDeletionError */
|
|
3702
|
-
CredentialSetDeletionError: {
|
|
3703
|
-
/** @enum {string} */
|
|
3704
|
-
error: "credential_set_is_default";
|
|
3705
|
-
message: string;
|
|
3706
|
-
/** @enum {string} */
|
|
3707
|
-
reason: "is_default";
|
|
3708
|
-
};
|
|
3709
3921
|
/**
|
|
3710
3922
|
* CreditsCheckoutRequest
|
|
3711
3923
|
* @example {
|
|
@@ -3893,9 +4105,55 @@ export interface components {
|
|
|
3893
4105
|
/** @description Setup exec timeout in seconds; defaults to 120. The overall provisioning deadline still applies. */
|
|
3894
4106
|
setup_timeout_seconds?: number;
|
|
3895
4107
|
};
|
|
3896
|
-
/**
|
|
4108
|
+
/**
|
|
4109
|
+
* Error
|
|
4110
|
+
* @description The one body every JSON error status carries (#2324). `error` is the code to branch on; the other keys accompany particular codes and are absent otherwise. A `406` is the exception: content negotiation fails before any controller runs and renders `NegotiationError` instead.
|
|
4111
|
+
*/
|
|
3897
4112
|
Error: {
|
|
4113
|
+
/** @description Sandboxes the account has in use, on `sandbox_quota_exceeded` (429). */
|
|
4114
|
+
active_sandboxes?: number;
|
|
4115
|
+
/**
|
|
4116
|
+
* Format: uuid
|
|
4117
|
+
* @description The sign-in already open on that subscription, on `chatgpt_link_attempt_pending` (409): read or cancel that one.
|
|
4118
|
+
*/
|
|
4119
|
+
attempt_id?: string;
|
|
4120
|
+
/** @description How many the account has against `limit`, on `chatgpt_grant_limit_reached` and `chatgpt_link_attempts_exceeded` (409). */
|
|
4121
|
+
count?: number;
|
|
4122
|
+
/**
|
|
4123
|
+
* @description The machine-readable code: `validation_failed`, `not_found`, `insufficient_credits`, `sandbox_quota_exceeded`, `expired`, `invalid_token` and the rest. On the key-authentication and scope refusals it is a sentence and `reason` carries the code.
|
|
4124
|
+
* @example validation_failed
|
|
4125
|
+
*/
|
|
3898
4126
|
error: string;
|
|
4127
|
+
/** @description Field validation messages keyed by field, beside `error: "validation_failed"`, whether the request died at the OpenAPI cast or in a changeset (#1431). */
|
|
4128
|
+
errors?: {
|
|
4129
|
+
[key: string]: string[];
|
|
4130
|
+
};
|
|
4131
|
+
/** @description That subscription's name, on `chatgpt_grant_unusable` (409). */
|
|
4132
|
+
grant?: string | null;
|
|
4133
|
+
/**
|
|
4134
|
+
* Format: uuid
|
|
4135
|
+
* @description The ChatGPT subscription the refusal is about, on `chatgpt_grant_unusable` (409).
|
|
4136
|
+
*/
|
|
4137
|
+
grant_id?: string;
|
|
4138
|
+
/** @description The account's concurrent-sandbox cap, on `sandbox_quota_exceeded` (429); how many ChatGPT subscriptions it may hold, on `chatgpt_grant_limit_reached` (409); how many sign-ins it may have open, on `chatgpt_link_attempts_exceeded` (409); how many it may start in an hour, on `chatgpt_link_attempts_rate_limited` (429). */
|
|
4139
|
+
limit?: number;
|
|
4140
|
+
/** @description A sentence for a human, when there is one. */
|
|
4141
|
+
message?: string;
|
|
4142
|
+
/** @description A second stable word. On the 401 and 403 refusals from key authentication and scope checks, `error` is prose and this is the code (`api_key_invalid`, `api_key_expired`, `insufficient_scope`). On `broker_unavailable`, `sandbox_not_resettable` and `credential_set_is_default`, `error` is the code and this narrows it (`econnrefused`, `timeout`, `is_default`, ...). On `chatgpt_grant_unusable` it says why the named subscription cannot serve: `disconnected`, `revoked`, `expired`, `reconnect_required`, `exhausted`, `not_found`, `broker_required` or `owner_ineligible`. */
|
|
4143
|
+
reason?: string;
|
|
4144
|
+
/** @description Seconds until another sign-in may be started, on `chatgpt_link_attempts_rate_limited` (429); the `Retry-After` header says the same. */
|
|
4145
|
+
retry_after_seconds?: number;
|
|
4146
|
+
/** @description The credential sets that still name the subscription, by name, on `chatgpt_grant_named_by_sets` (409): point them elsewhere first. */
|
|
4147
|
+
sets?: string[];
|
|
4148
|
+
/** @description What the attempt had already become, on `chatgpt_link_attempt_not_pending` (409). */
|
|
4149
|
+
state?: string;
|
|
4150
|
+
/**
|
|
4151
|
+
* Format: date-time
|
|
4152
|
+
* @description When the subscription's Codex usage resets, on `chatgpt_grant_unusable` with `reason: "exhausted"`; null otherwise.
|
|
4153
|
+
*/
|
|
4154
|
+
until?: string | null;
|
|
4155
|
+
/** @description Where to buy credit, on `insufficient_credits` (402). */
|
|
4156
|
+
upgrade_url?: string;
|
|
3899
4157
|
};
|
|
3900
4158
|
/**
|
|
3901
4159
|
* Export
|
|
@@ -3967,6 +4225,19 @@ export interface components {
|
|
|
3967
4225
|
* @description One named set of a tenant's inference credentials. An account holds one or more and exactly one is the default; an agent or a launch may name another. Values are never returned — `providers` reports only which of them this set holds.
|
|
3968
4226
|
*/
|
|
3969
4227
|
InferenceCredentialSet: {
|
|
4228
|
+
/** @description The named subscription's name and status, so a set that will fail says so here. Read-only; the whole subscription is at `/api/account/chatgpt-subscriptions`. */
|
|
4229
|
+
chatgpt_grant: {
|
|
4230
|
+
/** Format: uuid */
|
|
4231
|
+
id: string;
|
|
4232
|
+
name: string;
|
|
4233
|
+
/** @enum {string} */
|
|
4234
|
+
status: "active" | "revoked" | "expired" | "disconnected";
|
|
4235
|
+
} | null;
|
|
4236
|
+
/**
|
|
4237
|
+
* Format: uuid
|
|
4238
|
+
* @description The ChatGPT subscription this set's codex runs use, or null. A named subscription is used or the run fails with 409 `chatgpt_grant_unusable`: nothing falls back to the set's `openai_api_key`, to another subscription or to the platform. Every other OpenAI consumer still needs the key.
|
|
4239
|
+
*/
|
|
4240
|
+
chatgpt_grant_id: string | null;
|
|
3970
4241
|
/** Format: uuid */
|
|
3971
4242
|
id: string;
|
|
3972
4243
|
/** Format: date-time */
|
|
@@ -3994,9 +4265,14 @@ export interface components {
|
|
|
3994
4265
|
};
|
|
3995
4266
|
/**
|
|
3996
4267
|
* InferenceCredentialSetUpdateRequest
|
|
3997
|
-
* @description Rename a set, make it the default, or
|
|
4268
|
+
* @description Rename a set, make it the default, name a ChatGPT subscription, or any of them. Omitting a field leaves it alone. `is_default: false` is refused: a set stops being the default when another becomes it, never on its own.
|
|
3998
4269
|
*/
|
|
3999
4270
|
InferenceCredentialSetUpdateRequest: {
|
|
4271
|
+
/**
|
|
4272
|
+
* Format: uuid
|
|
4273
|
+
* @description One of the account's ChatGPT subscriptions, or null to stop naming one. Naming one ends the set's running codex conversations.
|
|
4274
|
+
*/
|
|
4275
|
+
chatgpt_grant_id?: string | null;
|
|
4000
4276
|
is_default?: boolean;
|
|
4001
4277
|
name?: string;
|
|
4002
4278
|
};
|
|
@@ -4213,12 +4489,16 @@ export interface components {
|
|
|
4213
4489
|
}) | null;
|
|
4214
4490
|
/** PromptRequest */
|
|
4215
4491
|
PromptRequest: {
|
|
4492
|
+
/** @description Your own name for this prompt. Fountain stores it on the turn the prompt opens and sends it on that turn's `started` stage event, beside the `turn_id`, so a client can bind its work item to the exact turn without inferring it from turn order. Use the event to find a candidate turn and the turn itself to confirm it: the event's copy has been through event redaction, and the turn's is what you sent. It is a correlation and not an idempotency key: a second prompt with the same value opens a second turn that carries it too. Make it unique within the conversation. */
|
|
4493
|
+
client_request_id?: string | null;
|
|
4216
4494
|
/** @description Optional images to attach to this prompt. */
|
|
4217
4495
|
images?: components["schemas"]["ImageInput"][] | null;
|
|
4218
4496
|
prompt: string;
|
|
4219
4497
|
};
|
|
4220
4498
|
/** PromptResponse */
|
|
4221
4499
|
PromptResponse: {
|
|
4500
|
+
/** @description The `client_request_id` the request carried, or null when it carried none. The response cannot name the turn: a conversation that has to be woken is answered before its turn exists. Find the turn by this value instead. */
|
|
4501
|
+
client_request_id?: string | null;
|
|
4222
4502
|
/** @example queued */
|
|
4223
4503
|
status: string;
|
|
4224
4504
|
};
|
|
@@ -4242,6 +4522,8 @@ export interface components {
|
|
|
4242
4522
|
};
|
|
4243
4523
|
/** RegisterRequest */
|
|
4244
4524
|
RegisterRequest: {
|
|
4525
|
+
/** @description The instance's signup access code. Required only when the operator set one; otherwise ignored. */
|
|
4526
|
+
access_code?: string;
|
|
4245
4527
|
/** Format: email */
|
|
4246
4528
|
email: string;
|
|
4247
4529
|
/** Format: password */
|
|
@@ -4372,7 +4654,7 @@ export interface components {
|
|
|
4372
4654
|
/** @description True while this conversation is running a turn on the machine. */
|
|
4373
4655
|
mid_turn: boolean;
|
|
4374
4656
|
/** @enum {string} */
|
|
4375
|
-
runtime?: "claude" | "codex" | "gemini" | "opencode" | "acp"
|
|
4657
|
+
runtime?: "claude" | "codex" | "gemini" | "opencode" | "acp";
|
|
4376
4658
|
/** @enum {string} */
|
|
4377
4659
|
status: "pending" | "running" | "idle" | "failed" | "terminated";
|
|
4378
4660
|
title?: string | null;
|
|
@@ -4515,7 +4797,7 @@ export interface components {
|
|
|
4515
4797
|
agent_id: string;
|
|
4516
4798
|
/**
|
|
4517
4799
|
* Format: uuid
|
|
4518
|
-
* @description The conversation the request
|
|
4800
|
+
* @description The conversation the request started, or the target when a failed request reports prompt_delivery_unknown. Inspect it before resubmitting: after a timeout or connection loss, the prompt may have run or may still execute.
|
|
4519
4801
|
*/
|
|
4520
4802
|
conversation_id?: string | null;
|
|
4521
4803
|
error?: string | null;
|
|
@@ -4707,6 +4989,53 @@ export interface components {
|
|
|
4707
4989
|
SecretResponse: {
|
|
4708
4990
|
data: components["schemas"]["Secret"];
|
|
4709
4991
|
};
|
|
4992
|
+
/**
|
|
4993
|
+
* StreamLogEvent
|
|
4994
|
+
* @description One frame of the conversation, events or team SSE log stream (#2297). Same fields as `LogEvent` minus `id` — the frame's id travels in the SSE `id:` line, never the JSON body — plus `conversation_id` and `agent_id`, which the REST log feed never sends because its URL or list item already names the conversation.
|
|
4995
|
+
*
|
|
4996
|
+
* Not every stream sends every optional field here; see each property's own description for which of `GET /api/conversations/:id/stream`, `GET /api/events/stream` and `GET /api/team/stream` include it. The events and team streams also send `StreamSignal` frames on the same connection.
|
|
4997
|
+
*/
|
|
4998
|
+
StreamLogEvent: {
|
|
4999
|
+
/**
|
|
5000
|
+
* Format: uuid
|
|
5001
|
+
* @description The teammate whose conversation this is. Sent only on `GET /api/team/stream`, to route the event to a roster row.
|
|
5002
|
+
*/
|
|
5003
|
+
agent_id?: string;
|
|
5004
|
+
/** @description Only with `?blocks=true`: `data` parsed server-side into the blocks a transcript renders. Empty for non-output events. */
|
|
5005
|
+
blocks?: components["schemas"]["Block"][];
|
|
5006
|
+
/**
|
|
5007
|
+
* Format: uuid
|
|
5008
|
+
* @description Which conversation this event belongs to. Sent on `GET /api/events/stream` and `GET /api/team/stream`; not sent on `GET /api/conversations/:id/stream`, whose URL already names the conversation.
|
|
5009
|
+
*/
|
|
5010
|
+
conversation_id?: string;
|
|
5011
|
+
/** @description Output text, or JSON-encoded metadata for stage events. */
|
|
5012
|
+
data?: string;
|
|
5013
|
+
/** @description Sent on `GET /api/events/stream`. Not sent on `GET /api/conversations/:id/stream` or `GET /api/team/stream`. */
|
|
5014
|
+
duration_ms?: number | null;
|
|
5015
|
+
/** @enum {string} */
|
|
5016
|
+
kind: "output" | "stage";
|
|
5017
|
+
/** @description Lifecycle stage name. null on an event that has no stage. */
|
|
5018
|
+
stage?: string | null;
|
|
5019
|
+
/**
|
|
5020
|
+
* @description Lifecycle state of the stage. null on an event that has no state.
|
|
5021
|
+
* @enum {string|null}
|
|
5022
|
+
*/
|
|
5023
|
+
state?: "started" | "done" | "failed" | "interrupted" | null;
|
|
5024
|
+
/** @description `stdout` / `stderr` for output events; empty for stage events. */
|
|
5025
|
+
stream?: string;
|
|
5026
|
+
/** Format: date-time */
|
|
5027
|
+
ts: string;
|
|
5028
|
+
/** Format: uuid */
|
|
5029
|
+
turn_id?: string | null;
|
|
5030
|
+
};
|
|
5031
|
+
/**
|
|
5032
|
+
* StreamSignal
|
|
5033
|
+
* @description A change-signal frame on the events or team SSE stream (#2297) — not a log event, and no `conversation_id`/`agent_id`/anything else `StreamLogEvent` declares. The event name says what changed: `conversations` on `GET /api/events/stream` (the caller's conversation list changed — created, titled, read, deleted, finished), `team` on `GET /api/team/stream` (the roster changed) and `schedule` on `GET /api/team/stream` (a team schedule was created, updated, deleted or fired). The client re-lists rather than reading anything from the body.
|
|
5034
|
+
*/
|
|
5035
|
+
StreamSignal: {
|
|
5036
|
+
/** @enum {string} */
|
|
5037
|
+
reason: "changed";
|
|
5038
|
+
};
|
|
4710
5039
|
/**
|
|
4711
5040
|
* StripeUrlResponse
|
|
4712
5041
|
* @description A Stripe-hosted URL to open in a browser. Single-use and short-lived.
|
|
@@ -4943,6 +5272,8 @@ export interface components {
|
|
|
4943
5272
|
* @description One prompt → exit_code cycle within a conversation.
|
|
4944
5273
|
*/
|
|
4945
5274
|
Turn: {
|
|
5275
|
+
/** @description The `client_request_id` of the prompt that opened this turn (#1406), or null: the caller sent none, or the turn is `autonomous`. Not unique. This is the value the caller sent, byte for byte, and it is the one to compare against: the copy on the turn's `started` stage event has been through event redaction, which rewrites any registered environment value it contains. */
|
|
5276
|
+
client_request_id?: string | null;
|
|
4946
5277
|
/** Format: date-time */
|
|
4947
5278
|
ended_at?: string | null;
|
|
4948
5279
|
exit_code?: number | null;
|
|
@@ -4950,6 +5281,24 @@ export interface components {
|
|
|
4950
5281
|
id: string;
|
|
4951
5282
|
/** @description Number of images attached to this turn. */
|
|
4952
5283
|
image_count?: number;
|
|
5284
|
+
/** @description Which inference source served this turn, recorded once when the turn started and never rewritten: repointing the credential set, reconnecting the subscription or restarting the conversation changes later turns only. Null on a turn that started before the source was recorded. */
|
|
5285
|
+
readonly inference?: {
|
|
5286
|
+
/**
|
|
5287
|
+
* Format: uuid
|
|
5288
|
+
* @description The ChatGPT subscription that served the turn when `scope` is `grant`, as listed by `GET /api/account/chatgpt-subscriptions`; null otherwise. It keeps naming that subscription after the subscription is removed.
|
|
5289
|
+
*/
|
|
5290
|
+
chatgpt_grant_id: string | null;
|
|
5291
|
+
/**
|
|
5292
|
+
* @description `own` for a credential of the account's, `platform` for the deployment's.
|
|
5293
|
+
* @enum {string}
|
|
5294
|
+
*/
|
|
5295
|
+
origin: "own" | "platform";
|
|
5296
|
+
/**
|
|
5297
|
+
* @description Where the credential came from: the account's credential set (`credential`), an environment or vault value (`tenant_secret`), a ChatGPT subscription the set names (`grant`), the deployment (`platform`), or nowhere because the provider needs none (`none`) or none was found (`missing`).
|
|
5298
|
+
* @enum {string}
|
|
5299
|
+
*/
|
|
5300
|
+
scope: "credential" | "tenant_secret" | "grant" | "platform" | "none" | "missing";
|
|
5301
|
+
} | null;
|
|
4953
5302
|
/** Format: date-time */
|
|
4954
5303
|
inserted_at?: string;
|
|
4955
5304
|
/** @description The service-enforced limit that ended this turn, or null. Set independently of exit_code: a runtime that exits zero after its deadline is still an incomplete turn, so a client must read this before treating a turn as successful. */
|
|
@@ -4995,17 +5344,6 @@ export interface components {
|
|
|
4995
5344
|
input?: number;
|
|
4996
5345
|
output?: number;
|
|
4997
5346
|
};
|
|
4998
|
-
/**
|
|
4999
|
-
* UnprocessableEntityError
|
|
5000
|
-
* @description A rejected request. Field validation failures include errors; other refusals carry an error and may include a message.
|
|
5001
|
-
*/
|
|
5002
|
-
UnprocessableEntityError: {
|
|
5003
|
-
error: string;
|
|
5004
|
-
errors?: {
|
|
5005
|
-
[key: string]: string[];
|
|
5006
|
-
};
|
|
5007
|
-
message?: string;
|
|
5008
|
-
};
|
|
5009
5347
|
/**
|
|
5010
5348
|
* UsageAccounting
|
|
5011
5349
|
* @description The adapter's accounting claim, not independently verified billing. Interpret source, version and scope together. Reported does not imply whole-conversation coverage.
|
|
@@ -5247,23 +5585,470 @@ export interface operations {
|
|
|
5247
5585
|
parameters: {
|
|
5248
5586
|
query?: never;
|
|
5249
5587
|
header?: never;
|
|
5250
|
-
path?: never;
|
|
5251
|
-
cookie?: never;
|
|
5252
|
-
};
|
|
5253
|
-
/** @description Confirmation */
|
|
5254
|
-
requestBody?: {
|
|
5255
|
-
content: {
|
|
5256
|
-
"application/json": components["schemas"]["AccountDeleteRequest"];
|
|
5588
|
+
path?: never;
|
|
5589
|
+
cookie?: never;
|
|
5590
|
+
};
|
|
5591
|
+
/** @description Confirmation */
|
|
5592
|
+
requestBody?: {
|
|
5593
|
+
content: {
|
|
5594
|
+
"application/json": components["schemas"]["AccountDeleteRequest"];
|
|
5595
|
+
};
|
|
5596
|
+
};
|
|
5597
|
+
responses: {
|
|
5598
|
+
/** @description Deleted */
|
|
5599
|
+
200: {
|
|
5600
|
+
headers: {
|
|
5601
|
+
[name: string]: unknown;
|
|
5602
|
+
};
|
|
5603
|
+
content: {
|
|
5604
|
+
"application/json": components["schemas"]["AccountDeletedResponse"];
|
|
5605
|
+
};
|
|
5606
|
+
};
|
|
5607
|
+
/** @description Unauthorized */
|
|
5608
|
+
401: {
|
|
5609
|
+
headers: {
|
|
5610
|
+
[name: string]: unknown;
|
|
5611
|
+
};
|
|
5612
|
+
content: {
|
|
5613
|
+
"application/json": components["schemas"]["Error"];
|
|
5614
|
+
};
|
|
5615
|
+
};
|
|
5616
|
+
/** @description Insufficient scope */
|
|
5617
|
+
403: {
|
|
5618
|
+
headers: {
|
|
5619
|
+
[name: string]: unknown;
|
|
5620
|
+
};
|
|
5621
|
+
content: {
|
|
5622
|
+
"application/json": components["schemas"]["Error"];
|
|
5623
|
+
};
|
|
5624
|
+
};
|
|
5625
|
+
/** @description No acceptable representation */
|
|
5626
|
+
406: {
|
|
5627
|
+
headers: {
|
|
5628
|
+
[name: string]: unknown;
|
|
5629
|
+
};
|
|
5630
|
+
content: {
|
|
5631
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
5632
|
+
};
|
|
5633
|
+
};
|
|
5634
|
+
/** @description Confirmation mismatch */
|
|
5635
|
+
422: {
|
|
5636
|
+
headers: {
|
|
5637
|
+
[name: string]: unknown;
|
|
5638
|
+
};
|
|
5639
|
+
content: {
|
|
5640
|
+
"application/json": components["schemas"]["Error"];
|
|
5641
|
+
};
|
|
5642
|
+
};
|
|
5643
|
+
/** @description Too Many Requests */
|
|
5644
|
+
429: {
|
|
5645
|
+
headers: {
|
|
5646
|
+
[name: string]: unknown;
|
|
5647
|
+
};
|
|
5648
|
+
content: {
|
|
5649
|
+
"application/json": components["schemas"]["Error"];
|
|
5650
|
+
};
|
|
5651
|
+
};
|
|
5652
|
+
/** @description Billing cancellation failed */
|
|
5653
|
+
502: {
|
|
5654
|
+
headers: {
|
|
5655
|
+
[name: string]: unknown;
|
|
5656
|
+
};
|
|
5657
|
+
content: {
|
|
5658
|
+
"application/json": components["schemas"]["Error"];
|
|
5659
|
+
};
|
|
5660
|
+
};
|
|
5661
|
+
};
|
|
5662
|
+
};
|
|
5663
|
+
"FountainWeb.BillingApiController.show": {
|
|
5664
|
+
parameters: {
|
|
5665
|
+
query?: never;
|
|
5666
|
+
header?: never;
|
|
5667
|
+
path?: never;
|
|
5668
|
+
cookie?: never;
|
|
5669
|
+
};
|
|
5670
|
+
requestBody?: never;
|
|
5671
|
+
responses: {
|
|
5672
|
+
/** @description Billing */
|
|
5673
|
+
200: {
|
|
5674
|
+
headers: {
|
|
5675
|
+
[name: string]: unknown;
|
|
5676
|
+
};
|
|
5677
|
+
content: {
|
|
5678
|
+
"application/json": components["schemas"]["BillingResponse"];
|
|
5679
|
+
};
|
|
5680
|
+
};
|
|
5681
|
+
/** @description Unauthorized */
|
|
5682
|
+
401: {
|
|
5683
|
+
headers: {
|
|
5684
|
+
[name: string]: unknown;
|
|
5685
|
+
};
|
|
5686
|
+
content: {
|
|
5687
|
+
"application/json": components["schemas"]["Error"];
|
|
5688
|
+
};
|
|
5689
|
+
};
|
|
5690
|
+
/** @description Insufficient scope */
|
|
5691
|
+
403: {
|
|
5692
|
+
headers: {
|
|
5693
|
+
[name: string]: unknown;
|
|
5694
|
+
};
|
|
5695
|
+
content: {
|
|
5696
|
+
"application/json": components["schemas"]["Error"];
|
|
5697
|
+
};
|
|
5698
|
+
};
|
|
5699
|
+
/** @description Billing disabled */
|
|
5700
|
+
404: {
|
|
5701
|
+
headers: {
|
|
5702
|
+
[name: string]: unknown;
|
|
5703
|
+
};
|
|
5704
|
+
content: {
|
|
5705
|
+
"application/json": components["schemas"]["Error"];
|
|
5706
|
+
};
|
|
5707
|
+
};
|
|
5708
|
+
/** @description No acceptable representation */
|
|
5709
|
+
406: {
|
|
5710
|
+
headers: {
|
|
5711
|
+
[name: string]: unknown;
|
|
5712
|
+
};
|
|
5713
|
+
content: {
|
|
5714
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
5715
|
+
};
|
|
5716
|
+
};
|
|
5717
|
+
/** @description Too Many Requests */
|
|
5718
|
+
429: {
|
|
5719
|
+
headers: {
|
|
5720
|
+
[name: string]: unknown;
|
|
5721
|
+
};
|
|
5722
|
+
content: {
|
|
5723
|
+
"application/json": components["schemas"]["Error"];
|
|
5724
|
+
};
|
|
5725
|
+
};
|
|
5726
|
+
};
|
|
5727
|
+
};
|
|
5728
|
+
"FountainWeb.BillingApiController.credits_checkout": {
|
|
5729
|
+
parameters: {
|
|
5730
|
+
query?: never;
|
|
5731
|
+
header?: never;
|
|
5732
|
+
path?: never;
|
|
5733
|
+
cookie?: never;
|
|
5734
|
+
};
|
|
5735
|
+
/** @description Pack */
|
|
5736
|
+
requestBody: {
|
|
5737
|
+
content: {
|
|
5738
|
+
"application/json": components["schemas"]["CreditsCheckoutRequest"];
|
|
5739
|
+
};
|
|
5740
|
+
};
|
|
5741
|
+
responses: {
|
|
5742
|
+
/** @description Stripe URL */
|
|
5743
|
+
200: {
|
|
5744
|
+
headers: {
|
|
5745
|
+
[name: string]: unknown;
|
|
5746
|
+
};
|
|
5747
|
+
content: {
|
|
5748
|
+
"application/json": components["schemas"]["StripeUrlResponse"];
|
|
5749
|
+
};
|
|
5750
|
+
};
|
|
5751
|
+
/** @description Unauthorized */
|
|
5752
|
+
401: {
|
|
5753
|
+
headers: {
|
|
5754
|
+
[name: string]: unknown;
|
|
5755
|
+
};
|
|
5756
|
+
content: {
|
|
5757
|
+
"application/json": components["schemas"]["Error"];
|
|
5758
|
+
};
|
|
5759
|
+
};
|
|
5760
|
+
/** @description Insufficient scope */
|
|
5761
|
+
403: {
|
|
5762
|
+
headers: {
|
|
5763
|
+
[name: string]: unknown;
|
|
5764
|
+
};
|
|
5765
|
+
content: {
|
|
5766
|
+
"application/json": components["schemas"]["Error"];
|
|
5767
|
+
};
|
|
5768
|
+
};
|
|
5769
|
+
/** @description Billing disabled */
|
|
5770
|
+
404: {
|
|
5771
|
+
headers: {
|
|
5772
|
+
[name: string]: unknown;
|
|
5773
|
+
};
|
|
5774
|
+
content: {
|
|
5775
|
+
"application/json": components["schemas"]["Error"];
|
|
5776
|
+
};
|
|
5777
|
+
};
|
|
5778
|
+
/** @description No acceptable representation */
|
|
5779
|
+
406: {
|
|
5780
|
+
headers: {
|
|
5781
|
+
[name: string]: unknown;
|
|
5782
|
+
};
|
|
5783
|
+
content: {
|
|
5784
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
5785
|
+
};
|
|
5786
|
+
};
|
|
5787
|
+
/** @description Refused */
|
|
5788
|
+
422: {
|
|
5789
|
+
headers: {
|
|
5790
|
+
[name: string]: unknown;
|
|
5791
|
+
};
|
|
5792
|
+
content: {
|
|
5793
|
+
"application/json": components["schemas"]["Error"];
|
|
5794
|
+
};
|
|
5795
|
+
};
|
|
5796
|
+
/** @description Too Many Requests */
|
|
5797
|
+
429: {
|
|
5798
|
+
headers: {
|
|
5799
|
+
[name: string]: unknown;
|
|
5800
|
+
};
|
|
5801
|
+
content: {
|
|
5802
|
+
"application/json": components["schemas"]["Error"];
|
|
5803
|
+
};
|
|
5804
|
+
};
|
|
5805
|
+
/** @description Stripe unreachable */
|
|
5806
|
+
502: {
|
|
5807
|
+
headers: {
|
|
5808
|
+
[name: string]: unknown;
|
|
5809
|
+
};
|
|
5810
|
+
content: {
|
|
5811
|
+
"application/json": components["schemas"]["Error"];
|
|
5812
|
+
};
|
|
5813
|
+
};
|
|
5814
|
+
};
|
|
5815
|
+
};
|
|
5816
|
+
"FountainWeb.ChatGPTSubscriptionController.index": {
|
|
5817
|
+
parameters: {
|
|
5818
|
+
query?: never;
|
|
5819
|
+
header?: never;
|
|
5820
|
+
path?: never;
|
|
5821
|
+
cookie?: never;
|
|
5822
|
+
};
|
|
5823
|
+
requestBody?: never;
|
|
5824
|
+
responses: {
|
|
5825
|
+
/** @description Subscriptions */
|
|
5826
|
+
200: {
|
|
5827
|
+
headers: {
|
|
5828
|
+
[name: string]: unknown;
|
|
5829
|
+
};
|
|
5830
|
+
content: {
|
|
5831
|
+
"application/json": components["schemas"]["ChatGPTSubscriptionListResponse"];
|
|
5832
|
+
};
|
|
5833
|
+
};
|
|
5834
|
+
/** @description Unauthorized */
|
|
5835
|
+
401: {
|
|
5836
|
+
headers: {
|
|
5837
|
+
[name: string]: unknown;
|
|
5838
|
+
};
|
|
5839
|
+
content: {
|
|
5840
|
+
"application/json": components["schemas"]["Error"];
|
|
5841
|
+
};
|
|
5842
|
+
};
|
|
5843
|
+
/** @description Insufficient scope */
|
|
5844
|
+
403: {
|
|
5845
|
+
headers: {
|
|
5846
|
+
[name: string]: unknown;
|
|
5847
|
+
};
|
|
5848
|
+
content: {
|
|
5849
|
+
"application/json": components["schemas"]["Error"];
|
|
5850
|
+
};
|
|
5851
|
+
};
|
|
5852
|
+
/** @description No acceptable representation */
|
|
5853
|
+
406: {
|
|
5854
|
+
headers: {
|
|
5855
|
+
[name: string]: unknown;
|
|
5856
|
+
};
|
|
5857
|
+
content: {
|
|
5858
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
5859
|
+
};
|
|
5860
|
+
};
|
|
5861
|
+
/** @description Too Many Requests */
|
|
5862
|
+
429: {
|
|
5863
|
+
headers: {
|
|
5864
|
+
[name: string]: unknown;
|
|
5865
|
+
};
|
|
5866
|
+
content: {
|
|
5867
|
+
"application/json": components["schemas"]["Error"];
|
|
5868
|
+
};
|
|
5869
|
+
};
|
|
5870
|
+
};
|
|
5871
|
+
};
|
|
5872
|
+
"FountainWeb.ChatGPTSubscriptionController.index_attempts": {
|
|
5873
|
+
parameters: {
|
|
5874
|
+
query?: never;
|
|
5875
|
+
header?: never;
|
|
5876
|
+
path?: never;
|
|
5877
|
+
cookie?: never;
|
|
5878
|
+
};
|
|
5879
|
+
requestBody?: never;
|
|
5880
|
+
responses: {
|
|
5881
|
+
/** @description Attempts */
|
|
5882
|
+
200: {
|
|
5883
|
+
headers: {
|
|
5884
|
+
[name: string]: unknown;
|
|
5885
|
+
};
|
|
5886
|
+
content: {
|
|
5887
|
+
"application/json": components["schemas"]["ChatGPTLinkAttemptListResponse"];
|
|
5888
|
+
};
|
|
5889
|
+
};
|
|
5890
|
+
/** @description Unauthorized */
|
|
5891
|
+
401: {
|
|
5892
|
+
headers: {
|
|
5893
|
+
[name: string]: unknown;
|
|
5894
|
+
};
|
|
5895
|
+
content: {
|
|
5896
|
+
"application/json": components["schemas"]["Error"];
|
|
5897
|
+
};
|
|
5898
|
+
};
|
|
5899
|
+
/** @description Insufficient scope */
|
|
5900
|
+
403: {
|
|
5901
|
+
headers: {
|
|
5902
|
+
[name: string]: unknown;
|
|
5903
|
+
};
|
|
5904
|
+
content: {
|
|
5905
|
+
"application/json": components["schemas"]["Error"];
|
|
5906
|
+
};
|
|
5907
|
+
};
|
|
5908
|
+
/** @description No acceptable representation */
|
|
5909
|
+
406: {
|
|
5910
|
+
headers: {
|
|
5911
|
+
[name: string]: unknown;
|
|
5912
|
+
};
|
|
5913
|
+
content: {
|
|
5914
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
5915
|
+
};
|
|
5916
|
+
};
|
|
5917
|
+
/** @description Too Many Requests */
|
|
5918
|
+
429: {
|
|
5919
|
+
headers: {
|
|
5920
|
+
[name: string]: unknown;
|
|
5921
|
+
};
|
|
5922
|
+
content: {
|
|
5923
|
+
"application/json": components["schemas"]["Error"];
|
|
5924
|
+
};
|
|
5925
|
+
};
|
|
5926
|
+
};
|
|
5927
|
+
};
|
|
5928
|
+
"FountainWeb.ChatGPTSubscriptionController.create_attempt": {
|
|
5929
|
+
parameters: {
|
|
5930
|
+
query?: never;
|
|
5931
|
+
header?: never;
|
|
5932
|
+
path?: never;
|
|
5933
|
+
cookie?: never;
|
|
5934
|
+
};
|
|
5935
|
+
/** @description What to sign in for */
|
|
5936
|
+
requestBody?: {
|
|
5937
|
+
content: {
|
|
5938
|
+
"application/json": components["schemas"]["ChatGPTLinkAttemptCreateRequest"];
|
|
5939
|
+
};
|
|
5940
|
+
};
|
|
5941
|
+
responses: {
|
|
5942
|
+
/** @description Attempt */
|
|
5943
|
+
201: {
|
|
5944
|
+
headers: {
|
|
5945
|
+
[name: string]: unknown;
|
|
5946
|
+
};
|
|
5947
|
+
content: {
|
|
5948
|
+
"application/json": components["schemas"]["ChatGPTLinkAttemptResponse"];
|
|
5949
|
+
};
|
|
5950
|
+
};
|
|
5951
|
+
/** @description Unauthorized */
|
|
5952
|
+
401: {
|
|
5953
|
+
headers: {
|
|
5954
|
+
[name: string]: unknown;
|
|
5955
|
+
};
|
|
5956
|
+
content: {
|
|
5957
|
+
"application/json": components["schemas"]["Error"];
|
|
5958
|
+
};
|
|
5959
|
+
};
|
|
5960
|
+
/** @description Insufficient scope, or `chatgpt_owner_ineligible` */
|
|
5961
|
+
403: {
|
|
5962
|
+
headers: {
|
|
5963
|
+
[name: string]: unknown;
|
|
5964
|
+
};
|
|
5965
|
+
content: {
|
|
5966
|
+
"application/json": components["schemas"]["Error"];
|
|
5967
|
+
};
|
|
5968
|
+
};
|
|
5969
|
+
/** @description `chatgpt_subscriptions_not_enabled`, or no such subscription to reconnect */
|
|
5970
|
+
404: {
|
|
5971
|
+
headers: {
|
|
5972
|
+
[name: string]: unknown;
|
|
5973
|
+
};
|
|
5974
|
+
content: {
|
|
5975
|
+
"application/json": components["schemas"]["Error"];
|
|
5976
|
+
};
|
|
5977
|
+
};
|
|
5978
|
+
/** @description No acceptable representation */
|
|
5979
|
+
406: {
|
|
5980
|
+
headers: {
|
|
5981
|
+
[name: string]: unknown;
|
|
5982
|
+
};
|
|
5983
|
+
content: {
|
|
5984
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
5985
|
+
};
|
|
5986
|
+
};
|
|
5987
|
+
/** @description `chatgpt_grant_limit_reached`, `chatgpt_link_attempts_exceeded` or `chatgpt_link_attempt_pending` */
|
|
5988
|
+
409: {
|
|
5989
|
+
headers: {
|
|
5990
|
+
[name: string]: unknown;
|
|
5991
|
+
};
|
|
5992
|
+
content: {
|
|
5993
|
+
"application/json": components["schemas"]["Error"];
|
|
5994
|
+
};
|
|
5995
|
+
};
|
|
5996
|
+
/** @description Invalid or duplicate name */
|
|
5997
|
+
422: {
|
|
5998
|
+
headers: {
|
|
5999
|
+
[name: string]: unknown;
|
|
6000
|
+
};
|
|
6001
|
+
content: {
|
|
6002
|
+
"application/json": components["schemas"]["Error"];
|
|
6003
|
+
};
|
|
6004
|
+
};
|
|
6005
|
+
/** @description `chatgpt_link_attempts_rate_limited`, with `Retry-After` */
|
|
6006
|
+
429: {
|
|
6007
|
+
headers: {
|
|
6008
|
+
[name: string]: unknown;
|
|
6009
|
+
};
|
|
6010
|
+
content: {
|
|
6011
|
+
"application/json": components["schemas"]["Error"];
|
|
6012
|
+
};
|
|
6013
|
+
};
|
|
6014
|
+
/** @description `chatgpt_auth_unreachable` */
|
|
6015
|
+
502: {
|
|
6016
|
+
headers: {
|
|
6017
|
+
[name: string]: unknown;
|
|
6018
|
+
};
|
|
6019
|
+
content: {
|
|
6020
|
+
"application/json": components["schemas"]["Error"];
|
|
6021
|
+
};
|
|
6022
|
+
};
|
|
6023
|
+
/** @description `chatgpt_tenant_key_unavailable` */
|
|
6024
|
+
503: {
|
|
6025
|
+
headers: {
|
|
6026
|
+
[name: string]: unknown;
|
|
6027
|
+
};
|
|
6028
|
+
content: {
|
|
6029
|
+
"application/json": components["schemas"]["Error"];
|
|
6030
|
+
};
|
|
6031
|
+
};
|
|
6032
|
+
};
|
|
6033
|
+
};
|
|
6034
|
+
"FountainWeb.ChatGPTSubscriptionController.show_attempt": {
|
|
6035
|
+
parameters: {
|
|
6036
|
+
query?: never;
|
|
6037
|
+
header?: never;
|
|
6038
|
+
path: {
|
|
6039
|
+
id: string;
|
|
5257
6040
|
};
|
|
6041
|
+
cookie?: never;
|
|
5258
6042
|
};
|
|
6043
|
+
requestBody?: never;
|
|
5259
6044
|
responses: {
|
|
5260
|
-
/** @description
|
|
6045
|
+
/** @description Attempt */
|
|
5261
6046
|
200: {
|
|
5262
6047
|
headers: {
|
|
5263
6048
|
[name: string]: unknown;
|
|
5264
6049
|
};
|
|
5265
6050
|
content: {
|
|
5266
|
-
"application/json": components["schemas"]["
|
|
6051
|
+
"application/json": components["schemas"]["ChatGPTLinkAttemptResponse"];
|
|
5267
6052
|
};
|
|
5268
6053
|
};
|
|
5269
6054
|
/** @description Unauthorized */
|
|
@@ -5284,6 +6069,15 @@ export interface operations {
|
|
|
5284
6069
|
"application/json": components["schemas"]["Error"];
|
|
5285
6070
|
};
|
|
5286
6071
|
};
|
|
6072
|
+
/** @description No such attempt */
|
|
6073
|
+
404: {
|
|
6074
|
+
headers: {
|
|
6075
|
+
[name: string]: unknown;
|
|
6076
|
+
};
|
|
6077
|
+
content: {
|
|
6078
|
+
"application/json": components["schemas"]["Error"];
|
|
6079
|
+
};
|
|
6080
|
+
};
|
|
5287
6081
|
/** @description No acceptable representation */
|
|
5288
6082
|
406: {
|
|
5289
6083
|
headers: {
|
|
@@ -5293,8 +6087,8 @@ export interface operations {
|
|
|
5293
6087
|
"application/json": components["schemas"]["NegotiationError"];
|
|
5294
6088
|
};
|
|
5295
6089
|
};
|
|
5296
|
-
/** @description
|
|
5297
|
-
|
|
6090
|
+
/** @description Too Many Requests */
|
|
6091
|
+
429: {
|
|
5298
6092
|
headers: {
|
|
5299
6093
|
[name: string]: unknown;
|
|
5300
6094
|
};
|
|
@@ -5302,8 +6096,30 @@ export interface operations {
|
|
|
5302
6096
|
"application/json": components["schemas"]["Error"];
|
|
5303
6097
|
};
|
|
5304
6098
|
};
|
|
5305
|
-
|
|
5306
|
-
|
|
6099
|
+
};
|
|
6100
|
+
};
|
|
6101
|
+
"FountainWeb.ChatGPTSubscriptionController.cancel_attempt": {
|
|
6102
|
+
parameters: {
|
|
6103
|
+
query?: never;
|
|
6104
|
+
header?: never;
|
|
6105
|
+
path: {
|
|
6106
|
+
id: string;
|
|
6107
|
+
};
|
|
6108
|
+
cookie?: never;
|
|
6109
|
+
};
|
|
6110
|
+
requestBody?: never;
|
|
6111
|
+
responses: {
|
|
6112
|
+
/** @description Attempt */
|
|
6113
|
+
200: {
|
|
6114
|
+
headers: {
|
|
6115
|
+
[name: string]: unknown;
|
|
6116
|
+
};
|
|
6117
|
+
content: {
|
|
6118
|
+
"application/json": components["schemas"]["ChatGPTLinkAttemptResponse"];
|
|
6119
|
+
};
|
|
6120
|
+
};
|
|
6121
|
+
/** @description Unauthorized */
|
|
6122
|
+
401: {
|
|
5307
6123
|
headers: {
|
|
5308
6124
|
[name: string]: unknown;
|
|
5309
6125
|
};
|
|
@@ -5311,8 +6127,44 @@ export interface operations {
|
|
|
5311
6127
|
"application/json": components["schemas"]["Error"];
|
|
5312
6128
|
};
|
|
5313
6129
|
};
|
|
5314
|
-
/** @description
|
|
5315
|
-
|
|
6130
|
+
/** @description Insufficient scope */
|
|
6131
|
+
403: {
|
|
6132
|
+
headers: {
|
|
6133
|
+
[name: string]: unknown;
|
|
6134
|
+
};
|
|
6135
|
+
content: {
|
|
6136
|
+
"application/json": components["schemas"]["Error"];
|
|
6137
|
+
};
|
|
6138
|
+
};
|
|
6139
|
+
/** @description No such attempt */
|
|
6140
|
+
404: {
|
|
6141
|
+
headers: {
|
|
6142
|
+
[name: string]: unknown;
|
|
6143
|
+
};
|
|
6144
|
+
content: {
|
|
6145
|
+
"application/json": components["schemas"]["Error"];
|
|
6146
|
+
};
|
|
6147
|
+
};
|
|
6148
|
+
/** @description No acceptable representation */
|
|
6149
|
+
406: {
|
|
6150
|
+
headers: {
|
|
6151
|
+
[name: string]: unknown;
|
|
6152
|
+
};
|
|
6153
|
+
content: {
|
|
6154
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
6155
|
+
};
|
|
6156
|
+
};
|
|
6157
|
+
/** @description `chatgpt_link_attempt_not_pending` */
|
|
6158
|
+
409: {
|
|
6159
|
+
headers: {
|
|
6160
|
+
[name: string]: unknown;
|
|
6161
|
+
};
|
|
6162
|
+
content: {
|
|
6163
|
+
"application/json": components["schemas"]["Error"];
|
|
6164
|
+
};
|
|
6165
|
+
};
|
|
6166
|
+
/** @description Too Many Requests */
|
|
6167
|
+
429: {
|
|
5316
6168
|
headers: {
|
|
5317
6169
|
[name: string]: unknown;
|
|
5318
6170
|
};
|
|
@@ -5322,23 +6174,23 @@ export interface operations {
|
|
|
5322
6174
|
};
|
|
5323
6175
|
};
|
|
5324
6176
|
};
|
|
5325
|
-
"FountainWeb.
|
|
6177
|
+
"FountainWeb.ChatGPTSubscriptionController.delete": {
|
|
5326
6178
|
parameters: {
|
|
5327
6179
|
query?: never;
|
|
5328
6180
|
header?: never;
|
|
5329
|
-
path
|
|
6181
|
+
path: {
|
|
6182
|
+
id: string;
|
|
6183
|
+
};
|
|
5330
6184
|
cookie?: never;
|
|
5331
6185
|
};
|
|
5332
6186
|
requestBody?: never;
|
|
5333
6187
|
responses: {
|
|
5334
|
-
/** @description
|
|
5335
|
-
|
|
6188
|
+
/** @description Removed */
|
|
6189
|
+
204: {
|
|
5336
6190
|
headers: {
|
|
5337
6191
|
[name: string]: unknown;
|
|
5338
6192
|
};
|
|
5339
|
-
content
|
|
5340
|
-
"application/json": components["schemas"]["BillingResponse"];
|
|
5341
|
-
};
|
|
6193
|
+
content?: never;
|
|
5342
6194
|
};
|
|
5343
6195
|
/** @description Unauthorized */
|
|
5344
6196
|
401: {
|
|
@@ -5358,7 +6210,7 @@ export interface operations {
|
|
|
5358
6210
|
"application/json": components["schemas"]["Error"];
|
|
5359
6211
|
};
|
|
5360
6212
|
};
|
|
5361
|
-
/** @description
|
|
6213
|
+
/** @description No such subscription */
|
|
5362
6214
|
404: {
|
|
5363
6215
|
headers: {
|
|
5364
6216
|
[name: string]: unknown;
|
|
@@ -5376,6 +6228,15 @@ export interface operations {
|
|
|
5376
6228
|
"application/json": components["schemas"]["NegotiationError"];
|
|
5377
6229
|
};
|
|
5378
6230
|
};
|
|
6231
|
+
/** @description Still connected, or named by sets */
|
|
6232
|
+
409: {
|
|
6233
|
+
headers: {
|
|
6234
|
+
[name: string]: unknown;
|
|
6235
|
+
};
|
|
6236
|
+
content: {
|
|
6237
|
+
"application/json": components["schemas"]["Error"];
|
|
6238
|
+
};
|
|
6239
|
+
};
|
|
5379
6240
|
/** @description Too Many Requests */
|
|
5380
6241
|
429: {
|
|
5381
6242
|
headers: {
|
|
@@ -5387,27 +6248,29 @@ export interface operations {
|
|
|
5387
6248
|
};
|
|
5388
6249
|
};
|
|
5389
6250
|
};
|
|
5390
|
-
"FountainWeb.
|
|
6251
|
+
"FountainWeb.ChatGPTSubscriptionController.update": {
|
|
5391
6252
|
parameters: {
|
|
5392
6253
|
query?: never;
|
|
5393
6254
|
header?: never;
|
|
5394
|
-
path
|
|
6255
|
+
path: {
|
|
6256
|
+
id: string;
|
|
6257
|
+
};
|
|
5395
6258
|
cookie?: never;
|
|
5396
6259
|
};
|
|
5397
|
-
/** @description
|
|
5398
|
-
requestBody
|
|
6260
|
+
/** @description New name */
|
|
6261
|
+
requestBody?: {
|
|
5399
6262
|
content: {
|
|
5400
|
-
"application/json": components["schemas"]["
|
|
6263
|
+
"application/json": components["schemas"]["ChatGPTSubscriptionUpdateRequest"];
|
|
5401
6264
|
};
|
|
5402
6265
|
};
|
|
5403
6266
|
responses: {
|
|
5404
|
-
/** @description
|
|
6267
|
+
/** @description Subscription */
|
|
5405
6268
|
200: {
|
|
5406
6269
|
headers: {
|
|
5407
6270
|
[name: string]: unknown;
|
|
5408
6271
|
};
|
|
5409
6272
|
content: {
|
|
5410
|
-
"application/json": components["schemas"]["
|
|
6273
|
+
"application/json": components["schemas"]["ChatGPTSubscriptionResponse"];
|
|
5411
6274
|
};
|
|
5412
6275
|
};
|
|
5413
6276
|
/** @description Unauthorized */
|
|
@@ -5419,7 +6282,7 @@ export interface operations {
|
|
|
5419
6282
|
"application/json": components["schemas"]["Error"];
|
|
5420
6283
|
};
|
|
5421
6284
|
};
|
|
5422
|
-
/** @description Insufficient scope */
|
|
6285
|
+
/** @description Insufficient scope, or `chatgpt_owner_ineligible` */
|
|
5423
6286
|
403: {
|
|
5424
6287
|
headers: {
|
|
5425
6288
|
[name: string]: unknown;
|
|
@@ -5428,7 +6291,7 @@ export interface operations {
|
|
|
5428
6291
|
"application/json": components["schemas"]["Error"];
|
|
5429
6292
|
};
|
|
5430
6293
|
};
|
|
5431
|
-
/** @description
|
|
6294
|
+
/** @description No such subscription */
|
|
5432
6295
|
404: {
|
|
5433
6296
|
headers: {
|
|
5434
6297
|
[name: string]: unknown;
|
|
@@ -5446,7 +6309,7 @@ export interface operations {
|
|
|
5446
6309
|
"application/json": components["schemas"]["NegotiationError"];
|
|
5447
6310
|
};
|
|
5448
6311
|
};
|
|
5449
|
-
/** @description
|
|
6312
|
+
/** @description Invalid or duplicate name */
|
|
5450
6313
|
422: {
|
|
5451
6314
|
headers: {
|
|
5452
6315
|
[name: string]: unknown;
|
|
@@ -5464,8 +6327,66 @@ export interface operations {
|
|
|
5464
6327
|
"application/json": components["schemas"]["Error"];
|
|
5465
6328
|
};
|
|
5466
6329
|
};
|
|
5467
|
-
|
|
5468
|
-
|
|
6330
|
+
};
|
|
6331
|
+
};
|
|
6332
|
+
"FountainWeb.ChatGPTSubscriptionController.disconnect": {
|
|
6333
|
+
parameters: {
|
|
6334
|
+
query?: never;
|
|
6335
|
+
header?: never;
|
|
6336
|
+
path: {
|
|
6337
|
+
id: string;
|
|
6338
|
+
};
|
|
6339
|
+
cookie?: never;
|
|
6340
|
+
};
|
|
6341
|
+
requestBody?: never;
|
|
6342
|
+
responses: {
|
|
6343
|
+
/** @description Subscription */
|
|
6344
|
+
200: {
|
|
6345
|
+
headers: {
|
|
6346
|
+
[name: string]: unknown;
|
|
6347
|
+
};
|
|
6348
|
+
content: {
|
|
6349
|
+
"application/json": components["schemas"]["ChatGPTSubscriptionResponse"];
|
|
6350
|
+
};
|
|
6351
|
+
};
|
|
6352
|
+
/** @description Unauthorized */
|
|
6353
|
+
401: {
|
|
6354
|
+
headers: {
|
|
6355
|
+
[name: string]: unknown;
|
|
6356
|
+
};
|
|
6357
|
+
content: {
|
|
6358
|
+
"application/json": components["schemas"]["Error"];
|
|
6359
|
+
};
|
|
6360
|
+
};
|
|
6361
|
+
/** @description Insufficient scope */
|
|
6362
|
+
403: {
|
|
6363
|
+
headers: {
|
|
6364
|
+
[name: string]: unknown;
|
|
6365
|
+
};
|
|
6366
|
+
content: {
|
|
6367
|
+
"application/json": components["schemas"]["Error"];
|
|
6368
|
+
};
|
|
6369
|
+
};
|
|
6370
|
+
/** @description No such subscription */
|
|
6371
|
+
404: {
|
|
6372
|
+
headers: {
|
|
6373
|
+
[name: string]: unknown;
|
|
6374
|
+
};
|
|
6375
|
+
content: {
|
|
6376
|
+
"application/json": components["schemas"]["Error"];
|
|
6377
|
+
};
|
|
6378
|
+
};
|
|
6379
|
+
/** @description No acceptable representation */
|
|
6380
|
+
406: {
|
|
6381
|
+
headers: {
|
|
6382
|
+
[name: string]: unknown;
|
|
6383
|
+
};
|
|
6384
|
+
content: {
|
|
6385
|
+
"application/json": components["schemas"]["NegotiationError"];
|
|
6386
|
+
};
|
|
6387
|
+
};
|
|
6388
|
+
/** @description Too Many Requests */
|
|
6389
|
+
429: {
|
|
5469
6390
|
headers: {
|
|
5470
6391
|
[name: string]: unknown;
|
|
5471
6392
|
};
|
|
@@ -5907,7 +6828,7 @@ export interface operations {
|
|
|
5907
6828
|
[name: string]: unknown;
|
|
5908
6829
|
};
|
|
5909
6830
|
content: {
|
|
5910
|
-
"application/json": components["schemas"]["
|
|
6831
|
+
"application/json": components["schemas"]["Error"];
|
|
5911
6832
|
};
|
|
5912
6833
|
};
|
|
5913
6834
|
/** @description Too Many Requests */
|
|
@@ -6739,6 +7660,15 @@ export interface operations {
|
|
|
6739
7660
|
"application/json": components["schemas"]["Error"];
|
|
6740
7661
|
};
|
|
6741
7662
|
};
|
|
7663
|
+
/** @description Another teardown holds this machine; retry */
|
|
7664
|
+
503: {
|
|
7665
|
+
headers: {
|
|
7666
|
+
[name: string]: unknown;
|
|
7667
|
+
};
|
|
7668
|
+
content: {
|
|
7669
|
+
"application/json": components["schemas"]["Error"];
|
|
7670
|
+
};
|
|
7671
|
+
};
|
|
6742
7672
|
};
|
|
6743
7673
|
};
|
|
6744
7674
|
"FountainWeb.AdminController.index_users": {
|
|
@@ -7498,7 +8428,7 @@ export interface operations {
|
|
|
7498
8428
|
[name: string]: unknown;
|
|
7499
8429
|
};
|
|
7500
8430
|
content: {
|
|
7501
|
-
"application/json": components["schemas"]["
|
|
8431
|
+
"application/json": components["schemas"]["Error"];
|
|
7502
8432
|
};
|
|
7503
8433
|
};
|
|
7504
8434
|
/** @description Too Many Requests */
|
|
@@ -7655,7 +8585,7 @@ export interface operations {
|
|
|
7655
8585
|
[name: string]: unknown;
|
|
7656
8586
|
};
|
|
7657
8587
|
content: {
|
|
7658
|
-
"application/json": components["schemas"]["
|
|
8588
|
+
"application/json": components["schemas"]["Error"];
|
|
7659
8589
|
};
|
|
7660
8590
|
};
|
|
7661
8591
|
/** @description Too Many Requests */
|
|
@@ -7810,7 +8740,7 @@ export interface operations {
|
|
|
7810
8740
|
[name: string]: unknown;
|
|
7811
8741
|
};
|
|
7812
8742
|
content: {
|
|
7813
|
-
"application/json": components["schemas"]["
|
|
8743
|
+
"application/json": components["schemas"]["Error"];
|
|
7814
8744
|
};
|
|
7815
8745
|
};
|
|
7816
8746
|
/** @description Too Many Requests */
|
|
@@ -8229,7 +9159,7 @@ export interface operations {
|
|
|
8229
9159
|
[name: string]: unknown;
|
|
8230
9160
|
};
|
|
8231
9161
|
content: {
|
|
8232
|
-
"application/json": components["schemas"]["
|
|
9162
|
+
"application/json": components["schemas"]["Error"];
|
|
8233
9163
|
};
|
|
8234
9164
|
};
|
|
8235
9165
|
/** @description Too Many Requests */
|
|
@@ -8623,7 +9553,7 @@ export interface operations {
|
|
|
8623
9553
|
[name: string]: unknown;
|
|
8624
9554
|
};
|
|
8625
9555
|
content: {
|
|
8626
|
-
"application/json": components["schemas"]["
|
|
9556
|
+
"application/json": components["schemas"]["Error"];
|
|
8627
9557
|
};
|
|
8628
9558
|
};
|
|
8629
9559
|
/** @description No acceptable representation */
|
|
@@ -8641,7 +9571,7 @@ export interface operations {
|
|
|
8641
9571
|
[name: string]: unknown;
|
|
8642
9572
|
};
|
|
8643
9573
|
content: {
|
|
8644
|
-
"application/json": components["schemas"]["
|
|
9574
|
+
"application/json": components["schemas"]["Error"];
|
|
8645
9575
|
};
|
|
8646
9576
|
};
|
|
8647
9577
|
/** @description Too Many Requests */
|
|
@@ -8693,7 +9623,7 @@ export interface operations {
|
|
|
8693
9623
|
[name: string]: unknown;
|
|
8694
9624
|
};
|
|
8695
9625
|
content: {
|
|
8696
|
-
"application/json": components["schemas"]["
|
|
9626
|
+
"application/json": components["schemas"]["Error"];
|
|
8697
9627
|
};
|
|
8698
9628
|
};
|
|
8699
9629
|
};
|
|
@@ -8826,7 +9756,7 @@ export interface operations {
|
|
|
8826
9756
|
[name: string]: unknown;
|
|
8827
9757
|
};
|
|
8828
9758
|
content: {
|
|
8829
|
-
"application/json": components["schemas"]["
|
|
9759
|
+
"application/json": components["schemas"]["Error"];
|
|
8830
9760
|
};
|
|
8831
9761
|
};
|
|
8832
9762
|
/** @description No acceptable representation */
|
|
@@ -8844,7 +9774,7 @@ export interface operations {
|
|
|
8844
9774
|
[name: string]: unknown;
|
|
8845
9775
|
};
|
|
8846
9776
|
content: {
|
|
8847
|
-
"application/json": components["schemas"]["
|
|
9777
|
+
"application/json": components["schemas"]["Error"];
|
|
8848
9778
|
};
|
|
8849
9779
|
};
|
|
8850
9780
|
/** @description Too Many Requests */
|
|
@@ -8887,7 +9817,7 @@ export interface operations {
|
|
|
8887
9817
|
[name: string]: unknown;
|
|
8888
9818
|
};
|
|
8889
9819
|
content: {
|
|
8890
|
-
"application/json": components["schemas"]["
|
|
9820
|
+
"application/json": components["schemas"]["Error"];
|
|
8891
9821
|
};
|
|
8892
9822
|
};
|
|
8893
9823
|
/** @description No acceptable representation */
|
|
@@ -8905,7 +9835,7 @@ export interface operations {
|
|
|
8905
9835
|
[name: string]: unknown;
|
|
8906
9836
|
};
|
|
8907
9837
|
content: {
|
|
8908
|
-
"application/json": components["schemas"]["
|
|
9838
|
+
"application/json": components["schemas"]["Error"];
|
|
8909
9839
|
};
|
|
8910
9840
|
};
|
|
8911
9841
|
};
|
|
@@ -8982,7 +9912,7 @@ export interface operations {
|
|
|
8982
9912
|
[name: string]: unknown;
|
|
8983
9913
|
};
|
|
8984
9914
|
content: {
|
|
8985
|
-
"application/json": components["schemas"]["
|
|
9915
|
+
"application/json": components["schemas"]["Error"];
|
|
8986
9916
|
};
|
|
8987
9917
|
};
|
|
8988
9918
|
};
|
|
@@ -9025,7 +9955,7 @@ export interface operations {
|
|
|
9025
9955
|
[name: string]: unknown;
|
|
9026
9956
|
};
|
|
9027
9957
|
content: {
|
|
9028
|
-
"application/json": components["schemas"]["
|
|
9958
|
+
"application/json": components["schemas"]["Error"];
|
|
9029
9959
|
};
|
|
9030
9960
|
};
|
|
9031
9961
|
/** @description No acceptable representation */
|
|
@@ -9095,7 +10025,7 @@ export interface operations {
|
|
|
9095
10025
|
[name: string]: unknown;
|
|
9096
10026
|
};
|
|
9097
10027
|
content: {
|
|
9098
|
-
"application/json": components["schemas"]["
|
|
10028
|
+
"application/json": components["schemas"]["Error"];
|
|
9099
10029
|
};
|
|
9100
10030
|
};
|
|
9101
10031
|
};
|
|
@@ -10794,7 +11724,7 @@ export interface operations {
|
|
|
10794
11724
|
[name: string]: unknown;
|
|
10795
11725
|
};
|
|
10796
11726
|
content: {
|
|
10797
|
-
"application/json": components["schemas"]["
|
|
11727
|
+
"application/json": components["schemas"]["Error"];
|
|
10798
11728
|
};
|
|
10799
11729
|
};
|
|
10800
11730
|
/** @description Too Many Requests */
|
|
@@ -10873,10 +11803,7 @@ export interface operations {
|
|
|
10873
11803
|
[name: string]: unknown;
|
|
10874
11804
|
};
|
|
10875
11805
|
content: {
|
|
10876
|
-
"application/json":
|
|
10877
|
-
error?: string;
|
|
10878
|
-
upgrade_url?: string;
|
|
10879
|
-
};
|
|
11806
|
+
"application/json": components["schemas"]["Error"];
|
|
10880
11807
|
};
|
|
10881
11808
|
};
|
|
10882
11809
|
/** @description A sandbox token labelling the conversation a resume landed on */
|
|
@@ -10921,7 +11848,7 @@ export interface operations {
|
|
|
10921
11848
|
[name: string]: unknown;
|
|
10922
11849
|
};
|
|
10923
11850
|
content: {
|
|
10924
|
-
"application/json": components["schemas"]["
|
|
11851
|
+
"application/json": components["schemas"]["Error"];
|
|
10925
11852
|
};
|
|
10926
11853
|
};
|
|
10927
11854
|
/** @description Tenant concurrency cap reached */
|
|
@@ -11020,7 +11947,7 @@ export interface operations {
|
|
|
11020
11947
|
[name: string]: unknown;
|
|
11021
11948
|
};
|
|
11022
11949
|
content: {
|
|
11023
|
-
"application/json": components["schemas"]["
|
|
11950
|
+
"application/json": components["schemas"]["Error"];
|
|
11024
11951
|
};
|
|
11025
11952
|
};
|
|
11026
11953
|
};
|
|
@@ -11036,6 +11963,8 @@ export interface operations {
|
|
|
11036
11963
|
limit?: number;
|
|
11037
11964
|
/** @description Add `blocks` to each event: its `data` parsed server-side into the structured blocks a transcript renders (text, thinking, tool_use, tool_result, init, result, error, raw) — the same parse the web UI uses, so no client re-implements a runtime's dialect. Defaults to false. */
|
|
11038
11965
|
blocks?: boolean;
|
|
11966
|
+
/** @description With `blocks=true`, fill each turn's `turn`/`started` stage event — whose `blocks` is otherwise always `[]` — with one `prompt` block carrying the prompt that opened that turn. Without it the feed holds only what the runtime wrote, so a client replaying a conversation renders it as a monologue in the agent's voice. No event is added, removed or reordered, so `meta.next_cursor`, `has_more` and the page size are unchanged. A turn whose `origin` is `autonomous` gets no block: nobody typed it. Note that `streams=acp` excludes stage events, and so excludes these prompts with them. Ignored without `blocks=true`. Defaults to false. */
|
|
11967
|
+
prompts?: boolean;
|
|
11039
11968
|
};
|
|
11040
11969
|
header?: never;
|
|
11041
11970
|
path: {
|
|
@@ -11260,7 +12189,7 @@ export interface operations {
|
|
|
11260
12189
|
[name: string]: unknown;
|
|
11261
12190
|
};
|
|
11262
12191
|
content: {
|
|
11263
|
-
"application/json": components["schemas"]["
|
|
12192
|
+
"application/json": components["schemas"]["Error"];
|
|
11264
12193
|
};
|
|
11265
12194
|
};
|
|
11266
12195
|
/** @description Too Many Requests */
|
|
@@ -11353,6 +12282,15 @@ export interface operations {
|
|
|
11353
12282
|
"application/json": components["schemas"]["NegotiationError"];
|
|
11354
12283
|
};
|
|
11355
12284
|
};
|
|
12285
|
+
/** @description Sandbox is being reset or deleted */
|
|
12286
|
+
409: {
|
|
12287
|
+
headers: {
|
|
12288
|
+
[name: string]: unknown;
|
|
12289
|
+
};
|
|
12290
|
+
content: {
|
|
12291
|
+
"application/json": components["schemas"]["Error"];
|
|
12292
|
+
};
|
|
12293
|
+
};
|
|
11356
12294
|
/** @description Conversation is terminal */
|
|
11357
12295
|
410: {
|
|
11358
12296
|
headers: {
|
|
@@ -11708,7 +12646,7 @@ export interface operations {
|
|
|
11708
12646
|
[name: string]: unknown;
|
|
11709
12647
|
};
|
|
11710
12648
|
content: {
|
|
11711
|
-
"text/event-stream":
|
|
12649
|
+
"text/event-stream": components["schemas"]["StreamLogEvent"];
|
|
11712
12650
|
};
|
|
11713
12651
|
};
|
|
11714
12652
|
/** @description Unauthorized */
|
|
@@ -12262,7 +13200,7 @@ export interface operations {
|
|
|
12262
13200
|
[name: string]: unknown;
|
|
12263
13201
|
};
|
|
12264
13202
|
content: {
|
|
12265
|
-
"application/json": components["schemas"]["
|
|
13203
|
+
"application/json": components["schemas"]["Error"];
|
|
12266
13204
|
};
|
|
12267
13205
|
};
|
|
12268
13206
|
/** @description Too Many Requests */
|
|
@@ -12410,7 +13348,7 @@ export interface operations {
|
|
|
12410
13348
|
[name: string]: unknown;
|
|
12411
13349
|
};
|
|
12412
13350
|
content: {
|
|
12413
|
-
"application/json": components["schemas"]["
|
|
13351
|
+
"application/json": components["schemas"]["Error"];
|
|
12414
13352
|
};
|
|
12415
13353
|
};
|
|
12416
13354
|
/** @description Too Many Requests */
|
|
@@ -12625,7 +13563,7 @@ export interface operations {
|
|
|
12625
13563
|
[name: string]: unknown;
|
|
12626
13564
|
};
|
|
12627
13565
|
content: {
|
|
12628
|
-
"application/json": components["schemas"]["
|
|
13566
|
+
"application/json": components["schemas"]["Error"];
|
|
12629
13567
|
};
|
|
12630
13568
|
};
|
|
12631
13569
|
/** @description Too Many Requests */
|
|
@@ -12780,7 +13718,7 @@ export interface operations {
|
|
|
12780
13718
|
[name: string]: unknown;
|
|
12781
13719
|
};
|
|
12782
13720
|
content: {
|
|
12783
|
-
"application/json": components["schemas"]["
|
|
13721
|
+
"application/json": components["schemas"]["Error"];
|
|
12784
13722
|
};
|
|
12785
13723
|
};
|
|
12786
13724
|
/** @description Too Many Requests */
|
|
@@ -12817,7 +13755,7 @@ export interface operations {
|
|
|
12817
13755
|
[name: string]: unknown;
|
|
12818
13756
|
};
|
|
12819
13757
|
content: {
|
|
12820
|
-
"text/event-stream":
|
|
13758
|
+
"text/event-stream": components["schemas"]["StreamLogEvent"] | components["schemas"]["StreamSignal"];
|
|
12821
13759
|
};
|
|
12822
13760
|
};
|
|
12823
13761
|
/** @description Unauthorized */
|
|
@@ -13905,6 +14843,15 @@ export interface operations {
|
|
|
13905
14843
|
"application/json": components["schemas"]["Error"];
|
|
13906
14844
|
};
|
|
13907
14845
|
};
|
|
14846
|
+
/** @description Another teardown of this sandbox is running */
|
|
14847
|
+
503: {
|
|
14848
|
+
headers: {
|
|
14849
|
+
[name: string]: unknown;
|
|
14850
|
+
};
|
|
14851
|
+
content: {
|
|
14852
|
+
"application/json": components["schemas"]["Error"];
|
|
14853
|
+
};
|
|
14854
|
+
};
|
|
13908
14855
|
};
|
|
13909
14856
|
};
|
|
13910
14857
|
"FountainWeb.SandboxFilesController.diff": {
|
|
@@ -13999,7 +14946,7 @@ export interface operations {
|
|
|
13999
14946
|
"application/json": components["schemas"]["Error"];
|
|
14000
14947
|
};
|
|
14001
14948
|
};
|
|
14002
|
-
/** @description Sandbox provider unreachable */
|
|
14949
|
+
/** @description Sandbox provider unreachable, or the sandbox is being parked or destroyed (`sandbox_unavailable`, with `Retry-After`) */
|
|
14003
14950
|
503: {
|
|
14004
14951
|
headers: {
|
|
14005
14952
|
[name: string]: unknown;
|
|
@@ -14098,7 +15045,7 @@ export interface operations {
|
|
|
14098
15045
|
"application/json": components["schemas"]["Error"];
|
|
14099
15046
|
};
|
|
14100
15047
|
};
|
|
14101
|
-
/** @description Sandbox provider unreachable */
|
|
15048
|
+
/** @description Sandbox provider unreachable, or the sandbox is being parked or destroyed (`sandbox_unavailable`, with `Retry-After`) */
|
|
14102
15049
|
503: {
|
|
14103
15050
|
headers: {
|
|
14104
15051
|
[name: string]: unknown;
|
|
@@ -14195,7 +15142,7 @@ export interface operations {
|
|
|
14195
15142
|
"application/json": components["schemas"]["Error"];
|
|
14196
15143
|
};
|
|
14197
15144
|
};
|
|
14198
|
-
/** @description Sandbox provider unreachable */
|
|
15145
|
+
/** @description Sandbox provider unreachable, or the sandbox is being parked or destroyed (`sandbox_unavailable`, with `Retry-After`) */
|
|
14199
15146
|
503: {
|
|
14200
15147
|
headers: {
|
|
14201
15148
|
[name: string]: unknown;
|
|
@@ -14294,7 +15241,7 @@ export interface operations {
|
|
|
14294
15241
|
"application/json": components["schemas"]["Error"];
|
|
14295
15242
|
};
|
|
14296
15243
|
};
|
|
14297
|
-
/** @description Sandbox provider unreachable */
|
|
15244
|
+
/** @description Sandbox provider unreachable, or the sandbox is being parked or destroyed (`sandbox_unavailable`, with `Retry-After`) */
|
|
14298
15245
|
503: {
|
|
14299
15246
|
headers: {
|
|
14300
15247
|
[name: string]: unknown;
|
|
@@ -15167,7 +16114,7 @@ export interface operations {
|
|
|
15167
16114
|
[name: string]: unknown;
|
|
15168
16115
|
};
|
|
15169
16116
|
content: {
|
|
15170
|
-
"text/event-stream":
|
|
16117
|
+
"text/event-stream": components["schemas"]["StreamLogEvent"] | components["schemas"]["StreamSignal"];
|
|
15171
16118
|
};
|
|
15172
16119
|
};
|
|
15173
16120
|
/** @description Unauthorized */
|
|
@@ -15556,6 +16503,24 @@ export interface operations {
|
|
|
15556
16503
|
"application/json": components["schemas"]["NegotiationError"];
|
|
15557
16504
|
};
|
|
15558
16505
|
};
|
|
16506
|
+
/** @description The computer is being reset or deleted */
|
|
16507
|
+
409: {
|
|
16508
|
+
headers: {
|
|
16509
|
+
[name: string]: unknown;
|
|
16510
|
+
};
|
|
16511
|
+
content: {
|
|
16512
|
+
"application/json": components["schemas"]["Error"];
|
|
16513
|
+
};
|
|
16514
|
+
};
|
|
16515
|
+
/** @description The computer no longer matches the agent */
|
|
16516
|
+
422: {
|
|
16517
|
+
headers: {
|
|
16518
|
+
[name: string]: unknown;
|
|
16519
|
+
};
|
|
16520
|
+
content: {
|
|
16521
|
+
"application/json": components["schemas"]["Error"];
|
|
16522
|
+
};
|
|
16523
|
+
};
|
|
15559
16524
|
/** @description Too Many Requests */
|
|
15560
16525
|
429: {
|
|
15561
16526
|
headers: {
|
|
@@ -15565,7 +16530,7 @@ export interface operations {
|
|
|
15565
16530
|
"application/json": components["schemas"]["Error"];
|
|
15566
16531
|
};
|
|
15567
16532
|
};
|
|
15568
|
-
/** @description The computer is still starting */
|
|
16533
|
+
/** @description The computer is still starting, or an operation holds it */
|
|
15569
16534
|
503: {
|
|
15570
16535
|
headers: {
|
|
15571
16536
|
[name: string]: unknown;
|
|
@@ -15652,7 +16617,7 @@ export interface operations {
|
|
|
15652
16617
|
[name: string]: unknown;
|
|
15653
16618
|
};
|
|
15654
16619
|
content: {
|
|
15655
|
-
"application/json": components["schemas"]["
|
|
16620
|
+
"application/json": components["schemas"]["Error"];
|
|
15656
16621
|
};
|
|
15657
16622
|
};
|
|
15658
16623
|
/** @description Too Many Requests */
|
|
@@ -16210,7 +17175,7 @@ export interface operations {
|
|
|
16210
17175
|
[name: string]: unknown;
|
|
16211
17176
|
};
|
|
16212
17177
|
content: {
|
|
16213
|
-
"application/json": components["schemas"]["
|
|
17178
|
+
"application/json": components["schemas"]["Error"];
|
|
16214
17179
|
};
|
|
16215
17180
|
};
|
|
16216
17181
|
/** @description Too Many Requests */
|
|
@@ -16358,7 +17323,7 @@ export interface operations {
|
|
|
16358
17323
|
[name: string]: unknown;
|
|
16359
17324
|
};
|
|
16360
17325
|
content: {
|
|
16361
|
-
"application/json": components["schemas"]["
|
|
17326
|
+
"application/json": components["schemas"]["Error"];
|
|
16362
17327
|
};
|
|
16363
17328
|
};
|
|
16364
17329
|
/** @description Too Many Requests */
|
|
@@ -16513,7 +17478,7 @@ export interface operations {
|
|
|
16513
17478
|
[name: string]: unknown;
|
|
16514
17479
|
};
|
|
16515
17480
|
content: {
|
|
16516
|
-
"application/json": components["schemas"]["
|
|
17481
|
+
"application/json": components["schemas"]["Error"];
|
|
16517
17482
|
};
|
|
16518
17483
|
};
|
|
16519
17484
|
/** @description Too Many Requests */
|
|
@@ -16661,7 +17626,7 @@ export interface operations {
|
|
|
16661
17626
|
[name: string]: unknown;
|
|
16662
17627
|
};
|
|
16663
17628
|
content: {
|
|
16664
|
-
"application/json": components["schemas"]["
|
|
17629
|
+
"application/json": components["schemas"]["Error"];
|
|
16665
17630
|
};
|
|
16666
17631
|
};
|
|
16667
17632
|
/** @description Too Many Requests */
|
|
@@ -16811,7 +17776,7 @@ export interface operations {
|
|
|
16811
17776
|
[name: string]: unknown;
|
|
16812
17777
|
};
|
|
16813
17778
|
content: {
|
|
16814
|
-
"application/json": components["schemas"]["
|
|
17779
|
+
"application/json": components["schemas"]["Error"];
|
|
16815
17780
|
};
|
|
16816
17781
|
};
|
|
16817
17782
|
/** @description Too Many Requests */
|