# Type Alias $OpenApiTs

$OpenApiTs: {
/apps/hub/get/{id}: {
get: {
req: {
id: number;
};
res: {
200: {
app: {
summary: string;
value: unknown;
};
};
};
};
};
/apps/hub/list: {
get: {
res: {
200: {
apps?: {
app_id: number;
approved: boolean;
apps: string[];
id: number;
summary: string;
votes: number;
}[];
};
};
};
};
/auth/login: {
post: {
req: {
requestBody: Login;
};
res: {
200: string;
};
};
};
/auth/logout: {
post: {
res: {
200: string;
};
};
};
/concurrency_groups/list: {
get: {
res: {
200: ConcurrencyGroup[];
};
};
};
/concurrency_groups/prune/{concurrency_id}: {
delete: {
req: {
concurrencyId: string;
};
res: {
200: unknown;
};
};
};
/concurrency_groups/{id}/key: {
get: {
req: {
id: string;
};
res: {
200: string;
};
};
};
/configs/get/{name}: {
get: {
req: {
name: string;
};
res: {
200: unknown;
};
};
};
/configs/list_worker_groups: {
get: {
res: {
200: {
config: unknown;
name: string;
}[];
};
};
};
/configs/update/{name}: {
delete: {
req: {
name: string;
};
res: {
200: string;
};
};
post: {
req: {
name: string;
requestBody: unknown;
};
res: {
200: string;
};
};
};
/ee_license: {
get: {
res: {
200: string;
};
};
};
/embeddings/query_hub_scripts: {
get: {
req: {
app?: string;
kind?: string;
limit?: number;
text: string;
};
res: {
200: {
app: string;
ask_id: number;
id: number;
kind: HubScriptKind;
score: number;
summary: string;
version_id: number;
}[];
};
};
};
/flows/hub/get/{id}: {
get: {
req: {
id: number;
};
res: {
200: {
flow?: OpenFlow;
};
};
};
};
/flows/hub/list: {
get: {
res: {
200: {
flows?: {
approved: boolean;
apps: string[];
flow_id: number;
id: number;
summary: string;
votes: number;
}[];
};
};
};
};
/groups/adduser/{name}: {
post: {
req: {
name: string;
requestBody: {
email: string;
};
};
res: {
200: string;
};
};
};
/groups/create: {
post: {
req: {
requestBody: {
name: string;
summary?: string;
};
};
res: {
200: string;
};
};
};
/groups/delete/{name}: {
delete: {
req: {
name: string;
};
res: {
200: string;
};
};
};
/groups/get/{name}: {
get: {
req: {
name: string;
};
res: {
200: InstanceGroup;
};
};
};
/groups/list: {
get: {
res: {
200: InstanceGroup[];
};
};
};
/groups/removeuser/{name}: {
post: {
req: {
name: string;
requestBody: {
email: string;
};
};
res: {
200: string;
};
};
};
/groups/update/{name}: {
post: {
req: {
name: string;
requestBody: {
new_summary: string;
};
};
res: {
200: string;
};
};
};
/integrations/hub/list: {
get: {
req: {
kind?: string;
};
res: {
200: {
name: string;
}[];
};
};
};
/jobs/db_clock: {
get: {
res: {
200: number;
};
};
};
/oauth/connect_callback/{client_name}: {
post: {
req: {
clientName: string;
requestBody: {
code: string;
state: string;
};
};
res: {
200: TokenResponse;
};
};
};
/oauth/get_connect/{client}: {
get: {
req: {
client: string;
};
res: {
200: {
extra_params?: {
[key: string]: unknown;
};
scopes?: string[];
};
};
};
};
/oauth/list_connects: {
get: {
res: {
200: string[];
};
};
};
/oauth/list_logins: {
get: {
res: {
200: {
oauth: string[];
saml?: string;
};
};
};
};
/oauth/login_callback/{client_name}: {
post: {
req: {
clientName: string;
requestBody: {
code?: string;
state?: string;
};
};
res: {
200: string;
};
};
};
/openapi.yaml: {
get: {
res: {
200: string;
};
};
};
/saml/test_metadata: {
post: {
req: {
requestBody: string;
};
res: {
200: string;
};
};
};
/schedules/preview: {
post: {
req: {
requestBody: {
schedule: string;
timezone: string;
};
};
res: {
200: string[];
};
};
};
/scripts/hub/get/{path}: {
get: {
req: {
path: string;
};
res: {
200: string;
};
};
};
/scripts/hub/get_full/{path}: {
get: {
req: {
path: string;
};
res: {
200: {
content: string;
language: string;
lockfile?: string;
schema?: unknown;
summary?: string;
};
};
};
};
/scripts/hub/top: {
get: {
req: {
app?: string;
kind?: string;
limit?: number;
};
res: {
200: {
asks?: {
app: string;
ask_id: number;
id: number;
kind: HubScriptKind;
summary: string;
version_id: number;
views: number;
votes: number;
}[];
};
};
};
};
/scripts_u/tokened_raw/{workspace}/{token}/{path}: {
get: {
req: {
path: string;
token: string;
workspace: string;
};
res: {
200: string;
};
};
};
/settings/global/{key}: {
get: {
req: {
key: string;
};
res: {
200: unknown;
};
};
post: {
req: {
key: string;
requestBody: {
value?: unknown;
};
};
res: {
200: string;
};
};
};
/settings/latest_key_renewal_attempt: {
get: {
res: {
200: {
attempted_at: string;
result: string;
} | null;
};
};
};
/settings/local: {
get: {
res: {
200: unknown;
};
};
};
/settings/renew_license_key: {
post: {
res: {
200: string;
};
};
};
/settings/send_stats: {
post: {
res: {
200: string;
};
};
};
/settings/test_license_key: {
post: {
req: {
requestBody: {
license_key: string;
};
};
res: {
200: string;
};
};
};
/settings/test_object_storage_config: {
post: {
req: {
requestBody: {
[key: string]: unknown;
};
};
res: {
200: string;
};
};
};
/settings/test_smtp: {
post: {
req: {
requestBody: {
smtp: {
from: string;
host: string;
password: string;
port: number;
tls_implicit: boolean;
username: string;
};
to: string;
};
};
res: {
200: string;
};
};
};
/uptodate: {
get: {
res: {
200: string;
};
};
};
/users/accept_invite: {
post: {
req: {
requestBody: {
username?: string;
workspace_id: string;
};
};
res: {
200: string;
};
};
};
/users/all_runnables: {
get: {
res: {
200: {
description?: string;
endpoint_async: string;
endpoint_openai_sync: string;
endpoint_sync: string;
kind: string;
summary: string;
workspace: string;
};
};
};
};
/users/create: {
post: {
req: {
requestBody: {
company?: string;
email: string;
name?: string;
password: string;
super_admin: boolean;
};
};
res: {
201: string;
};
};
};
/users/decline_invite: {
post: {
req: {
requestBody: {
workspace_id: string;
};
};
res: {
200: string;
};
};
};
/users/delete/{email}: {
delete: {
req: {
email: string;
};
res: {
200: string;
};
};
};
/users/email: {
get: {
res: {
200: string;
};
};
};
/users/exists/{email}: {
get: {
req: {
email: string;
};
res: {
200: boolean;
};
};
};
/users/leave_instance: {
post: {
res: {
200: string;
};
};
};
/users/list_as_super_admin: {
get: {
req: {
page?: number;
perPage?: number;
};
res: {
200: GlobalUserInfo[];
};
};
};
/users/list_invites: {
get: {
res: {
200: WorkspaceInvite[];
};
};
};
/users/refresh_token: {
get: {
res: {
200: string;
};
};
};
/users/rename/{email}: {
post: {
req: {
email: string;
requestBody: {
new_username: string;
};
};
res: {
200: string;
};
};
};
/users/setpassword: {
post: {
req: {
requestBody: {
password: string;
};
};
res: {
200: string;
};
};
};
/users/tokens/create: {
post: {
req: {
requestBody: NewToken;
};
res: {
201: string;
};
};
};
/users/tokens/delete/{token_prefix}: {
delete: {
req: {
tokenPrefix: string;
};
res: {
200: string;
};
};
};
/users/tokens/impersonate: {
post: {
req: {
requestBody: NewTokenImpersonate;
};
res: {
201: string;
};
};
};
/users/tokens/list: {
get: {
req: {
excludeEphemeral?: boolean;
};
res: {
200: TruncatedToken[];
};
};
};
/users/tutorial_progress: {
get: {
res: {
200: {
progress?: number;
};
};
};
post: {
req: {
requestBody: {
progress?: number;
};
};
res: {
200: string;
};
};
};
/users/update/{email}: {
post: {
req: {
email: string;
requestBody: {
is_super_admin?: boolean;
};
};
res: {
200: string;
};
};
};
/users/usage: {
get: {
res: {
200: number;
};
};
};
/users/username_info/{email}: {
get: {
req: {
email: string;
};
res: {
200: {
username: string;
workspace_usernames: {
username: string;
workspace_id: string;
}[];
};
};
};
};
/users/whoami: {
get: {
res: {
200: GlobalUserInfo;
};
};
};
/version: {
get: {
res: {
200: string;
};
};
};
/w/{workspace}/acls/add/{kind}/{path}: {
post: {
req: {
kind:
| "script"
| "group_"
| "resource"
| "schedule"
| "variable"
| "flow"
| "folder"
| "app"
| "raw_app";
path: string;
requestBody: {
owner: string;
write?: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/acls/get/{kind}/{path}: {
get: {
req: {
kind:
| "script"
| "group_"
| "resource"
| "schedule"
| "variable"
| "flow"
| "folder"
| "app"
| "raw_app";
path: string;
workspace: string;
};
res: {
200: {
[key: string]: boolean;
};
};
};
};
/w/{workspace}/acls/remove/{kind}/{path}: {
post: {
req: {
kind:
| "script"
| "group_"
| "resource"
| "schedule"
| "variable"
| "flow"
| "folder"
| "app"
| "raw_app";
path: string;
requestBody: {
owner: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/apps/create: {
post: {
req: {
requestBody: {
deployment_message?: string;
draft_only?: boolean;
path: string;
policy: Policy;
summary: string;
value: unknown;
};
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/apps/delete/{path}: {
delete: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/apps/exists/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/apps/get/draft/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: AppWithLastVersionWDraft;
};
};
};
/w/{workspace}/apps/get/p/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: AppWithLastVersion;
};
};
};
/w/{workspace}/apps/get/v/{id}: {
get: {
req: {
id: number;
workspace: string;
};
res: {
200: AppWithLastVersion;
};
};
};
/w/{workspace}/apps/get_data/{version}/{path}: {
get: {
req: {
path: string;
version: number;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/apps/history/p/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: AppHistory[];
};
};
};
/w/{workspace}/apps/history_update/a/{id}/v/{version}: {
post: {
req: {
id: number;
requestBody: {
deployment_msg?: string;
};
version: number;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/apps/list: {
get: {
req: {
createdBy?: string;
orderDesc?: boolean;
page?: number;
pathExact?: string;
pathStart?: string;
perPage?: number;
starredOnly?: boolean;
workspace: string;
};
res: {
200: ListableApp[];
};
};
};
/w/{workspace}/apps/list_search: {
get: {
req: {
workspace: string;
};
res: {
200: {
path: string;
value: unknown;
}[];
};
};
};
/w/{workspace}/apps/secret_of/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/apps/update/{path}: {
post: {
req: {
path: string;
requestBody: {
deployment_message?: string;
path?: string;
policy?: Policy;
summary?: string;
value?: unknown;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/apps_u/execute_component/{path}: {
post: {
req: {
path: string;
requestBody: {
args: unknown;
component: string;
force_viewer_allow_user_resources?: string[];
force_viewer_one_of_fields?: {
[key: string]: unknown;
};
force_viewer_static_fields?: {
[key: string]: unknown;
};
path?: string;
raw_code?: {
cache_ttl?: number;
content: string;
language: string;
lock?: string;
path?: string;
};
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/apps_u/public_app/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: AppWithLastVersion;
};
};
};
/w/{workspace}/apps_u/public_resource/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/audit/get/{id}: {
get: {
req: {
id: number;
workspace: string;
};
res: {
200: AuditLog;
};
};
};
/w/{workspace}/audit/list: {
get: {
req: {
actionKind?:
| "Create"
| "Update"
| "Delete"
| "Execute";
after?: string;
before?: string;
operation?: string;
page?: number;
perPage?: number;
resource?: string;
username?: string;
workspace: string;
};
res: {
200: AuditLog[];
};
};
};
/w/{workspace}/capture/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: unknown;
404: unknown;
};
};
put: {
req: {
path: string;
workspace: string;
};
res: {
201: unknown;
};
};
};
/w/{workspace}/capture_u/{path}: {
post: {
req: {
path: string;
workspace: string;
};
res: {
204: void;
};
};
};
/w/{workspace}/concurrency_groups/list_jobs: {
get: {
req: {
allWorkspaces?: boolean;
args?: string;
concurrencyKey?: string;
createdBy?: string;
createdOrStartedAfter?: string;
createdOrStartedBefore?: string;
hasNullParent?: boolean;
isFlowStep?: boolean;
isNotSchedule?: boolean;
isSkipped?: boolean;
jobKinds?: string;
label?: string;
page?: number;
parentJob?: string;
perPage?: number;
result?: string;
rowLimit?: number;
running?: boolean;
schedulePath?: string;
scheduledForBeforeNow?: boolean;
scriptHash?: string;
scriptPathExact?: string;
scriptPathStart?: string;
startedAfter?: string;
startedBefore?: string;
success?: boolean;
tag?: string;
workspace: string;
};
res: {
200: ExtendedJobs;
};
};
};
/w/{workspace}/drafts/create: {
post: {
req: {
requestBody: {
path: string;
typ: "flow" | "script" | "app";
value?: unknown;
};
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/drafts/delete/{kind}/{path}: {
delete: {
req: {
kind: "script" | "flow" | "app";
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/embeddings/query_resource_types: {
get: {
req: {
limit?: number;
text: string;
workspace: string;
};
res: {
200: {
name: string;
schema?: unknown;
score: number;
}[];
};
};
};
/w/{workspace}/favorites/star: {
post: {
req: {
requestBody?: {
favorite_kind?:
| "flow"
| "app"
| "script"
| "raw_app";
path?: string;
};
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/favorites/unstar: {
post: {
req: {
requestBody?: {
favorite_kind?:
| "flow"
| "app"
| "script"
| "raw_app";
path?: string;
};
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/flows/archive/{path}: {
post: {
req: {
path: string;
requestBody: {
archived?: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/flows/create: {
post: {
req: {
requestBody: OpenFlowWPath & {
deployment_message?: string;
draft_only?: boolean;
};
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/flows/delete/{path}: {
delete: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/flows/exists/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/flows/get/draft/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: Flow & {
draft?: Flow;
};
};
};
};
/w/{workspace}/flows/get/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: Flow;
};
};
};
/w/{workspace}/flows/input_history/p/{path}: {
get: {
req: {
page?: number;
path: string;
perPage?: number;
workspace: string;
};
res: {
200: Input[];
};
};
};
/w/{workspace}/flows/list: {
get: {
req: {
createdBy?: string;
orderDesc?: boolean;
page?: number;
pathExact?: string;
pathStart?: string;
perPage?: number;
showArchived?: boolean;
starredOnly?: boolean;
workspace: string;
};
res: {
200: (Flow & {
draft_only?: boolean;
has_draft?: boolean;
})[];
};
};
};
/w/{workspace}/flows/list_paths: {
get: {
req: {
workspace: string;
};
res: {
200: string[];
};
};
};
/w/{workspace}/flows/list_search: {
get: {
req: {
workspace: string;
};
res: {
200: {
path: string;
value: unknown;
}[];
};
};
};
/w/{workspace}/flows/toggle_workspace_error_handler/{path}: {
post: {
req: {
path: string;
requestBody: {
muted?: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/flows/update/{path}: {
post: {
req: {
path: string;
requestBody: OpenFlowWPath & {
deployment_message?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/folders/addowner/{name}: {
post: {
req: {
name: string;
requestBody: {
owner: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/folders/create: {
post: {
req: {
requestBody: {
extra_perms?: unknown;
name: string;
owners?: string[];
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/folders/delete/{name}: {
delete: {
req: {
name: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/folders/get/{name}: {
get: {
req: {
name: string;
workspace: string;
};
res: {
200: Folder;
};
};
};
/w/{workspace}/folders/getusage/{name}: {
get: {
req: {
name: string;
workspace: string;
};
res: {
200: {
apps: number;
flows: number;
resources: number;
schedules: number;
scripts: number;
variables: number;
};
};
};
};
/w/{workspace}/folders/list: {
get: {
req: {
page?: number;
perPage?: number;
workspace: string;
};
res: {
200: Folder[];
};
};
};
/w/{workspace}/folders/listnames: {
get: {
req: {
onlyMemberOf?: boolean;
workspace: string;
};
res: {
200: string[];
};
};
};
/w/{workspace}/folders/removeowner/{name}: {
post: {
req: {
name: string;
requestBody: {
owner: string;
write?: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/folders/update/{name}: {
post: {
req: {
name: string;
requestBody: {
extra_perms?: unknown;
owners?: string[];
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/groups/adduser/{name}: {
post: {
req: {
name: string;
requestBody: {
username?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/groups/create: {
post: {
req: {
requestBody: {
name: string;
summary?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/groups/delete/{name}: {
delete: {
req: {
name: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/groups/get/{name}: {
get: {
req: {
name: string;
workspace: string;
};
res: {
200: Group;
};
};
};
/w/{workspace}/groups/list: {
get: {
req: {
page?: number;
perPage?: number;
workspace: string;
};
res: {
200: Group[];
};
};
};
/w/{workspace}/groups/listnames: {
get: {
req: {
onlyMemberOf?: boolean;
workspace: string;
};
res: {
200: string[];
};
};
};
/w/{workspace}/groups/removeuser/{name}: {
post: {
req: {
name: string;
requestBody: {
username?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/groups/update/{name}: {
post: {
req: {
name: string;
requestBody: {
summary?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/inputs/create: {
post: {
req: {
requestBody: CreateInput;
runnableId?: string;
runnableType?: RunnableType;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/inputs/delete/{input}: {
post: {
req: {
input: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/inputs/history: {
get: {
req: {
page?: number;
perPage?: number;
runnableId?: string;
runnableType?: RunnableType;
workspace: string;
};
res: {
200: Input[];
};
};
};
/w/{workspace}/inputs/list: {
get: {
req: {
page?: number;
perPage?: number;
runnableId?: string;
runnableType?: RunnableType;
workspace: string;
};
res: {
200: Input[];
};
};
};
/w/{workspace}/inputs/update: {
post: {
req: {
requestBody: UpdateInput;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/inputs/{jobOrInputId}/args: {
get: {
req: {
jobOrInputId: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/job_helpers/delete_s3_file: {
delete: {
req: {
fileKey: string;
storage?: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/job_helpers/download_s3_file: {
get: {
req: {
fileKey: string;
resourceType?: string;
s3ResourcePath?: string;
storage?: string;
workspace: string;
};
res: {
200: Blob | File;
};
};
};
/w/{workspace}/job_helpers/download_s3_parquet_file_as_csv: {
get: {
req: {
fileKey: string;
resourceType?: string;
s3ResourcePath?: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/job_helpers/duckdb_connection_settings: {
post: {
req: {
requestBody: {
s3_resource?: S3Resource;
};
workspace: string;
};
res: {
200: {
connection_settings_str?: string;
};
};
};
};
/w/{workspace}/job_helpers/list_stored_files: {
get: {
req: {
marker?: string;
maxKeys: number;
prefix?: string;
storage?: string;
workspace: string;
};
res: {
200: {
next_marker?: string;
restricted_access?: boolean;
windmill_large_files: WindmillLargeFile[];
};
};
};
};
/w/{workspace}/job_helpers/load_csv_preview/{path}: {
get: {
req: {
limit?: number;
offset?: number;
path: string;
searchCol?: string;
searchTerm?: string;
sortCol?: string;
sortDesc?: boolean;
storage?: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/job_helpers/load_file_metadata: {
get: {
req: {
fileKey: string;
storage?: string;
workspace: string;
};
res: {
200: WindmillFileMetadata;
};
};
};
/w/{workspace}/job_helpers/load_file_preview: {
get: {
req: {
csvHasHeader?: boolean;
csvSeparator?: string;
fileKey: string;
fileMimeType?: string;
fileSizeInBytes?: number;
readBytesFrom?: number;
readBytesLength?: number;
storage?: string;
workspace: string;
};
res: {
200: WindmillFilePreview;
};
};
};
/w/{workspace}/job_helpers/load_parquet_preview/{path}: {
get: {
req: {
limit?: number;
offset?: number;
path: string;
searchCol?: string;
searchTerm?: string;
sortCol?: string;
sortDesc?: boolean;
storage?: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/job_helpers/move_s3_file: {
get: {
req: {
destFileKey: string;
srcFileKey: string;
storage?: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/job_helpers/polars_connection_settings: {
post: {
req: {
requestBody: {
s3_resource?: S3Resource;
};
workspace: string;
};
res: {
200: {
cache_regions: boolean;
client_kwargs: PolarsClientKwargs;
endpoint_url: string;
key?: string;
secret?: string;
use_ssl: boolean;
};
};
};
};
/w/{workspace}/job_helpers/test_connection: {
get: {
req: {
storage?: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/job_helpers/upload_s3_file: {
post: {
req: {
fileExtension?: string;
fileKey?: string;
requestBody: Blob | File;
resourceType?: string;
s3ResourcePath?: string;
storage?: string;
workspace: string;
};
res: {
200: {
file_key: string;
};
};
};
};
/w/{workspace}/job_helpers/v2/duckdb_connection_settings: {
post: {
req: {
requestBody: {
s3_resource_path?: string;
};
workspace: string;
};
res: {
200: {
connection_settings_str: string;
};
};
};
};
/w/{workspace}/job_helpers/v2/polars_connection_settings: {
post: {
req: {
requestBody: {
s3_resource_path?: string;
};
workspace: string;
};
res: {
200: {
s3fs_args: {
cache_regions: boolean;
client_kwargs: PolarsClientKwargs;
endpoint_url: string;
key?: string;
secret?: string;
use_ssl: boolean;
};
storage_options: {
aws_access_key_id?: string;
aws_allow_http: string;
aws_endpoint_url: string;
aws_region: string;
aws_secret_access_key?: string;
};
};
};
};
};
/w/{workspace}/job_helpers/v2/s3_resource_info: {
post: {
req: {
requestBody: {
s3_resource_path?: string;
};
workspace: string;
};
res: {
200: S3Resource;
};
};
};
/w/{workspace}/job_metrics/get/{id}: {
post: {
req: {
id: string;
requestBody: {
from_timestamp?: string;
timeseries_max_datapoints?: number;
to_timestamp?: string;
};
workspace: string;
};
res: {
200: {
metrics_metadata?: MetricMetadata[];
scalar_metrics?: ScalarMetric[];
timeseries_metrics?: TimeseriesMetric[];
};
};
};
};
/w/{workspace}/jobs/completed/count: {
get: {
req: {
workspace: string;
};
res: {
200: {
database_length: number;
};
};
};
};
/w/{workspace}/jobs/completed/delete/{id}: {
post: {
req: {
id: string;
workspace: string;
};
res: {
200: CompletedJob;
};
};
};
/w/{workspace}/jobs/completed/list: {
get: {
req: {
args?: string;
createdBy?: string;
hasNullParent?: boolean;
isFlowStep?: boolean;
isNotSchedule?: boolean;
isSkipped?: boolean;
jobKinds?: string;
label?: string;
orderDesc?: boolean;
page?: number;
parentJob?: string;
perPage?: number;
result?: string;
schedulePath?: string;
scriptHash?: string;
scriptPathExact?: string;
scriptPathStart?: string;
startedAfter?: string;
startedBefore?: string;
success?: boolean;
tag?: string;
workspace: string;
};
res: {
200: CompletedJob[];
};
};
};
/w/{workspace}/jobs/flow/resume/{id}: {
post: {
req: {
id: string;
requestBody: {
[key: string]: unknown;
};
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/jobs/flow/user_states/{id}/{key}: {
get: {
req: {
id: string;
key: string;
workspace: string;
};
res: {
200: unknown;
};
};
post: {
req: {
id: string;
key: string;
requestBody: unknown;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/jobs/job_signature/{id}/{resume_id}: {
get: {
req: {
approver?: string;
id: string;
resumeId: number;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/jobs/list: {
get: {
req: {
allWorkspaces?: boolean;
args?: string;
createdBy?: string;
createdOrStartedAfter?: string;
createdOrStartedBefore?: string;
hasNullParent?: boolean;
isFlowStep?: boolean;
isNotSchedule?: boolean;
isSkipped?: boolean;
jobKinds?: string;
label?: string;
page?: number;
parentJob?: string;
perPage?: number;
result?: string;
running?: boolean;
schedulePath?: string;
scheduledForBeforeNow?: boolean;
scriptHash?: string;
scriptPathExact?: string;
scriptPathStart?: string;
startedAfter?: string;
startedBefore?: string;
success?: boolean;
tag?: string;
workspace: string;
};
res: {
200: Job[];
};
};
};
/w/{workspace}/jobs/openai_sync/f/{path}: {
post: {
req: {
includeHeader?: string;
jobId?: string;
path: string;
queueLimit?: string;
requestBody: ScriptArgs;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/jobs/openai_sync/p/{path}: {
post: {
req: {
includeHeader?: string;
jobId?: string;
parentJob?: string;
path: string;
queueLimit?: string;
requestBody: ScriptArgs;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/jobs/queue/cancel_all: {
post: {
req: {
workspace: string;
};
res: {
200: string[];
};
};
};
/w/{workspace}/jobs/queue/count: {
get: {
req: {
allWorkspaces?: boolean;
workspace: string;
};
res: {
200: {
database_length: number;
};
};
};
};
/w/{workspace}/jobs/queue/list: {
get: {
req: {
allWorkspaces?: boolean;
args?: string;
createdBy?: string;
isNotSchedule?: boolean;
jobKinds?: string;
orderDesc?: boolean;
page?: number;
parentJob?: string;
perPage?: number;
result?: string;
running?: boolean;
schedulePath?: string;
scheduledForBeforeNow?: boolean;
scriptHash?: string;
scriptPathExact?: string;
scriptPathStart?: string;
startedAfter?: string;
startedBefore?: string;
success?: boolean;
suspended?: boolean;
tag?: string;
workspace: string;
};
res: {
200: QueuedJob[];
};
};
};
/w/{workspace}/jobs/restart/f/{id}/from/{step_id}/{branch_or_iteration_n}: {
post: {
req: {
branchOrIterationN: number;
id: string;
includeHeader?: string;
invisibleToOwner?: boolean;
jobId?: string;
parentJob?: string;
requestBody: ScriptArgs;
scheduledFor?: string;
scheduledInSecs?: number;
stepId: string;
tag?: string;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/jobs/result_by_id/{flow_job_id}/{node_id}: {
get: {
req: {
flowJobId: string;
nodeId: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/jobs/resume_urls/{id}/{resume_id}: {
get: {
req: {
approver?: string;
id: string;
resumeId: number;
workspace: string;
};
res: {
200: {
approvalPage: string;
cancel: string;
resume: string;
};
};
};
};
/w/{workspace}/jobs/run/dependencies: {
post: {
req: {
requestBody: {
entrypoint: string;
raw_scripts: RawScriptForDependencies[];
};
workspace: string;
};
res: {
201: {
lock: string;
};
};
};
};
/w/{workspace}/jobs/run/f/{path}: {
post: {
req: {
includeHeader?: string;
invisibleToOwner?: boolean;
jobId?: string;
parentJob?: string;
path: string;
requestBody: ScriptArgs;
scheduledFor?: string;
scheduledInSecs?: number;
tag?: string;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/jobs/run/h/{hash}: {
post: {
req: {
cacheTtl?: string;
hash: string;
includeHeader?: string;
invisibleToOwner?: boolean;
jobId?: string;
parentJob?: string;
requestBody: {
[key: string]: unknown;
};
scheduledFor?: string;
scheduledInSecs?: number;
tag?: string;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/jobs/run/p/{path}: {
post: {
req: {
cacheTtl?: string;
invisibleToOwner?: boolean;
jobId?: string;
parentJob?: string;
path: string;
requestBody: ScriptArgs;
scheduledFor?: string;
scheduledInSecs?: number;
tag?: string;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/jobs/run/preview: {
post: {
req: {
includeHeader?: string;
invisibleToOwner?: boolean;
jobId?: string;
requestBody: Preview;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/jobs/run/preview_flow: {
post: {
req: {
includeHeader?: string;
invisibleToOwner?: boolean;
jobId?: string;
requestBody: FlowPreview;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/jobs/run_wait_result/f/{path}: {
post: {
req: {
includeHeader?: string;
jobId?: string;
path: string;
queueLimit?: string;
requestBody: ScriptArgs;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/jobs/run_wait_result/p/{path}: {
get: {
req: {
cacheTtl?: string;
includeHeader?: string;
jobId?: string;
parentJob?: string;
path: string;
payload?: string;
queueLimit?: string;
tag?: string;
workspace: string;
};
res: {
200: unknown;
};
};
post: {
req: {
cacheTtl?: string;
includeHeader?: string;
jobId?: string;
parentJob?: string;
path: string;
queueLimit?: string;
requestBody: ScriptArgs;
tag?: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/jobs/workflow_as_code/{job_id}/{entrypoint}: {
post: {
req: {
entrypoint: string;
jobId: string;
requestBody: WorkflowTask;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/jobs_u/cancel/{id}/{resume_id}/{signature}: {
get: {
req: {
approver?: string;
id: string;
resumeId: number;
signature: string;
workspace: string;
};
res: {
201: string;
};
};
post: {
req: {
approver?: string;
id: string;
requestBody: {
[key: string]: unknown;
};
resumeId: number;
signature: string;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/jobs_u/completed/get/{id}: {
get: {
req: {
id: string;
workspace: string;
};
res: {
200: CompletedJob;
};
};
};
/w/{workspace}/jobs_u/completed/get_result/{id}: {
get: {
req: {
id: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/jobs_u/completed/get_result_maybe/{id}: {
get: {
req: {
getStarted?: boolean;
id: string;
workspace: string;
};
res: {
200: {
completed: boolean;
result: unknown;
started?: boolean;
success?: boolean;
};
};
};
};
/w/{workspace}/jobs_u/get/{id}: {
get: {
req: {
id: string;
noLogs?: boolean;
workspace: string;
};
res: {
200: Job;
};
};
};
/w/{workspace}/jobs_u/get_flow/{id}/{resume_id}/{signature}: {
get: {
req: {
approver?: string;
id: string;
resumeId: number;
signature: string;
workspace: string;
};
res: {
200: {
approvers: {
approver: string;
resume_id: number;
}[];
job: Job;
};
};
};
};
/w/{workspace}/jobs_u/get_flow_debug_info/{id}: {
get: {
req: {
id: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/jobs_u/get_log_file/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/jobs_u/get_logs/{id}: {
get: {
req: {
id: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/jobs_u/get_root_job_id/{id}: {
get: {
req: {
id: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/jobs_u/getupdate/{id}: {
get: {
req: {
id: string;
logOffset?: number;
running?: boolean;
workspace: string;
};
res: {
200: {
completed?: boolean;
flow_status?: WorkflowStatusRecord;
log_offset?: number;
mem_peak?: number;
new_logs?: string;
running?: boolean;
};
};
};
};
/w/{workspace}/jobs_u/queue/cancel/{id}: {
post: {
req: {
id: string;
requestBody: {
reason?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/jobs_u/queue/cancel_persistent/{path}: {
post: {
req: {
path: string;
requestBody: {
reason?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/jobs_u/queue/force_cancel/{id}: {
post: {
req: {
id: string;
requestBody: {
reason?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/jobs_u/resume/{id}/{resume_id}/{signature}: {
get: {
req: {
approver?: string;
id: string;
payload?: string;
resumeId: number;
signature: string;
workspace: string;
};
res: {
201: string;
};
};
post: {
req: {
approver?: string;
id: string;
requestBody: {
[key: string]: unknown;
};
resumeId: number;
signature: string;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/oauth/connect_slack_callback: {
post: {
req: {
requestBody: {
code: string;
state: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/oauth/create_account: {
post: {
req: {
requestBody: {
client: string;
expires_in: number;
refresh_token?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/oauth/disconnect/{id}: {
post: {
req: {
id: number;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/oauth/disconnect_slack: {
post: {
req: {
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/oauth/refresh_token/{id}: {
post: {
req: {
id: number;
requestBody: {
path: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/oidc/token/{audience}: {
post: {
req: {
audience: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/raw_apps/create: {
post: {
req: {
requestBody: {
path: string;
summary: string;
value: string;
};
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/raw_apps/delete/{path}: {
delete: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/raw_apps/exists/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/raw_apps/list: {
get: {
req: {
createdBy?: string;
orderDesc?: boolean;
page?: number;
pathExact?: string;
pathStart?: string;
perPage?: number;
starredOnly?: boolean;
workspace: string;
};
res: {
200: ListableRawApp[];
};
};
};
/w/{workspace}/raw_apps/update/{path}: {
post: {
req: {
path: string;
requestBody: {
path?: string;
summary?: string;
value?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/resources/create: {
post: {
req: {
requestBody: CreateResource;
updateIfExists?: boolean;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/resources/delete/{path}: {
delete: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/resources/exists/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/resources/get/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: Resource;
};
};
};
/w/{workspace}/resources/get_value/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/resources/get_value_interpolated/{path}: {
get: {
req: {
jobId?: string;
path: string;
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/resources/list: {
get: {
req: {
page?: number;
perPage?: number;
resourceType?: string;
resourceTypeExclude?: string;
workspace: string;
};
res: {
200: ListableResource[];
};
};
};
/w/{workspace}/resources/list_names/{name}: {
get: {
req: {
name: string;
workspace: string;
};
res: {
200: {
name: string;
path: string;
}[];
};
};
};
/w/{workspace}/resources/list_search: {
get: {
req: {
workspace: string;
};
res: {
200: {
path: string;
value: unknown;
}[];
};
};
};
/w/{workspace}/resources/type/create: {
post: {
req: {
requestBody: ResourceType;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/resources/type/delete/{path}: {
delete: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/resources/type/exists/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/resources/type/get/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: ResourceType;
};
};
};
/w/{workspace}/resources/type/list: {
get: {
req: {
workspace: string;
};
res: {
200: ResourceType[];
};
};
};
/w/{workspace}/resources/type/listnames: {
get: {
req: {
workspace: string;
};
res: {
200: string[];
};
};
};
/w/{workspace}/resources/type/update/{path}: {
post: {
req: {
path: string;
requestBody: EditResourceType;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/resources/update/{path}: {
post: {
req: {
path: string;
requestBody: EditResource;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/resources/update_value/{path}: {
post: {
req: {
path: string;
requestBody: {
value?: unknown;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/schedules/create: {
post: {
req: {
requestBody: NewSchedule;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/schedules/delete/{path}: {
delete: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/schedules/exists/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/schedules/get/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: Schedule;
};
};
};
/w/{workspace}/schedules/list: {
get: {
req: {
args?: string;
isFlow?: boolean;
page?: number;
path?: string;
perPage?: number;
workspace: string;
};
res: {
200: Schedule[];
};
};
};
/w/{workspace}/schedules/list_with_jobs: {
get: {
req: {
page?: number;
perPage?: number;
workspace: string;
};
res: {
200: ScheduleWJobs[];
};
};
};
/w/{workspace}/schedules/setdefaulthandler: {
post: {
req: {
requestBody: {
extra_args?: {
[key: string]: unknown;
};
handler_type: "error" | "recovery";
number_of_occurence?: number;
number_of_occurence_exact?: boolean;
override_existing: boolean;
path?: string;
workspace_handler_muted?: boolean;
};
workspace: string;
};
res: {
201: unknown;
};
};
};
/w/{workspace}/schedules/setenabled/{path}: {
post: {
req: {
path: string;
requestBody: {
enabled: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/schedules/update/{path}: {
post: {
req: {
path: string;
requestBody: EditSchedule;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/scripts/archive/h/{hash}: {
post: {
req: {
hash: string;
workspace: string;
};
res: {
200: Script;
};
};
};
/w/{workspace}/scripts/archive/p/{path}: {
post: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/scripts/create: {
post: {
req: {
requestBody: NewScript;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/scripts/delete/h/{hash}: {
post: {
req: {
hash: string;
workspace: string;
};
res: {
200: Script;
};
};
};
/w/{workspace}/scripts/delete/p/{path}: {
post: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/scripts/deployment_status/h/{hash}: {
get: {
req: {
hash: string;
workspace: string;
};
res: {
200: {
lock?: string;
lock_error_logs?: string;
};
};
};
};
/w/{workspace}/scripts/exists/p/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/scripts/get/draft/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: NewScriptWithDraft;
};
};
};
/w/{workspace}/scripts/get/h/{hash}: {
get: {
req: {
hash: string;
workspace: string;
};
res: {
200: Script;
};
};
};
/w/{workspace}/scripts/get/p/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: Script;
};
};
};
/w/{workspace}/scripts/history/p/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: ScriptHistory[];
};
};
};
/w/{workspace}/scripts/history_update/h/{hash}/p/{path}: {
post: {
req: {
hash: string;
path: string;
requestBody: {
deployment_msg?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/scripts/list: {
get: {
req: {
createdBy?: string;
firstParentHash?: string;
hideWithoutMain?: boolean;
isTemplate?: boolean;
kinds?: string;
lastParentHash?: string;
orderDesc?: boolean;
page?: number;
parentHash?: string;
pathExact?: string;
pathStart?: string;
perPage?: number;
showArchived?: boolean;
starredOnly?: boolean;
workspace: string;
};
res: {
200: Script[];
};
};
};
/w/{workspace}/scripts/list_paths: {
get: {
req: {
workspace: string;
};
res: {
200: string[];
};
};
};
/w/{workspace}/scripts/list_search: {
get: {
req: {
workspace: string;
};
res: {
200: {
content: string;
path: string;
}[];
};
};
};
/w/{workspace}/scripts/raw/h/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/scripts/raw/p/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/scripts/toggle_workspace_error_handler/p/{path}: {
post: {
req: {
path: string;
requestBody: {
muted?: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/users/delete/{username}: {
delete: {
req: {
username: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/users/is_owner/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/users/list: {
get: {
req: {
workspace: string;
};
res: {
200: User[];
};
};
};
/w/{workspace}/users/list_usage: {
get: {
req: {
workspace: string;
};
res: {
200: UserUsage[];
};
};
};
/w/{workspace}/users/list_usernames: {
get: {
req: {
workspace: string;
};
res: {
200: string[];
};
};
};
/w/{workspace}/users/update/{username}: {
post: {
req: {
requestBody: EditWorkspaceUser;
username: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/users/username_to_email/{username}: {
get: {
req: {
username: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/users/whoami: {
get: {
req: {
workspace: string;
};
res: {
200: User;
};
};
};
/w/{workspace}/users/whois/{username}: {
get: {
req: {
username: string;
workspace: string;
};
res: {
200: User;
};
};
};
/w/{workspace}/users/{username}: {
get: {
req: {
username: string;
workspace: string;
};
res: {
200: User;
};
};
};
/w/{workspace}/variables/create: {
post: {
req: {
alreadyEncrypted?: boolean;
requestBody: CreateVariable;
workspace: string;
};
res: {
201: string;
};
};
};
/w/{workspace}/variables/delete/{path}: {
delete: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/variables/encrypt: {
post: {
req: {
requestBody: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/variables/exists/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/variables/get/{path}: {
get: {
req: {
decryptSecret?: boolean;
includeEncrypted?: boolean;
path: string;
workspace: string;
};
res: {
200: ListableVariable;
};
};
};
/w/{workspace}/variables/get_value/{path}: {
get: {
req: {
path: string;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/variables/list: {
get: {
req: {
workspace: string;
};
res: {
200: ListableVariable[];
};
};
};
/w/{workspace}/variables/list_contextual: {
get: {
req: {
workspace: string;
};
res: {
200: ContextualVariable[];
};
};
};
/w/{workspace}/variables/update/{path}: {
post: {
req: {
alreadyEncrypted?: boolean;
path: string;
requestBody: EditVariable;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/add_user: {
post: {
req: {
requestBody: {
email: string;
is_admin: boolean;
operator: boolean;
username?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/archive: {
post: {
req: {
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/change_workspace_id: {
post: {
req: {
requestBody?: {
new_id?: string;
new_name?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/change_workspace_name: {
post: {
req: {
requestBody?: {
new_name?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/default_app: {
get: {
req: {
workspace: string;
};
res: {
200: {
default_app_path?: string;
};
};
};
};
/w/{workspace}/workspaces/default_scripts: {
get: {
req: {
workspace: string;
};
res: {
200: WorkspaceDefaultScripts;
};
};
post: {
req: {
requestBody?: WorkspaceDefaultScripts;
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/delete_invite: {
post: {
req: {
requestBody: {
email: string;
is_admin: boolean;
operator: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/edit_auto_invite: {
post: {
req: {
requestBody: {
auto_add?: boolean;
invite_all?: boolean;
operator?: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/edit_copilot_config: {
post: {
req: {
requestBody: {
code_completion_enabled: boolean;
openai_resource_path?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/edit_default_app: {
post: {
req: {
requestBody: {
default_app_path?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/edit_deploy_to: {
post: {
req: {
requestBody: {
deploy_to?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/edit_error_handler: {
post: {
req: {
requestBody: {
error_handler?: string;
error_handler_extra_args?: ScriptArgs;
error_handler_muted_on_cancel?: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/edit_git_sync_config: {
post: {
req: {
requestBody: {
git_sync_settings?: WorkspaceGitSyncSettings;
};
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/workspaces/edit_large_file_storage_config: {
post: {
req: {
requestBody: {
large_file_storage?: LargeFileStorage;
};
workspace: string;
};
res: {
200: unknown;
};
};
};
/w/{workspace}/workspaces/edit_slack_command: {
post: {
req: {
requestBody: {
slack_command_script?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/edit_webhook: {
post: {
req: {
requestBody: {
webhook?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/encryption_key: {
get: {
req: {
workspace: string;
};
res: {
200: {
key: string;
};
};
};
post: {
req: {
requestBody: {
new_key: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/get_copilot_info: {
get: {
req: {
workspace: string;
};
res: {
200: {
code_completion_enabled: boolean;
exists_openai_resource_path: boolean;
};
};
};
};
/w/{workspace}/workspaces/get_deploy_to: {
get: {
req: {
workspace: string;
};
res: {
200: {
deploy_to?: string;
};
};
};
};
/w/{workspace}/workspaces/get_large_file_storage_config: {
get: {
req: {
workspace: string;
};
res: {
200: LargeFileStorage;
};
};
};
/w/{workspace}/workspaces/get_settings: {
get: {
req: {
workspace: string;
};
res: {
200: {
auto_add?: boolean;
auto_invite_domain?: string;
auto_invite_operator?: boolean;
automatic_billing: boolean;
code_completion_enabled: boolean;
customer_id?: string;
default_app?: string;
default_scripts?: WorkspaceDefaultScripts;
deploy_to?: string;
error_handler?: string;
error_handler_extra_args?: ScriptArgs;
error_handler_muted_on_cancel: boolean;
git_sync?: WorkspaceGitSyncSettings;
large_file_storage?: LargeFileStorage;
openai_resource_path?: string;
plan?: string;
slack_command_script?: string;
slack_name?: string;
slack_team_id?: string;
webhook?: string;
workspace_id?: string;
};
};
};
};
/w/{workspace}/workspaces/get_workspace_name: {
get: {
req: {
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/invite_user: {
post: {
req: {
requestBody: {
email: string;
is_admin: boolean;
operator: boolean;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/is_premium: {
get: {
req: {
workspace: string;
};
res: {
200: boolean;
};
};
};
/w/{workspace}/workspaces/leave: {
post: {
req: {
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/list_pending_invites: {
get: {
req: {
workspace: string;
};
res: {
200: WorkspaceInvite[];
};
};
};
/w/{workspace}/workspaces/premium_info: {
get: {
req: {
workspace: string;
};
res: {
200: {
automatic_billing: boolean;
premium: boolean;
seats?: number;
usage?: number;
};
};
};
};
/w/{workspace}/workspaces/run_slack_message_test_job: {
post: {
req: {
requestBody: {
channel?: string;
hub_script_path?: string;
test_msg?: string;
};
workspace: string;
};
res: {
200: {
job_uuid?: string;
};
};
};
};
/w/{workspace}/workspaces/set_automatic_billing: {
post: {
req: {
requestBody: {
automatic_billing: boolean;
seats?: number;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/set_environment_variable: {
post: {
req: {
requestBody: {
name: string;
value?: string;
};
workspace: string;
};
res: {
200: string;
};
};
};
/w/{workspace}/workspaces/usage: {
get: {
req: {
workspace: string;
};
res: {
200: number;
};
};
};
/workers/custom_tags: {
get: {
res: {
200: string[];
};
};
};
/workers/exists_worker_with_tag: {
get: {
req: {
tag: string;
};
res: {
200: boolean;
};
};
};
/workers/get_default_tags: {
get: {
res: {
200: string[];
};
};
};
/workers/is_default_tags_per_workspace: {
get: {
res: {
200: boolean;
};
};
};
/workers/list: {
get: {
req: {
page?: number;
perPage?: number;
pingSince?: number;
};
res: {
200: WorkerPing[];
};
};
};
/workers/queue_metrics: {
get: {
res: {
200: {
id: string;
values: {
created_at: string;
value: number;
}[];
}[];
};
};
};
/workspaces/allowed_domain_auto_invite: {
get: {
res: {
200: boolean;
};
};
};
/workspaces/create: {
post: {
req: {
requestBody: CreateWorkspace;
};
res: {
201: string;
};
};
};
/workspaces/delete/{workspace}: {
delete: {
req: {
workspace: string;
};
res: {
200: string;
};
};
};
/workspaces/exists: {
post: {
req: {
requestBody: {
id: string;
};
};
res: {
200: boolean;
};
};
};
/workspaces/exists_username: {
post: {
req: {
requestBody: {
id: string;
username: string;
};
};
res: {
200: boolean;
};
};
};
/workspaces/list: {
get: {
res: {
200: Workspace[];
};
};
};
/workspaces/list_as_superadmin: {
get: {
req: {
page?: number;
perPage?: number;
};
res: {
200: Workspace[];
};
};
};
/workspaces/unarchive/{workspace}: {
post: {
req: {
workspace: string;
};
res: {
200: string;
};
};
};
/workspaces/users: {
get: {
res: {
200: UserWorkspaceList;
};
};
};
}

#### Type declaration

- ##### /apps/hub/get/{id}: {
  get: {
  req: {
  id: number;
  };
  res: {
  200: {
  app: {
  summary: string;
  value: unknown;
  };
  };
  };
  };
  }

  - ##### get: {
    req: {
    id: number;
    };
    res: {
    200: {
    app: {
    summary: string;
    value: unknown;
    };
    };
    };
    }

    - ##### req: {
      id: number;
      }

      - ##### id: number

    - ##### res: {
      200: {
      app: {
      summary: string;
      value: unknown;
      };
      };
      }

      - ##### 200: {
        app: {
        summary: string;
        value: unknown;
        };
        }

        app

        - ##### app: {
          summary: string;
          value: unknown;
          }

          - ##### summary: string

          - ##### value: unknown

- ##### /apps/hub/list: {
  get: {
  res: {
  200: {
  apps?: {
  app_id: number;
  approved: boolean;
  apps: string[];
  id: number;
  summary: string;
  votes: number;
  }[];
  };
  };
  };
  }

  - ##### get: {
    res: {
    200: {
    apps?: {
    app_id: number;
    approved: boolean;
    apps: string[];
    id: number;
    summary: string;
    votes: number;
    }[];
    };
    };
    }

    - ##### res: {
      200: {
      apps?: {
      app_id: number;
      approved: boolean;
      apps: string[];
      id: number;
      summary: string;
      votes: number;
      }[];
      };
      }

      - ##### 200: {
        apps?: {
        app_id: number;
        approved: boolean;
        apps: string[];
        id: number;
        summary: string;
        votes: number;
        }[];
        }

        hub apps list

        - ##### `Optional` apps?: {
          app_id: number;
          approved: boolean;
          apps: string[];
          id: number;
          summary: string;
          votes: number;
          }[]

- ##### /auth/login: {
  post: {
  req: {
  requestBody: Login;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: Login;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: Login;
      }

      - ##### requestBody: Login

        credentials

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        Successfully authenticated. The session ID is returned in a cookie named `token` and as plaintext response. Preferred method of authorization is through the bearer token. The cookie is only for browser convenience.

- ##### /auth/logout: {
  post: {
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        clear cookies and clear token (if applicable)

- ##### /concurrency_groups/list: {
  get: {
  res: {
  200: ConcurrencyGroup[];
  };
  };
  }

  - ##### get: {
    res: {
    200: ConcurrencyGroup[];
    };
    }

    - ##### res: {
      200: ConcurrencyGroup[];
      }

      - ##### 200: ConcurrencyGroup[]

        all concurrency groups

- ##### /concurrency_groups/prune/{concurrency_id}: {
  delete: {
  req: {
  concurrencyId: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### delete: {
    req: {
    concurrencyId: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      concurrencyId: string;
      }

      - ##### concurrencyId: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        concurrency group removed

- ##### /concurrency_groups/{id}/key: {
  get: {
  req: {
  id: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    id: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      id: string;
      }

      - ##### id: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        concurrency key for given job

- ##### /configs/get/{name}: {
  get: {
  req: {
  name: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    name: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      name: string;
      }

      - ##### name: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        a config

- ##### /configs/list_worker_groups: {
  get: {
  res: {
  200: {
  config: unknown;
  name: string;
  }[];
  };
  };
  }

  - ##### get: {
    res: {
    200: {
    config: unknown;
    name: string;
    }[];
    };
    }

    - ##### res: {
      200: {
      config: unknown;
      name: string;
      }[];
      }

      - ##### 200: {
        config: unknown;
        name: string;
        }[]

        a list of worker group configs

- ##### /configs/update/{name}: {
  delete: {
  req: {
  name: string;
  };
  res: {
  200: string;
  };
  };
  post: {
  req: {
  name: string;
  requestBody: unknown;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    name: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      }

      - ##### name: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        Delete config

  - ##### post: {
    req: {
    name: string;
    requestBody: unknown;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: unknown;
      }

      - ##### name: string

      - ##### requestBody: unknown

        worker group

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        Update a worker group

- ##### /ee_license: {
  get: {
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        get license id (empty if not ee)

- ##### /embeddings/query_hub_scripts: {
  get: {
  req: {
  app?: string;
  kind?: string;
  limit?: number;
  text: string;
  };
  res: {
  200: {
  app: string;
  ask_id: number;
  id: number;
  kind: HubScriptKind;
  score: number;
  summary: string;
  version_id: number;
  }[];
  };
  };
  }

  - ##### get: {
    req: {
    app?: string;
    kind?: string;
    limit?: number;
    text: string;
    };
    res: {
    200: {
    app: string;
    ask_id: number;
    id: number;
    kind: HubScriptKind;
    score: number;
    summary: string;
    version_id: number;
    }[];
    };
    }

    - ##### req: {
      app?: string;
      kind?: string;
      limit?: number;
      text: string;
      }

      - ##### `Optional` app?: string

        query scripts app

      - ##### `Optional` kind?: string

        query scripts kind

      - ##### `Optional` limit?: number

        query limit

      - ##### text: string

        query text

    - ##### res: {
      200: {
      app: string;
      ask_id: number;
      id: number;
      kind: HubScriptKind;
      score: number;
      summary: string;
      version_id: number;
      }[];
      }

      - ##### 200: {
        app: string;
        ask_id: number;
        id: number;
        kind: HubScriptKind;
        score: number;
        summary: string;
        version_id: number;
        }[]

        script details

- ##### /flows/hub/get/{id}: {
  get: {
  req: {
  id: number;
  };
  res: {
  200: {
  flow?: OpenFlow;
  };
  };
  };
  }

  - ##### get: {
    req: {
    id: number;
    };
    res: {
    200: {
    flow?: OpenFlow;
    };
    };
    }

    - ##### req: {
      id: number;
      }

      - ##### id: number

    - ##### res: {
      200: {
      flow?: OpenFlow;
      };
      }

      - ##### 200: {
        flow?: OpenFlow;
        }

        flow

        - ##### `Optional` flow?: OpenFlow

- ##### /flows/hub/list: {
  get: {
  res: {
  200: {
  flows?: {
  approved: boolean;
  apps: string[];
  flow_id: number;
  id: number;
  summary: string;
  votes: number;
  }[];
  };
  };
  };
  }

  - ##### get: {
    res: {
    200: {
    flows?: {
    approved: boolean;
    apps: string[];
    flow_id: number;
    id: number;
    summary: string;
    votes: number;
    }[];
    };
    };
    }

    - ##### res: {
      200: {
      flows?: {
      approved: boolean;
      apps: string[];
      flow_id: number;
      id: number;
      summary: string;
      votes: number;
      }[];
      };
      }

      - ##### 200: {
        flows?: {
        approved: boolean;
        apps: string[];
        flow_id: number;
        id: number;
        summary: string;
        votes: number;
        }[];
        }

        hub flows list

        - ##### `Optional` flows?: {
          approved: boolean;
          apps: string[];
          flow_id: number;
          id: number;
          summary: string;
          votes: number;
          }[]

- ##### /groups/adduser/{name}: {
  post: {
  req: {
  name: string;
  requestBody: {
  email: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    name: string;
    requestBody: {
    email: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: {
      email: string;
      };
      }

      - ##### name: string

      - ##### requestBody: {
        email: string;
        }

        user to add to instance group

        - ##### email: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        user added to instance group

- ##### /groups/create: {
  post: {
  req: {
  requestBody: {
  name: string;
  summary?: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    name: string;
    summary?: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      name: string;
      summary?: string;
      };
      }

      - ##### requestBody: {
        name: string;
        summary?: string;
        }

        create instance group

        - ##### name: string

        - ##### `Optional` summary?: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        instance group created

- ##### /groups/delete/{name}: {
  delete: {
  req: {
  name: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    name: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      }

      - ##### name: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        instance group deleted

- ##### /groups/get/{name}: {
  get: {
  req: {
  name: string;
  };
  res: {
  200: InstanceGroup;
  };
  };
  }

  - ##### get: {
    req: {
    name: string;
    };
    res: {
    200: InstanceGroup;
    };
    }

    - ##### req: {
      name: string;
      }

      - ##### name: string

    - ##### res: {
      200: InstanceGroup;
      }

      - ##### 200: InstanceGroup

        instance group

- ##### /groups/list: {
  get: {
  res: {
  200: InstanceGroup[];
  };
  };
  }

  - ##### get: {
    res: {
    200: InstanceGroup[];
    };
    }

    - ##### res: {
      200: InstanceGroup[];
      }

      - ##### 200: InstanceGroup[]

        instance group list

- ##### /groups/removeuser/{name}: {
  post: {
  req: {
  name: string;
  requestBody: {
  email: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    name: string;
    requestBody: {
    email: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: {
      email: string;
      };
      }

      - ##### name: string

      - ##### requestBody: {
        email: string;
        }

        user to remove from instance group

        - ##### email: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        user removed from instance group

- ##### /groups/update/{name}: {
  post: {
  req: {
  name: string;
  requestBody: {
  new_summary: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    name: string;
    requestBody: {
    new_summary: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: {
      new_summary: string;
      };
      }

      - ##### name: string

      - ##### requestBody: {
        new_summary: string;
        }

        update instance group

        - ##### new_summary: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        instance group updated

- ##### /integrations/hub/list: {
  get: {
  req: {
  kind?: string;
  };
  res: {
  200: {
  name: string;
  }[];
  };
  };
  }

  - ##### get: {
    req: {
    kind?: string;
    };
    res: {
    200: {
    name: string;
    }[];
    };
    }

    - ##### req: {
      kind?: string;
      }

      - ##### `Optional` kind?: string

        query integrations kind

    - ##### res: {
      200: {
      name: string;
      }[];
      }

      - ##### 200: {
        name: string;
        }[]

        integrations details

- ##### /jobs/db_clock: {
  get: {
  res: {
  200: number;
  };
  };
  }

  - ##### get: {
    res: {
    200: number;
    };
    }

    - ##### res: {
      200: number;
      }

      - ##### 200: number

        the timestamp of the db that can be used to compute the drift

- ##### /oauth/connect_callback/{client_name}: {
  post: {
  req: {
  clientName: string;
  requestBody: {
  code: string;
  state: string;
  };
  };
  res: {
  200: TokenResponse;
  };
  };
  }

  - ##### post: {
    req: {
    clientName: string;
    requestBody: {
    code: string;
    state: string;
    };
    };
    res: {
    200: TokenResponse;
    };
    }

    - ##### req: {
      clientName: string;
      requestBody: {
      code: string;
      state: string;
      };
      }

      - ##### clientName: string

      - ##### requestBody: {
        code: string;
        state: string;
        }

        code endpoint

        - ##### code: string

        - ##### state: string

    - ##### res: {
      200: TokenResponse;
      }

      - ##### 200: TokenResponse

        oauth token

- ##### /oauth/get_connect/{client}: {
  get: {
  req: {
  client: string;
  };
  res: {
  200: {
  extra_params?: {
  [key: string]: unknown;
  };
  scopes?: string[];
  };
  };
  };
  }

  - ##### get: {
    req: {
    client: string;
    };
    res: {
    200: {
    extra_params?: {
    [key: string]: unknown;
    };
    scopes?: string[];
    };
    };
    }

    - ##### req: {
      client: string;
      }

      - ##### client: string

        client name

    - ##### res: {
      200: {
      extra_params?: {
      [key: string]: unknown;
      };
      scopes?: string[];
      };
      }

      - ##### 200: {
        extra_params?: {
        [key: string]: unknown;
        };
        scopes?: string[];
        }

        get

        - ##### `Optional` extra_params?: {
          [key: string]: unknown;
          }

          - ##### [key: string]: unknown

        - ##### `Optional` scopes?: string[]

- ##### /oauth/list_connects: {
  get: {
  res: {
  200: string[];
  };
  };
  }

  - ##### get: {
    res: {
    200: string[];
    };
    }

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        list of oauth connects clients

- ##### /oauth/list_logins: {
  get: {
  res: {
  200: {
  oauth: string[];
  saml?: string;
  };
  };
  };
  }

  - ##### get: {
    res: {
    200: {
    oauth: string[];
    saml?: string;
    };
    };
    }

    - ##### res: {
      200: {
      oauth: string[];
      saml?: string;
      };
      }

      - ##### 200: {
        oauth: string[];
        saml?: string;
        }

        list of oauth and saml login clients

        - ##### oauth: string[]

        - ##### `Optional` saml?: string

- ##### /oauth/login_callback/{client_name}: {
  post: {
  req: {
  clientName: string;
  requestBody: {
  code?: string;
  state?: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    clientName: string;
    requestBody: {
    code?: string;
    state?: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      clientName: string;
      requestBody: {
      code?: string;
      state?: string;
      };
      }

      - ##### clientName: string

      - ##### requestBody: {
        code?: string;
        state?: string;
        }

        Partially filled script

        - ##### `Optional` code?: string

        - ##### `Optional` state?: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        Successfully authenticated. The session ID is returned in a cookie named `token` and as plaintext response. Preferred method of authorization is through the bearer token. The cookie is only for browser convenience.

- ##### /openapi.yaml: {
  get: {
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        openapi yaml file content

- ##### /saml/test_metadata: {
  post: {
  req: {
  requestBody: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: string;
      }

      - ##### requestBody: string

        test metadata

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /schedules/preview: {
  post: {
  req: {
  requestBody: {
  schedule: string;
  timezone: string;
  };
  };
  res: {
  200: string[];
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    schedule: string;
    timezone: string;
    };
    };
    res: {
    200: string[];
    };
    }

    - ##### req: {
      requestBody: {
      schedule: string;
      timezone: string;
      };
      }

      - ##### requestBody: {
        schedule: string;
        timezone: string;
        }

        schedule

        - ##### schedule: string

        - ##### timezone: string

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        List of 5 estimated upcoming execution events (in UTC)

- ##### /scripts/hub/get/{path}: {
  get: {
  req: {
  path: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      }

      - ##### path: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        script details

- ##### /scripts/hub/get_full/{path}: {
  get: {
  req: {
  path: string;
  };
  res: {
  200: {
  content: string;
  language: string;
  lockfile?: string;
  schema?: unknown;
  summary?: string;
  };
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    };
    res: {
    200: {
    content: string;
    language: string;
    lockfile?: string;
    schema?: unknown;
    summary?: string;
    };
    };
    }

    - ##### req: {
      path: string;
      }

      - ##### path: string

    - ##### res: {
      200: {
      content: string;
      language: string;
      lockfile?: string;
      schema?: unknown;
      summary?: string;
      };
      }

      - ##### 200: {
        content: string;
        language: string;
        lockfile?: string;
        schema?: unknown;
        summary?: string;
        }

        script details

        - ##### content: string

        - ##### language: string

        - ##### `Optional` lockfile?: string

        - ##### `Optional` schema?: unknown

        - ##### `Optional` summary?: string

- ##### /scripts/hub/top: {
  get: {
  req: {
  app?: string;
  kind?: string;
  limit?: number;
  };
  res: {
  200: {
  asks?: {
  app: string;
  ask_id: number;
  id: number;
  kind: HubScriptKind;
  summary: string;
  version_id: number;
  views: number;
  votes: number;
  }[];
  };
  };
  };
  }

  - ##### get: {
    req: {
    app?: string;
    kind?: string;
    limit?: number;
    };
    res: {
    200: {
    asks?: {
    app: string;
    ask_id: number;
    id: number;
    kind: HubScriptKind;
    summary: string;
    version_id: number;
    views: number;
    votes: number;
    }[];
    };
    };
    }

    - ##### req: {
      app?: string;
      kind?: string;
      limit?: number;
      }

      - ##### `Optional` app?: string

        query scripts app

      - ##### `Optional` kind?: string

        query scripts kind

      - ##### `Optional` limit?: number

        query limit

    - ##### res: {
      200: {
      asks?: {
      app: string;
      ask_id: number;
      id: number;
      kind: HubScriptKind;
      summary: string;
      version_id: number;
      views: number;
      votes: number;
      }[];
      };
      }

      - ##### 200: {
        asks?: {
        app: string;
        ask_id: number;
        id: number;
        kind: HubScriptKind;
        summary: string;
        version_id: number;
        views: number;
        votes: number;
        }[];
        }

        hub scripts list

        - ##### `Optional` asks?: {
          app: string;
          ask_id: number;
          id: number;
          kind: HubScriptKind;
          summary: string;
          version_id: number;
          views: number;
          votes: number;
          }[]

- ##### /scripts_u/tokened_raw/{workspace}/{token}/{path}: {
  get: {
  req: {
  path: string;
  token: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    token: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      token: string;
      workspace: string;
      }

      - ##### path: string

      - ##### token: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        script content

- ##### /settings/global/{key}: {
  get: {
  req: {
  key: string;
  };
  res: {
  200: unknown;
  };
  };
  post: {
  req: {
  key: string;
  requestBody: {
  value?: unknown;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    key: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      key: string;
      }

      - ##### key: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        status

  - ##### post: {
    req: {
    key: string;
    requestBody: {
    value?: unknown;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      key: string;
      requestBody: {
      value?: unknown;
      };
      }

      - ##### key: string

      - ##### requestBody: {
        value?: unknown;
        }

        value set

        - ##### `Optional` value?: unknown

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /settings/latest_key_renewal_attempt: {
  get: {
  res: {
  200: {
  attempted_at: string;
  result: string;
  } | null;
  };
  };
  }

  - ##### get: {
    res: {
    200: {
    attempted_at: string;
    result: string;
    } | null;
    };
    }

    - ##### res: {
      200: {
      attempted_at: string;
      result: string;
      } | null;
      }

      - ##### 200: {
        attempted_at: string;
        result: string;
        } | null

        status

- ##### /settings/local: {
  get: {
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    res: {
    200: unknown;
    };
    }

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        status

- ##### /settings/renew_license_key: {
  post: {
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /settings/send_stats: {
  post: {
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /settings/test_license_key: {
  post: {
  req: {
  requestBody: {
  license_key: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    license_key: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      license_key: string;
      };
      }

      - ##### requestBody: {
        license_key: string;
        }

        test license key

        - ##### license_key: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /settings/test_object_storage_config: {
  post: {
  req: {
  requestBody: {
  [key: string]: unknown;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    [key: string]: unknown;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      [key: string]: unknown;
      };
      }

      - ##### requestBody: {
        [key: string]: unknown;
        }

        test object storage config

        - ##### [key: string]: unknown

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /settings/test_smtp: {
  post: {
  req: {
  requestBody: {
  smtp: {
  from: string;
  host: string;
  password: string;
  port: number;
  tls_implicit: boolean;
  username: string;
  };
  to: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    smtp: {
    from: string;
    host: string;
    password: string;
    port: number;
    tls_implicit: boolean;
    username: string;
    };
    to: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      smtp: {
      from: string;
      host: string;
      password: string;
      port: number;
      tls_implicit: boolean;
      username: string;
      };
      to: string;
      };
      }

      - ##### requestBody: {
        smtp: {
        from: string;
        host: string;
        password: string;
        port: number;
        tls_implicit: boolean;
        username: string;
        };
        to: string;
        }

        test smtp payload

        - ##### smtp: {
          from: string;
          host: string;
          password: string;
          port: number;
          tls_implicit: boolean;
          username: string;
          }

          - ##### from: string

          - ##### host: string

          - ##### password: string

          - ##### port: number

          - ##### tls_implicit: boolean

          - ##### username: string

        - ##### to: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /uptodate: {
  get: {
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        is backend up to date

- ##### /users/accept_invite: {
  post: {
  req: {
  requestBody: {
  username?: string;
  workspace_id: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    username?: string;
    workspace_id: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      username?: string;
      workspace_id: string;
      };
      }

      - ##### requestBody: {
        username?: string;
        workspace_id: string;
        }

        accept invite

        - ##### `Optional` username?: string

        - ##### workspace_id: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /users/all_runnables: {
  get: {
  res: {
  200: {
  description?: string;
  endpoint_async: string;
  endpoint_openai_sync: string;
  endpoint_sync: string;
  kind: string;
  summary: string;
  workspace: string;
  };
  };
  };
  }

  - ##### get: {
    res: {
    200: {
    description?: string;
    endpoint_async: string;
    endpoint_openai_sync: string;
    endpoint_sync: string;
    kind: string;
    summary: string;
    workspace: string;
    };
    };
    }

    - ##### res: {
      200: {
      description?: string;
      endpoint_async: string;
      endpoint_openai_sync: string;
      endpoint_sync: string;
      kind: string;
      summary: string;
      workspace: string;
      };
      }

      - ##### 200: {
        description?: string;
        endpoint_async: string;
        endpoint_openai_sync: string;
        endpoint_sync: string;
        kind: string;
        summary: string;
        workspace: string;
        }

        free all runnables

        - ##### `Optional` description?: string

        - ##### endpoint_async: string

        - ##### endpoint_openai_sync: string

        - ##### endpoint_sync: string

        - ##### kind: string

        - ##### summary: string

        - ##### workspace: string

- ##### /users/create: {
  post: {
  req: {
  requestBody: {
  company?: string;
  email: string;
  name?: string;
  password: string;
  super_admin: boolean;
  };
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    company?: string;
    email: string;
    name?: string;
    password: string;
    super_admin: boolean;
    };
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: {
      company?: string;
      email: string;
      name?: string;
      password: string;
      super_admin: boolean;
      };
      }

      - ##### requestBody: {
        company?: string;
        email: string;
        name?: string;
        password: string;
        super_admin: boolean;
        }

        user info

        - ##### `Optional` company?: string

        - ##### email: string

        - ##### `Optional` name?: string

        - ##### password: string

        - ##### super_admin: boolean

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        user created

- ##### /users/decline_invite: {
  post: {
  req: {
  requestBody: {
  workspace_id: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    workspace_id: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      workspace_id: string;
      };
      }

      - ##### requestBody: {
        workspace_id: string;
        }

        decline invite

        - ##### workspace_id: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /users/delete/{email}: {
  delete: {
  req: {
  email: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    email: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      email: string;
      }

      - ##### email: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        user deleted

- ##### /users/email: {
  get: {
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        user email

- ##### /users/exists/{email}: {
  get: {
  req: {
  email: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    email: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      email: string;
      }

      - ##### email: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        user

- ##### /users/leave_instance: {
  post: {
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /users/list_as_super_admin: {
  get: {
  req: {
  page?: number;
  perPage?: number;
  };
  res: {
  200: GlobalUserInfo[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    perPage?: number;
    };
    res: {
    200: GlobalUserInfo[];
    };
    }

    - ##### req: {
      page?: number;
      perPage?: number;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

    - ##### res: {
      200: GlobalUserInfo[];
      }

      - ##### 200: GlobalUserInfo[]

        user

- ##### /users/list_invites: {
  get: {
  res: {
  200: WorkspaceInvite[];
  };
  };
  }

  - ##### get: {
    res: {
    200: WorkspaceInvite[];
    };
    }

    - ##### res: {
      200: WorkspaceInvite[];
      }

      - ##### 200: WorkspaceInvite[]

        list all workspace invites

- ##### /users/refresh_token: {
  get: {
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        free usage

- ##### /users/rename/{email}: {
  post: {
  req: {
  email: string;
  requestBody: {
  new_username: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    email: string;
    requestBody: {
    new_username: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      email: string;
      requestBody: {
      new_username: string;
      };
      }

      - ##### email: string

      - ##### requestBody: {
        new_username: string;
        }

        new username

        - ##### new_username: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        user renamed

- ##### /users/setpassword: {
  post: {
  req: {
  requestBody: {
  password: string;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    password: string;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      password: string;
      };
      }

      - ##### requestBody: {
        password: string;
        }

        set password

        - ##### password: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        password set

- ##### /users/tokens/create: {
  post: {
  req: {
  requestBody: NewToken;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: NewToken;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: NewToken;
      }

      - ##### requestBody: NewToken

        new token

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        token created

- ##### /users/tokens/delete/{token_prefix}: {
  delete: {
  req: {
  tokenPrefix: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    tokenPrefix: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      tokenPrefix: string;
      }

      - ##### tokenPrefix: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        delete token

- ##### /users/tokens/impersonate: {
  post: {
  req: {
  requestBody: NewTokenImpersonate;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: NewTokenImpersonate;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: NewTokenImpersonate;
      }

      - ##### requestBody: NewTokenImpersonate

        new token

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        token created

- ##### /users/tokens/list: {
  get: {
  req: {
  excludeEphemeral?: boolean;
  };
  res: {
  200: TruncatedToken[];
  };
  };
  }

  - ##### get: {
    req: {
    excludeEphemeral?: boolean;
    };
    res: {
    200: TruncatedToken[];
    };
    }

    - ##### req: {
      excludeEphemeral?: boolean;
      }

      - ##### `Optional` excludeEphemeral?: boolean

    - ##### res: {
      200: TruncatedToken[];
      }

      - ##### 200: TruncatedToken[]

        truncated token

- ##### /users/tutorial_progress: {
  get: {
  res: {
  200: {
  progress?: number;
  };
  };
  };
  post: {
  req: {
  requestBody: {
  progress?: number;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    res: {
    200: {
    progress?: number;
    };
    };
    }

    - ##### res: {
      200: {
      progress?: number;
      };
      }

      - ##### 200: {
        progress?: number;
        }

        tutorial progress

        - ##### `Optional` progress?: number

  - ##### post: {
    req: {
    requestBody: {
    progress?: number;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      progress?: number;
      };
      }

      - ##### requestBody: {
        progress?: number;
        }

        progress update

        - ##### `Optional` progress?: number

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        tutorial progress

- ##### /users/update/{email}: {
  post: {
  req: {
  email: string;
  requestBody: {
  is_super_admin?: boolean;
  };
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    email: string;
    requestBody: {
    is_super_admin?: boolean;
    };
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      email: string;
      requestBody: {
      is_super_admin?: boolean;
      };
      }

      - ##### email: string

      - ##### requestBody: {
        is_super_admin?: boolean;
        }

        new user info

        - ##### `Optional` is_super_admin?: boolean

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        user updated

- ##### /users/usage: {
  get: {
  res: {
  200: number;
  };
  };
  }

  - ##### get: {
    res: {
    200: number;
    };
    }

    - ##### res: {
      200: number;
      }

      - ##### 200: number

        free usage

- ##### /users/username_info/{email}: {
  get: {
  req: {
  email: string;
  };
  res: {
  200: {
  username: string;
  workspace_usernames: {
  username: string;
  workspace_id: string;
  }[];
  };
  };
  };
  }

  - ##### get: {
    req: {
    email: string;
    };
    res: {
    200: {
    username: string;
    workspace_usernames: {
    username: string;
    workspace_id: string;
    }[];
    };
    };
    }

    - ##### req: {
      email: string;
      }

      - ##### email: string

    - ##### res: {
      200: {
      username: string;
      workspace_usernames: {
      username: string;
      workspace_id: string;
      }[];
      };
      }

      - ##### 200: {
        username: string;
        workspace_usernames: {
        username: string;
        workspace_id: string;
        }[];
        }

        user renamed

        - ##### username: string

        - ##### workspace_usernames: {
          username: string;
          workspace_id: string;
          }[]

- ##### /users/whoami: {
  get: {
  res: {
  200: GlobalUserInfo;
  };
  };
  }

  - ##### get: {
    res: {
    200: GlobalUserInfo;
    };
    }

    - ##### res: {
      200: GlobalUserInfo;
      }

      - ##### 200: GlobalUserInfo

        user email

- ##### /version: {
  get: {
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    res: {
    200: string;
    };
    }

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        git version of backend

- ##### /w/{workspace}/acls/add/{kind}/{path}: {
  post: {
  req: {
  kind:
  | "script"
  | "group_"
  | "resource"
  | "schedule"
  | "variable"
  | "flow"
  | "folder"
  | "app"
  | "raw_app";
  path: string;
  requestBody: {
  owner: string;
  write?: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    kind:
    | "script"
    | "group_"
    | "resource"
    | "schedule"
    | "variable"
    | "flow"
    | "folder"
    | "app"
    | "raw_app";
    path: string;
    requestBody: {
    owner: string;
    write?: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      kind:
      | "script"
      | "group_"
      | "resource"
      | "schedule"
      | "variable"
      | "flow"
      | "folder"
      | "app"
      | "raw_app";
      path: string;
      requestBody: {
      owner: string;
      write?: boolean;
      };
      workspace: string;
      }

      - ##### kind:
        | "script"
        | "group_"
        | "resource"
        | "schedule"
        | "variable"
        | "flow"
        | "folder"
        | "app"
        | "raw_app"

      - ##### path: string

      - ##### requestBody: {
        owner: string;
        write?: boolean;
        }

        acl to add

        - ##### owner: string

        - ##### `Optional` write?: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        granular acl added

- ##### /w/{workspace}/acls/get/{kind}/{path}: {
  get: {
  req: {
  kind:
  | "script"
  | "group_"
  | "resource"
  | "schedule"
  | "variable"
  | "flow"
  | "folder"
  | "app"
  | "raw_app";
  path: string;
  workspace: string;
  };
  res: {
  200: {
  [key: string]: boolean;
  };
  };
  };
  }

  - ##### get: {
    req: {
    kind:
    | "script"
    | "group_"
    | "resource"
    | "schedule"
    | "variable"
    | "flow"
    | "folder"
    | "app"
    | "raw_app";
    path: string;
    workspace: string;
    };
    res: {
    200: {
    [key: string]: boolean;
    };
    };
    }

    - ##### req: {
      kind:
      | "script"
      | "group_"
      | "resource"
      | "schedule"
      | "variable"
      | "flow"
      | "folder"
      | "app"
      | "raw_app";
      path: string;
      workspace: string;
      }

      - ##### kind:
        | "script"
        | "group_"
        | "resource"
        | "schedule"
        | "variable"
        | "flow"
        | "folder"
        | "app"
        | "raw_app"

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: {
      [key: string]: boolean;
      };
      }

      - ##### 200: {
        [key: string]: boolean;
        }

        acls

        - ##### [key: string]: boolean

- ##### /w/{workspace}/acls/remove/{kind}/{path}: {
  post: {
  req: {
  kind:
  | "script"
  | "group_"
  | "resource"
  | "schedule"
  | "variable"
  | "flow"
  | "folder"
  | "app"
  | "raw_app";
  path: string;
  requestBody: {
  owner: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    kind:
    | "script"
    | "group_"
    | "resource"
    | "schedule"
    | "variable"
    | "flow"
    | "folder"
    | "app"
    | "raw_app";
    path: string;
    requestBody: {
    owner: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      kind:
      | "script"
      | "group_"
      | "resource"
      | "schedule"
      | "variable"
      | "flow"
      | "folder"
      | "app"
      | "raw_app";
      path: string;
      requestBody: {
      owner: string;
      };
      workspace: string;
      }

      - ##### kind:
        | "script"
        | "group_"
        | "resource"
        | "schedule"
        | "variable"
        | "flow"
        | "folder"
        | "app"
        | "raw_app"

      - ##### path: string

      - ##### requestBody: {
        owner: string;
        }

        acl to add

        - ##### owner: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        granular acl removed

- ##### /w/{workspace}/apps/create: {
  post: {
  req: {
  requestBody: {
  deployment_message?: string;
  draft_only?: boolean;
  path: string;
  policy: Policy;
  summary: string;
  value: unknown;
  };
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    deployment_message?: string;
    draft_only?: boolean;
    path: string;
    policy: Policy;
    summary: string;
    value: unknown;
    };
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: {
      deployment_message?: string;
      draft_only?: boolean;
      path: string;
      policy: Policy;
      summary: string;
      value: unknown;
      };
      workspace: string;
      }

      - ##### requestBody: {
        deployment_message?: string;
        draft_only?: boolean;
        path: string;
        policy: Policy;
        summary: string;
        value: unknown;
        }

        new app

        - ##### `Optional` deployment_message?: string

        - ##### `Optional` draft_only?: boolean

        - ##### path: string

        - ##### policy: Policy

        - ##### summary: string

        - ##### value: unknown

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        app created

- ##### /w/{workspace}/apps/delete/{path}: {
  delete: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        app deleted

- ##### /w/{workspace}/apps/exists/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        app exists

- ##### /w/{workspace}/apps/get/draft/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: AppWithLastVersionWDraft;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: AppWithLastVersionWDraft;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: AppWithLastVersionWDraft;
      }

      - ##### 200: AppWithLastVersionWDraft

        app details with draft

- ##### /w/{workspace}/apps/get/p/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: AppWithLastVersion;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: AppWithLastVersion;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: AppWithLastVersion;
      }

      - ##### 200: AppWithLastVersion

        app details

- ##### /w/{workspace}/apps/get/v/{id}: {
  get: {
  req: {
  id: number;
  workspace: string;
  };
  res: {
  200: AppWithLastVersion;
  };
  };
  }

  - ##### get: {
    req: {
    id: number;
    workspace: string;
    };
    res: {
    200: AppWithLastVersion;
    };
    }

    - ##### req: {
      id: number;
      workspace: string;
      }

      - ##### id: number

      - ##### workspace: string

    - ##### res: {
      200: AppWithLastVersion;
      }

      - ##### 200: AppWithLastVersion

        app details

- ##### /w/{workspace}/apps/get_data/{version}/{path}: {
  get: {
  req: {
  path: string;
  version: number;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    version: number;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      version: number;
      workspace: string;
      }

      - ##### path: string

      - ##### version: number

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        app details

- ##### /w/{workspace}/apps/history/p/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: AppHistory[];
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: AppHistory[];
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: AppHistory[];
      }

      - ##### 200: AppHistory[]

        app history

- ##### /w/{workspace}/apps/history_update/a/{id}/v/{version}: {
  post: {
  req: {
  id: number;
  requestBody: {
  deployment_msg?: string;
  };
  version: number;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    id: number;
    requestBody: {
    deployment_msg?: string;
    };
    version: number;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      id: number;
      requestBody: {
      deployment_msg?: string;
      };
      version: number;
      workspace: string;
      }

      - ##### id: number

      - ##### requestBody: {
        deployment_msg?: string;
        }

        App deployment message

        - ##### `Optional` deployment_msg?: string

      - ##### version: number

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        success

- ##### /w/{workspace}/apps/list: {
  get: {
  req: {
  createdBy?: string;
  orderDesc?: boolean;
  page?: number;
  pathExact?: string;
  pathStart?: string;
  perPage?: number;
  starredOnly?: boolean;
  workspace: string;
  };
  res: {
  200: ListableApp[];
  };
  };
  }

  - ##### get: {
    req: {
    createdBy?: string;
    orderDesc?: boolean;
    page?: number;
    pathExact?: string;
    pathStart?: string;
    perPage?: number;
    starredOnly?: boolean;
    workspace: string;
    };
    res: {
    200: ListableApp[];
    };
    }

    - ##### req: {
      createdBy?: string;
      orderDesc?: boolean;
      page?: number;
      pathExact?: string;
      pathStart?: string;
      perPage?: number;
      starredOnly?: boolean;
      workspace: string;
      }

      - ##### `Optional` createdBy?: string

        mask to filter exact matching user creator

      - ##### `Optional` orderDesc?: boolean

        order by desc order (default true)

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` pathExact?: string

        mask to filter exact matching path

      - ##### `Optional` pathStart?: string

        mask to filter matching starting path

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` starredOnly?: boolean

        (default false) show only the starred items

      - ##### workspace: string

    - ##### res: {
      200: ListableApp[];
      }

      - ##### 200: ListableApp[]

        All apps

- ##### /w/{workspace}/apps/list_search: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  path: string;
  value: unknown;
  }[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    path: string;
    value: unknown;
    }[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      path: string;
      value: unknown;
      }[];
      }

      - ##### 200: {
        path: string;
        value: unknown;
        }[]

        app list

- ##### /w/{workspace}/apps/secret_of/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        app secret

- ##### /w/{workspace}/apps/update/{path}: {
  post: {
  req: {
  path: string;
  requestBody: {
  deployment_message?: string;
  path?: string;
  policy?: Policy;
  summary?: string;
  value?: unknown;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: {
    deployment_message?: string;
    path?: string;
    policy?: Policy;
    summary?: string;
    value?: unknown;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: {
      deployment_message?: string;
      path?: string;
      policy?: Policy;
      summary?: string;
      value?: unknown;
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: {
        deployment_message?: string;
        path?: string;
        policy?: Policy;
        summary?: string;
        value?: unknown;
        }

        update app

        - ##### `Optional` deployment_message?: string

        - ##### `Optional` path?: string

        - ##### `Optional` policy?: Policy

        - ##### `Optional` summary?: string

        - ##### `Optional` value?: unknown

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        app updated

- ##### /w/{workspace}/apps_u/execute_component/{path}: {
  post: {
  req: {
  path: string;
  requestBody: {
  args: unknown;
  component: string;
  force_viewer_allow_user_resources?: string[];
  force_viewer_one_of_fields?: {
  [key: string]: unknown;
  };
  force_viewer_static_fields?: {
  [key: string]: unknown;
  };
  path?: string;
  raw_code?: {
  cache_ttl?: number;
  content: string;
  language: string;
  lock?: string;
  path?: string;
  };
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: {
    args: unknown;
    component: string;
    force_viewer_allow_user_resources?: string[];
    force_viewer_one_of_fields?: {
    [key: string]: unknown;
    };
    force_viewer_static_fields?: {
    [key: string]: unknown;
    };
    path?: string;
    raw_code?: {
    cache_ttl?: number;
    content: string;
    language: string;
    lock?: string;
    path?: string;
    };
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: {
      args: unknown;
      component: string;
      force_viewer_allow_user_resources?: string[];
      force_viewer_one_of_fields?: {
      [key: string]: unknown;
      };
      force_viewer_static_fields?: {
      [key: string]: unknown;
      };
      path?: string;
      raw_code?: {
      cache_ttl?: number;
      content: string;
      language: string;
      lock?: string;
      path?: string;
      };
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: {
        args: unknown;
        component: string;
        force_viewer_allow_user_resources?: string[];
        force_viewer_one_of_fields?: {
        [key: string]: unknown;
        };
        force_viewer_static_fields?: {
        [key: string]: unknown;
        };
        path?: string;
        raw_code?: {
        cache_ttl?: number;
        content: string;
        language: string;
        lock?: string;
        path?: string;
        };
        }

        update app

        - ##### args: unknown

        - ##### component: string

        - ##### `Optional` force_viewer_allow_user_resources?: string[]

        - ##### `Optional` force_viewer_one_of_fields?: {
          [key: string]: unknown;
          }

          - ##### [key: string]: unknown

        - ##### `Optional` force_viewer_static_fields?: {
          [key: string]: unknown;
          }

          - ##### [key: string]: unknown

        - ##### `Optional` path?: string

        - ##### `Optional` raw_code?: {
          cache_ttl?: number;
          content: string;
          language: string;
          lock?: string;
          path?: string;
          }

          - ##### `Optional` cache_ttl?: number

          - ##### content: string

          - ##### language: string

          - ##### `Optional` lock?: string

          - ##### `Optional` path?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        job uuid

- ##### /w/{workspace}/apps_u/public_app/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: AppWithLastVersion;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: AppWithLastVersion;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: AppWithLastVersion;
      }

      - ##### 200: AppWithLastVersion

        app details

- ##### /w/{workspace}/apps_u/public_resource/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        resource value

- ##### /w/{workspace}/audit/get/{id}: {
  get: {
  req: {
  id: number;
  workspace: string;
  };
  res: {
  200: AuditLog;
  };
  };
  }

  - ##### get: {
    req: {
    id: number;
    workspace: string;
    };
    res: {
    200: AuditLog;
    };
    }

    - ##### req: {
      id: number;
      workspace: string;
      }

      - ##### id: number

      - ##### workspace: string

    - ##### res: {
      200: AuditLog;
      }

      - ##### 200: AuditLog

        an audit log

- ##### /w/{workspace}/audit/list: {
  get: {
  req: {
  actionKind?:
  | "Create"
  | "Update"
  | "Delete"
  | "Execute";
  after?: string;
  before?: string;
  operation?: string;
  page?: number;
  perPage?: number;
  resource?: string;
  username?: string;
  workspace: string;
  };
  res: {
  200: AuditLog[];
  };
  };
  }

  - ##### get: {
    req: {
    actionKind?:
    | "Create"
    | "Update"
    | "Delete"
    | "Execute";
    after?: string;
    before?: string;
    operation?: string;
    page?: number;
    perPage?: number;
    resource?: string;
    username?: string;
    workspace: string;
    };
    res: {
    200: AuditLog[];
    };
    }

    - ##### req: {
      actionKind?:
      | "Create"
      | "Update"
      | "Delete"
      | "Execute";
      after?: string;
      before?: string;
      operation?: string;
      page?: number;
      perPage?: number;
      resource?: string;
      username?: string;
      workspace: string;
      }

      - ##### `Optional` actionKind?:
        | "Create"
        | "Update"
        | "Delete"
        | "Execute"

        filter on type of operation

      - ##### `Optional` after?: string

        filter on created after (exclusive) timestamp

      - ##### `Optional` before?: string

        filter on created before (exclusive) timestamp

      - ##### `Optional` operation?: string

        filter on exact or prefix name of operation

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` resource?: string

        filter on exact or prefix name of resource

      - ##### `Optional` username?: string

        filter on exact username of user

      - ##### workspace: string

    - ##### res: {
      200: AuditLog[];
      }

      - ##### 200: AuditLog[]

        a list of audit logs

- ##### /w/{workspace}/capture/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: unknown;
  404: unknown;
  };
  };
  put: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  201: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: unknown;
    404: unknown;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      404: unknown;
      }

      - ##### 200: unknown

        captured flow preview

      - ##### 404: unknown

        capture does not exist for this flow

  - ##### put: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    201: unknown;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      201: unknown;
      }

      - ##### 201: unknown

        flow preview capture created

- ##### /w/{workspace}/capture_u/{path}: {
  post: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  204: void;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    204: void;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      204: void;
      }

      - ##### 204: void

        flow preview captured

- ##### /w/{workspace}/concurrency_groups/list_jobs: {
  get: {
  req: {
  allWorkspaces?: boolean;
  args?: string;
  concurrencyKey?: string;
  createdBy?: string;
  createdOrStartedAfter?: string;
  createdOrStartedBefore?: string;
  hasNullParent?: boolean;
  isFlowStep?: boolean;
  isNotSchedule?: boolean;
  isSkipped?: boolean;
  jobKinds?: string;
  label?: string;
  page?: number;
  parentJob?: string;
  perPage?: number;
  result?: string;
  rowLimit?: number;
  running?: boolean;
  schedulePath?: string;
  scheduledForBeforeNow?: boolean;
  scriptHash?: string;
  scriptPathExact?: string;
  scriptPathStart?: string;
  startedAfter?: string;
  startedBefore?: string;
  success?: boolean;
  tag?: string;
  workspace: string;
  };
  res: {
  200: ExtendedJobs;
  };
  };
  }

  - ##### get: {
    req: {
    allWorkspaces?: boolean;
    args?: string;
    concurrencyKey?: string;
    createdBy?: string;
    createdOrStartedAfter?: string;
    createdOrStartedBefore?: string;
    hasNullParent?: boolean;
    isFlowStep?: boolean;
    isNotSchedule?: boolean;
    isSkipped?: boolean;
    jobKinds?: string;
    label?: string;
    page?: number;
    parentJob?: string;
    perPage?: number;
    result?: string;
    rowLimit?: number;
    running?: boolean;
    schedulePath?: string;
    scheduledForBeforeNow?: boolean;
    scriptHash?: string;
    scriptPathExact?: string;
    scriptPathStart?: string;
    startedAfter?: string;
    startedBefore?: string;
    success?: boolean;
    tag?: string;
    workspace: string;
    };
    res: {
    200: ExtendedJobs;
    };
    }

    - ##### req: {
      allWorkspaces?: boolean;
      args?: string;
      concurrencyKey?: string;
      createdBy?: string;
      createdOrStartedAfter?: string;
      createdOrStartedBefore?: string;
      hasNullParent?: boolean;
      isFlowStep?: boolean;
      isNotSchedule?: boolean;
      isSkipped?: boolean;
      jobKinds?: string;
      label?: string;
      page?: number;
      parentJob?: string;
      perPage?: number;
      result?: string;
      rowLimit?: number;
      running?: boolean;
      schedulePath?: string;
      scheduledForBeforeNow?: boolean;
      scriptHash?: string;
      scriptPathExact?: string;
      scriptPathStart?: string;
      startedAfter?: string;
      startedBefore?: string;
      success?: boolean;
      tag?: string;
      workspace: string;
      }

      - ##### `Optional` allWorkspaces?: boolean

        get jobs from all workspaces (only valid if request come from the `admins` workspace)

      - ##### `Optional` args?: string

        filter on jobs containing those args as a json subset (@> in postgres)

      - ##### `Optional` concurrencyKey?: string

      - ##### `Optional` createdBy?: string

        mask to filter exact matching user creator

      - ##### `Optional` createdOrStartedAfter?: string

        filter on created_at for non non started job and started_at otherwise after (exclusive) timestamp

      - ##### `Optional` createdOrStartedBefore?: string

        filter on created_at for non non started job and started_at otherwise before (inclusive) timestamp

      - ##### `Optional` hasNullParent?: boolean

        has null parent

      - ##### `Optional` isFlowStep?: boolean

        is the job a flow step

      - ##### `Optional` isNotSchedule?: boolean

        is not a scheduled job

      - ##### `Optional` isSkipped?: boolean

        is the job skipped

      - ##### `Optional` jobKinds?: string

        filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by,

      - ##### `Optional` label?: string

        mask to filter exact matching job's label (job labels are completed jobs with as a result an object containing a string in the array at key 'wm_labels')

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` result?: string

        filter on jobs containing those result as a json subset (@> in postgres)

      - ##### `Optional` rowLimit?: number

      - ##### `Optional` running?: boolean

        filter on running jobs

      - ##### `Optional` schedulePath?: string

        mask to filter by schedule path

      - ##### `Optional` scheduledForBeforeNow?: boolean

        filter on jobs scheduled_for before now (hence waitinf for a worker)

      - ##### `Optional` scriptHash?: string

        mask to filter exact matching path

      - ##### `Optional` scriptPathExact?: string

        mask to filter exact matching path

      - ##### `Optional` scriptPathStart?: string

        mask to filter matching starting path

      - ##### `Optional` startedAfter?: string

        filter on started after (exclusive) timestamp

      - ##### `Optional` startedBefore?: string

        filter on started before (inclusive) timestamp

      - ##### `Optional` success?: boolean

        filter on successful jobs

      - ##### `Optional` tag?: string

        filter on jobs with a given tag/worker group

      - ##### workspace: string

    - ##### res: {
      200: ExtendedJobs;
      }

      - ##### 200: ExtendedJobs

        time

- ##### /w/{workspace}/drafts/create: {
  post: {
  req: {
  requestBody: {
  path: string;
  typ: "flow" | "script" | "app";
  value?: unknown;
  };
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    path: string;
    typ: "flow" | "script" | "app";
    value?: unknown;
    };
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: {
      path: string;
      typ: "flow" | "script" | "app";
      value?: unknown;
      };
      workspace: string;
      }

      - ##### requestBody: {
        path: string;
        typ: "flow" | "script" | "app";
        value?: unknown;
        }

        - ##### path: string

        - ##### typ: "flow" | "script" | "app"

        - ##### `Optional` value?: unknown

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        draft created

- ##### /w/{workspace}/drafts/delete/{kind}/{path}: {
  delete: {
  req: {
  kind: "script" | "flow" | "app";
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    kind: "script" | "flow" | "app";
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      kind: "script" | "flow" | "app";
      path: string;
      workspace: string;
      }

      - ##### kind: "script" | "flow" | "app"

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        draft deleted

- ##### /w/{workspace}/embeddings/query_resource_types: {
  get: {
  req: {
  limit?: number;
  text: string;
  workspace: string;
  };
  res: {
  200: {
  name: string;
  schema?: unknown;
  score: number;
  }[];
  };
  };
  }

  - ##### get: {
    req: {
    limit?: number;
    text: string;
    workspace: string;
    };
    res: {
    200: {
    name: string;
    schema?: unknown;
    score: number;
    }[];
    };
    }

    - ##### req: {
      limit?: number;
      text: string;
      workspace: string;
      }

      - ##### `Optional` limit?: number

        query limit

      - ##### text: string

        query text

      - ##### workspace: string

    - ##### res: {
      200: {
      name: string;
      schema?: unknown;
      score: number;
      }[];
      }

      - ##### 200: {
        name: string;
        schema?: unknown;
        score: number;
        }[]

        resource type details

- ##### /w/{workspace}/favorites/star: {
  post: {
  req: {
  requestBody?: {
  favorite_kind?:
  | "flow"
  | "app"
  | "script"
  | "raw_app";
  path?: string;
  };
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody?: {
    favorite_kind?:
    | "flow"
    | "app"
    | "script"
    | "raw_app";
    path?: string;
    };
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      requestBody?: {
      favorite_kind?:
      | "flow"
      | "app"
      | "script"
      | "raw_app";
      path?: string;
      };
      workspace: string;
      }

      - ##### `Optional` requestBody?: {
        favorite_kind?:
        | "flow"
        | "app"
        | "script"
        | "raw_app";
        path?: string;
        }

        - ##### `Optional` favorite_kind?:
          | "flow"
          | "app"
          | "script"
          | "raw_app"

        - ##### `Optional` path?: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        star item

- ##### /w/{workspace}/favorites/unstar: {
  post: {
  req: {
  requestBody?: {
  favorite_kind?:
  | "flow"
  | "app"
  | "script"
  | "raw_app";
  path?: string;
  };
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody?: {
    favorite_kind?:
    | "flow"
    | "app"
    | "script"
    | "raw_app";
    path?: string;
    };
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      requestBody?: {
      favorite_kind?:
      | "flow"
      | "app"
      | "script"
      | "raw_app";
      path?: string;
      };
      workspace: string;
      }

      - ##### `Optional` requestBody?: {
        favorite_kind?:
        | "flow"
        | "app"
        | "script"
        | "raw_app";
        path?: string;
        }

        - ##### `Optional` favorite_kind?:
          | "flow"
          | "app"
          | "script"
          | "raw_app"

        - ##### `Optional` path?: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        unstar item

- ##### /w/{workspace}/flows/archive/{path}: {
  post: {
  req: {
  path: string;
  requestBody: {
  archived?: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: {
    archived?: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: {
      archived?: boolean;
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: {
        archived?: boolean;
        }

        archiveFlow

        - ##### `Optional` archived?: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        flow archived

- ##### /w/{workspace}/flows/create: {
  post: {
  req: {
  requestBody: OpenFlowWPath & {
  deployment_message?: string;
  draft_only?: boolean;
  };
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: OpenFlowWPath & {
    deployment_message?: string;
    draft_only?: boolean;
    };
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: OpenFlowWPath & {
      deployment_message?: string;
      draft_only?: boolean;
      };
      workspace: string;
      }

      - ##### requestBody: OpenFlowWPath & {
        deployment_message?: string;
        draft_only?: boolean;
        }

        Partially filled flow

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        flow created

- ##### /w/{workspace}/flows/delete/{path}: {
  delete: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        flow delete

- ##### /w/{workspace}/flows/exists/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        flow details

- ##### /w/{workspace}/flows/get/draft/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: Flow & {
  draft?: Flow;
  };
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: Flow & {
    draft?: Flow;
    };
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: Flow & {
      draft?: Flow;
      };
      }

      - ##### 200: Flow & {
        draft?: Flow;
        }

        flow details with draft

- ##### /w/{workspace}/flows/get/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: Flow;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: Flow;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: Flow;
      }

      - ##### 200: Flow

        flow details

- ##### /w/{workspace}/flows/input_history/p/{path}: {
  get: {
  req: {
  page?: number;
  path: string;
  perPage?: number;
  workspace: string;
  };
  res: {
  200: Input[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    path: string;
    perPage?: number;
    workspace: string;
    };
    res: {
    200: Input[];
    };
    }

    - ##### req: {
      page?: number;
      path: string;
      perPage?: number;
      workspace: string;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### path: string

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### workspace: string

    - ##### res: {
      200: Input[];
      }

      - ##### 200: Input[]

        input history for completed jobs with this flow path

- ##### /w/{workspace}/flows/list: {
  get: {
  req: {
  createdBy?: string;
  orderDesc?: boolean;
  page?: number;
  pathExact?: string;
  pathStart?: string;
  perPage?: number;
  showArchived?: boolean;
  starredOnly?: boolean;
  workspace: string;
  };
  res: {
  200: (Flow & {
  draft_only?: boolean;
  has_draft?: boolean;
  })[];
  };
  };
  }

  - ##### get: {
    req: {
    createdBy?: string;
    orderDesc?: boolean;
    page?: number;
    pathExact?: string;
    pathStart?: string;
    perPage?: number;
    showArchived?: boolean;
    starredOnly?: boolean;
    workspace: string;
    };
    res: {
    200: (Flow & {
    draft_only?: boolean;
    has_draft?: boolean;
    })[];
    };
    }

    - ##### req: {
      createdBy?: string;
      orderDesc?: boolean;
      page?: number;
      pathExact?: string;
      pathStart?: string;
      perPage?: number;
      showArchived?: boolean;
      starredOnly?: boolean;
      workspace: string;
      }

      - ##### `Optional` createdBy?: string

        mask to filter exact matching user creator

      - ##### `Optional` orderDesc?: boolean

        order by desc order (default true)

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` pathExact?: string

        mask to filter exact matching path

      - ##### `Optional` pathStart?: string

        mask to filter matching starting path

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` showArchived?: boolean

        (default false) show also the archived files. when multiple archived hash share the same path, only the ones with the latest create_at are displayed.

      - ##### `Optional` starredOnly?: boolean

        (default false) show only the starred items

      - ##### workspace: string

    - ##### res: {
      200: (Flow & {
      draft_only?: boolean;
      has_draft?: boolean;
      })[];
      }

      - ##### 200: (Flow & {
        draft_only?: boolean;
        has_draft?: boolean;
        })[]

        All flow

- ##### /w/{workspace}/flows/list_paths: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: string[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: string[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        list of flow paths

- ##### /w/{workspace}/flows/list_search: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  path: string;
  value: unknown;
  }[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    path: string;
    value: unknown;
    }[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      path: string;
      value: unknown;
      }[];
      }

      - ##### 200: {
        path: string;
        value: unknown;
        }[]

        flow list

- ##### /w/{workspace}/flows/toggle_workspace_error_handler/{path}: {
  post: {
  req: {
  path: string;
  requestBody: {
  muted?: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: {
    muted?: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: {
      muted?: boolean;
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: {
        muted?: boolean;
        }

        Workspace error handler enabled

        - ##### `Optional` muted?: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        error handler toggled

- ##### /w/{workspace}/flows/update/{path}: {
  post: {
  req: {
  path: string;
  requestBody: OpenFlowWPath & {
  deployment_message?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: OpenFlowWPath & {
    deployment_message?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: OpenFlowWPath & {
      deployment_message?: string;
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: OpenFlowWPath & {
        deployment_message?: string;
        }

        Partially filled flow

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        flow updated

- ##### /w/{workspace}/folders/addowner/{name}: {
  post: {
  req: {
  name: string;
  requestBody: {
  owner: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    name: string;
    requestBody: {
    owner: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: {
      owner: string;
      };
      workspace: string;
      }

      - ##### name: string

      - ##### requestBody: {
        owner: string;
        }

        owner user to folder

        - ##### owner: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        owner added to folder

- ##### /w/{workspace}/folders/create: {
  post: {
  req: {
  requestBody: {
  extra_perms?: unknown;
  name: string;
  owners?: string[];
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    extra_perms?: unknown;
    name: string;
    owners?: string[];
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      extra_perms?: unknown;
      name: string;
      owners?: string[];
      };
      workspace: string;
      }

      - ##### requestBody: {
        extra_perms?: unknown;
        name: string;
        owners?: string[];
        }

        create folder

        - ##### `Optional` extra_perms?: unknown

        - ##### name: string

        - ##### `Optional` owners?: string[]

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        folder created

- ##### /w/{workspace}/folders/delete/{name}: {
  delete: {
  req: {
  name: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    name: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      workspace: string;
      }

      - ##### name: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        folder deleted

- ##### /w/{workspace}/folders/get/{name}: {
  get: {
  req: {
  name: string;
  workspace: string;
  };
  res: {
  200: Folder;
  };
  };
  }

  - ##### get: {
    req: {
    name: string;
    workspace: string;
    };
    res: {
    200: Folder;
    };
    }

    - ##### req: {
      name: string;
      workspace: string;
      }

      - ##### name: string

      - ##### workspace: string

    - ##### res: {
      200: Folder;
      }

      - ##### 200: Folder

        folder

- ##### /w/{workspace}/folders/getusage/{name}: {
  get: {
  req: {
  name: string;
  workspace: string;
  };
  res: {
  200: {
  apps: number;
  flows: number;
  resources: number;
  schedules: number;
  scripts: number;
  variables: number;
  };
  };
  };
  }

  - ##### get: {
    req: {
    name: string;
    workspace: string;
    };
    res: {
    200: {
    apps: number;
    flows: number;
    resources: number;
    schedules: number;
    scripts: number;
    variables: number;
    };
    };
    }

    - ##### req: {
      name: string;
      workspace: string;
      }

      - ##### name: string

      - ##### workspace: string

    - ##### res: {
      200: {
      apps: number;
      flows: number;
      resources: number;
      schedules: number;
      scripts: number;
      variables: number;
      };
      }

      - ##### 200: {
        apps: number;
        flows: number;
        resources: number;
        schedules: number;
        scripts: number;
        variables: number;
        }

        folder

        - ##### apps: number

        - ##### flows: number

        - ##### resources: number

        - ##### schedules: number

        - ##### scripts: number

        - ##### variables: number

- ##### /w/{workspace}/folders/list: {
  get: {
  req: {
  page?: number;
  perPage?: number;
  workspace: string;
  };
  res: {
  200: Folder[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    perPage?: number;
    workspace: string;
    };
    res: {
    200: Folder[];
    };
    }

    - ##### req: {
      page?: number;
      perPage?: number;
      workspace: string;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### workspace: string

    - ##### res: {
      200: Folder[];
      }

      - ##### 200: Folder[]

        folder list

- ##### /w/{workspace}/folders/listnames: {
  get: {
  req: {
  onlyMemberOf?: boolean;
  workspace: string;
  };
  res: {
  200: string[];
  };
  };
  }

  - ##### get: {
    req: {
    onlyMemberOf?: boolean;
    workspace: string;
    };
    res: {
    200: string[];
    };
    }

    - ##### req: {
      onlyMemberOf?: boolean;
      workspace: string;
      }

      - ##### `Optional` onlyMemberOf?: boolean

        only list the folders the user is member of (default false)

      - ##### workspace: string

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        folder list

- ##### /w/{workspace}/folders/removeowner/{name}: {
  post: {
  req: {
  name: string;
  requestBody: {
  owner: string;
  write?: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    name: string;
    requestBody: {
    owner: string;
    write?: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: {
      owner: string;
      write?: boolean;
      };
      workspace: string;
      }

      - ##### name: string

      - ##### requestBody: {
        owner: string;
        write?: boolean;
        }

        added owner to folder

        - ##### owner: string

        - ##### `Optional` write?: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        owner removed from folder

- ##### /w/{workspace}/folders/update/{name}: {
  post: {
  req: {
  name: string;
  requestBody: {
  extra_perms?: unknown;
  owners?: string[];
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    name: string;
    requestBody: {
    extra_perms?: unknown;
    owners?: string[];
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: {
      extra_perms?: unknown;
      owners?: string[];
      };
      workspace: string;
      }

      - ##### name: string

      - ##### requestBody: {
        extra_perms?: unknown;
        owners?: string[];
        }

        update folder

        - ##### `Optional` extra_perms?: unknown

        - ##### `Optional` owners?: string[]

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        folder updated

- ##### /w/{workspace}/groups/adduser/{name}: {
  post: {
  req: {
  name: string;
  requestBody: {
  username?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    name: string;
    requestBody: {
    username?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: {
      username?: string;
      };
      workspace: string;
      }

      - ##### name: string

      - ##### requestBody: {
        username?: string;
        }

        added user to group

        - ##### `Optional` username?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        user added to group

- ##### /w/{workspace}/groups/create: {
  post: {
  req: {
  requestBody: {
  name: string;
  summary?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    name: string;
    summary?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      name: string;
      summary?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        name: string;
        summary?: string;
        }

        create group

        - ##### name: string

        - ##### `Optional` summary?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        group created

- ##### /w/{workspace}/groups/delete/{name}: {
  delete: {
  req: {
  name: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    name: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      workspace: string;
      }

      - ##### name: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        group deleted

- ##### /w/{workspace}/groups/get/{name}: {
  get: {
  req: {
  name: string;
  workspace: string;
  };
  res: {
  200: Group;
  };
  };
  }

  - ##### get: {
    req: {
    name: string;
    workspace: string;
    };
    res: {
    200: Group;
    };
    }

    - ##### req: {
      name: string;
      workspace: string;
      }

      - ##### name: string

      - ##### workspace: string

    - ##### res: {
      200: Group;
      }

      - ##### 200: Group

        group

- ##### /w/{workspace}/groups/list: {
  get: {
  req: {
  page?: number;
  perPage?: number;
  workspace: string;
  };
  res: {
  200: Group[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    perPage?: number;
    workspace: string;
    };
    res: {
    200: Group[];
    };
    }

    - ##### req: {
      page?: number;
      perPage?: number;
      workspace: string;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### workspace: string

    - ##### res: {
      200: Group[];
      }

      - ##### 200: Group[]

        group list

- ##### /w/{workspace}/groups/listnames: {
  get: {
  req: {
  onlyMemberOf?: boolean;
  workspace: string;
  };
  res: {
  200: string[];
  };
  };
  }

  - ##### get: {
    req: {
    onlyMemberOf?: boolean;
    workspace: string;
    };
    res: {
    200: string[];
    };
    }

    - ##### req: {
      onlyMemberOf?: boolean;
      workspace: string;
      }

      - ##### `Optional` onlyMemberOf?: boolean

        only list the groups the user is member of (default false)

      - ##### workspace: string

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        group list

- ##### /w/{workspace}/groups/removeuser/{name}: {
  post: {
  req: {
  name: string;
  requestBody: {
  username?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    name: string;
    requestBody: {
    username?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: {
      username?: string;
      };
      workspace: string;
      }

      - ##### name: string

      - ##### requestBody: {
        username?: string;
        }

        added user to group

        - ##### `Optional` username?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        user removed from group

- ##### /w/{workspace}/groups/update/{name}: {
  post: {
  req: {
  name: string;
  requestBody: {
  summary?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    name: string;
    requestBody: {
    summary?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      name: string;
      requestBody: {
      summary?: string;
      };
      workspace: string;
      }

      - ##### name: string

      - ##### requestBody: {
        summary?: string;
        }

        updated group

        - ##### `Optional` summary?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        group updated

- ##### /w/{workspace}/inputs/create: {
  post: {
  req: {
  requestBody: CreateInput;
  runnableId?: string;
  runnableType?: RunnableType;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: CreateInput;
    runnableId?: string;
    runnableType?: RunnableType;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: CreateInput;
      runnableId?: string;
      runnableType?: RunnableType;
      workspace: string;
      }

      - ##### requestBody: CreateInput

        Input

      - ##### `Optional` runnableId?: string

      - ##### `Optional` runnableType?: RunnableType

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        Input created

- ##### /w/{workspace}/inputs/delete/{input}: {
  post: {
  req: {
  input: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    input: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      input: string;
      workspace: string;
      }

      - ##### input: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        Input deleted

- ##### /w/{workspace}/inputs/history: {
  get: {
  req: {
  page?: number;
  perPage?: number;
  runnableId?: string;
  runnableType?: RunnableType;
  workspace: string;
  };
  res: {
  200: Input[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    perPage?: number;
    runnableId?: string;
    runnableType?: RunnableType;
    workspace: string;
    };
    res: {
    200: Input[];
    };
    }

    - ##### req: {
      page?: number;
      perPage?: number;
      runnableId?: string;
      runnableType?: RunnableType;
      workspace: string;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` runnableId?: string

      - ##### `Optional` runnableType?: RunnableType

      - ##### workspace: string

    - ##### res: {
      200: Input[];
      }

      - ##### 200: Input[]

        Input history for completed jobs

- ##### /w/{workspace}/inputs/list: {
  get: {
  req: {
  page?: number;
  perPage?: number;
  runnableId?: string;
  runnableType?: RunnableType;
  workspace: string;
  };
  res: {
  200: Input[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    perPage?: number;
    runnableId?: string;
    runnableType?: RunnableType;
    workspace: string;
    };
    res: {
    200: Input[];
    };
    }

    - ##### req: {
      page?: number;
      perPage?: number;
      runnableId?: string;
      runnableType?: RunnableType;
      workspace: string;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` runnableId?: string

      - ##### `Optional` runnableType?: RunnableType

      - ##### workspace: string

    - ##### res: {
      200: Input[];
      }

      - ##### 200: Input[]

        Saved Inputs for a Runnable

- ##### /w/{workspace}/inputs/update: {
  post: {
  req: {
  requestBody: UpdateInput;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: UpdateInput;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: UpdateInput;
      workspace: string;
      }

      - ##### requestBody: UpdateInput

        UpdateInput

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        Input updated

- ##### /w/{workspace}/inputs/{jobOrInputId}/args: {
  get: {
  req: {
  jobOrInputId: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    jobOrInputId: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      jobOrInputId: string;
      workspace: string;
      }

      - ##### jobOrInputId: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        args

- ##### /w/{workspace}/job_helpers/delete_s3_file: {
  delete: {
  req: {
  fileKey: string;
  storage?: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### delete: {
    req: {
    fileKey: string;
    storage?: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      fileKey: string;
      storage?: string;
      workspace: string;
      }

      - ##### fileKey: string

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        Confirmation

- ##### /w/{workspace}/job_helpers/download_s3_file: {
  get: {
  req: {
  fileKey: string;
  resourceType?: string;
  s3ResourcePath?: string;
  storage?: string;
  workspace: string;
  };
  res: {
  200: Blob | File;
  };
  };
  }

  - ##### get: {
    req: {
    fileKey: string;
    resourceType?: string;
    s3ResourcePath?: string;
    storage?: string;
    workspace: string;
    };
    res: {
    200: Blob | File;
    };
    }

    - ##### req: {
      fileKey: string;
      resourceType?: string;
      s3ResourcePath?: string;
      storage?: string;
      workspace: string;
      }

      - ##### fileKey: string

      - ##### `Optional` resourceType?: string

      - ##### `Optional` s3ResourcePath?: string

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: Blob | File;
      }

      - ##### 200: Blob | File

        Chunk of the downloaded file

- ##### /w/{workspace}/job_helpers/download_s3_parquet_file_as_csv: {
  get: {
  req: {
  fileKey: string;
  resourceType?: string;
  s3ResourcePath?: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    fileKey: string;
    resourceType?: string;
    s3ResourcePath?: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      fileKey: string;
      resourceType?: string;
      s3ResourcePath?: string;
      workspace: string;
      }

      - ##### fileKey: string

      - ##### `Optional` resourceType?: string

      - ##### `Optional` s3ResourcePath?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        The downloaded file

- ##### /w/{workspace}/job_helpers/duckdb_connection_settings: {
  post: {
  req: {
  requestBody: {
  s3_resource?: S3Resource;
  };
  workspace: string;
  };
  res: {
  200: {
  connection_settings_str?: string;
  };
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    s3_resource?: S3Resource;
    };
    workspace: string;
    };
    res: {
    200: {
    connection_settings_str?: string;
    };
    };
    }

    - ##### req: {
      requestBody: {
      s3_resource?: S3Resource;
      };
      workspace: string;
      }

      - ##### requestBody: {
        s3_resource?: S3Resource;
        }

        S3 resource to connect to

        - ##### `Optional` s3_resource?: S3Resource

      - ##### workspace: string

    - ##### res: {
      200: {
      connection_settings_str?: string;
      };
      }

      - ##### 200: {
        connection_settings_str?: string;
        }

        Connection settings

        - ##### `Optional` connection_settings_str?: string

- ##### /w/{workspace}/job_helpers/list_stored_files: {
  get: {
  req: {
  marker?: string;
  maxKeys: number;
  prefix?: string;
  storage?: string;
  workspace: string;
  };
  res: {
  200: {
  next_marker?: string;
  restricted_access?: boolean;
  windmill_large_files: WindmillLargeFile[];
  };
  };
  };
  }

  - ##### get: {
    req: {
    marker?: string;
    maxKeys: number;
    prefix?: string;
    storage?: string;
    workspace: string;
    };
    res: {
    200: {
    next_marker?: string;
    restricted_access?: boolean;
    windmill_large_files: WindmillLargeFile[];
    };
    };
    }

    - ##### req: {
      marker?: string;
      maxKeys: number;
      prefix?: string;
      storage?: string;
      workspace: string;
      }

      - ##### `Optional` marker?: string

      - ##### maxKeys: number

      - ##### `Optional` prefix?: string

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: {
      next_marker?: string;
      restricted_access?: boolean;
      windmill_large_files: WindmillLargeFile[];
      };
      }

      - ##### 200: {
        next_marker?: string;
        restricted_access?: boolean;
        windmill_large_files: WindmillLargeFile[];
        }

        List of file keys

        - ##### `Optional` next_marker?: string

        - ##### `Optional` restricted_access?: boolean

        - ##### windmill_large_files: WindmillLargeFile[]

- ##### /w/{workspace}/job_helpers/load_csv_preview/{path}: {
  get: {
  req: {
  limit?: number;
  offset?: number;
  path: string;
  searchCol?: string;
  searchTerm?: string;
  sortCol?: string;
  sortDesc?: boolean;
  storage?: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    limit?: number;
    offset?: number;
    path: string;
    searchCol?: string;
    searchTerm?: string;
    sortCol?: string;
    sortDesc?: boolean;
    storage?: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      limit?: number;
      offset?: number;
      path: string;
      searchCol?: string;
      searchTerm?: string;
      sortCol?: string;
      sortDesc?: boolean;
      storage?: string;
      workspace: string;
      }

      - ##### `Optional` limit?: number

      - ##### `Optional` offset?: number

      - ##### path: string

      - ##### `Optional` searchCol?: string

      - ##### `Optional` searchTerm?: string

      - ##### `Optional` sortCol?: string

      - ##### `Optional` sortDesc?: boolean

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        Csv Preview

- ##### /w/{workspace}/job_helpers/load_file_metadata: {
  get: {
  req: {
  fileKey: string;
  storage?: string;
  workspace: string;
  };
  res: {
  200: WindmillFileMetadata;
  };
  };
  }

  - ##### get: {
    req: {
    fileKey: string;
    storage?: string;
    workspace: string;
    };
    res: {
    200: WindmillFileMetadata;
    };
    }

    - ##### req: {
      fileKey: string;
      storage?: string;
      workspace: string;
      }

      - ##### fileKey: string

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: WindmillFileMetadata;
      }

      - ##### 200: WindmillFileMetadata

        FileMetadata

- ##### /w/{workspace}/job_helpers/load_file_preview: {
  get: {
  req: {
  csvHasHeader?: boolean;
  csvSeparator?: string;
  fileKey: string;
  fileMimeType?: string;
  fileSizeInBytes?: number;
  readBytesFrom?: number;
  readBytesLength?: number;
  storage?: string;
  workspace: string;
  };
  res: {
  200: WindmillFilePreview;
  };
  };
  }

  - ##### get: {
    req: {
    csvHasHeader?: boolean;
    csvSeparator?: string;
    fileKey: string;
    fileMimeType?: string;
    fileSizeInBytes?: number;
    readBytesFrom?: number;
    readBytesLength?: number;
    storage?: string;
    workspace: string;
    };
    res: {
    200: WindmillFilePreview;
    };
    }

    - ##### req: {
      csvHasHeader?: boolean;
      csvSeparator?: string;
      fileKey: string;
      fileMimeType?: string;
      fileSizeInBytes?: number;
      readBytesFrom?: number;
      readBytesLength?: number;
      storage?: string;
      workspace: string;
      }

      - ##### `Optional` csvHasHeader?: boolean

      - ##### `Optional` csvSeparator?: string

      - ##### fileKey: string

      - ##### `Optional` fileMimeType?: string

      - ##### `Optional` fileSizeInBytes?: number

      - ##### `Optional` readBytesFrom?: number

      - ##### `Optional` readBytesLength?: number

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: WindmillFilePreview;
      }

      - ##### 200: WindmillFilePreview

        FilePreview

- ##### /w/{workspace}/job_helpers/load_parquet_preview/{path}: {
  get: {
  req: {
  limit?: number;
  offset?: number;
  path: string;
  searchCol?: string;
  searchTerm?: string;
  sortCol?: string;
  sortDesc?: boolean;
  storage?: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    limit?: number;
    offset?: number;
    path: string;
    searchCol?: string;
    searchTerm?: string;
    sortCol?: string;
    sortDesc?: boolean;
    storage?: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      limit?: number;
      offset?: number;
      path: string;
      searchCol?: string;
      searchTerm?: string;
      sortCol?: string;
      sortDesc?: boolean;
      storage?: string;
      workspace: string;
      }

      - ##### `Optional` limit?: number

      - ##### `Optional` offset?: number

      - ##### path: string

      - ##### `Optional` searchCol?: string

      - ##### `Optional` searchTerm?: string

      - ##### `Optional` sortCol?: string

      - ##### `Optional` sortDesc?: boolean

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        Parquet Preview

- ##### /w/{workspace}/job_helpers/move_s3_file: {
  get: {
  req: {
  destFileKey: string;
  srcFileKey: string;
  storage?: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    destFileKey: string;
    srcFileKey: string;
    storage?: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      destFileKey: string;
      srcFileKey: string;
      storage?: string;
      workspace: string;
      }

      - ##### destFileKey: string

      - ##### srcFileKey: string

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        Confirmation

- ##### /w/{workspace}/job_helpers/polars_connection_settings: {
  post: {
  req: {
  requestBody: {
  s3_resource?: S3Resource;
  };
  workspace: string;
  };
  res: {
  200: {
  cache_regions: boolean;
  client_kwargs: PolarsClientKwargs;
  endpoint_url: string;
  key?: string;
  secret?: string;
  use_ssl: boolean;
  };
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    s3_resource?: S3Resource;
    };
    workspace: string;
    };
    res: {
    200: {
    cache_regions: boolean;
    client_kwargs: PolarsClientKwargs;
    endpoint_url: string;
    key?: string;
    secret?: string;
    use_ssl: boolean;
    };
    };
    }

    - ##### req: {
      requestBody: {
      s3_resource?: S3Resource;
      };
      workspace: string;
      }

      - ##### requestBody: {
        s3_resource?: S3Resource;
        }

        S3 resource to connect to

        - ##### `Optional` s3_resource?: S3Resource

      - ##### workspace: string

    - ##### res: {
      200: {
      cache_regions: boolean;
      client_kwargs: PolarsClientKwargs;
      endpoint_url: string;
      key?: string;
      secret?: string;
      use_ssl: boolean;
      };
      }

      - ##### 200: {
        cache_regions: boolean;
        client_kwargs: PolarsClientKwargs;
        endpoint_url: string;
        key?: string;
        secret?: string;
        use_ssl: boolean;
        }

        Connection settings

        - ##### cache_regions: boolean

        - ##### client_kwargs: PolarsClientKwargs

        - ##### endpoint_url: string

        - ##### `Optional` key?: string

        - ##### `Optional` secret?: string

        - ##### use_ssl: boolean

- ##### /w/{workspace}/job_helpers/test_connection: {
  get: {
  req: {
  storage?: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    storage?: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      storage?: string;
      workspace: string;
      }

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        Connection settings

- ##### /w/{workspace}/job_helpers/upload_s3_file: {
  post: {
  req: {
  fileExtension?: string;
  fileKey?: string;
  requestBody: Blob | File;
  resourceType?: string;
  s3ResourcePath?: string;
  storage?: string;
  workspace: string;
  };
  res: {
  200: {
  file_key: string;
  };
  };
  };
  }

  - ##### post: {
    req: {
    fileExtension?: string;
    fileKey?: string;
    requestBody: Blob | File;
    resourceType?: string;
    s3ResourcePath?: string;
    storage?: string;
    workspace: string;
    };
    res: {
    200: {
    file_key: string;
    };
    };
    }

    - ##### req: {
      fileExtension?: string;
      fileKey?: string;
      requestBody: Blob | File;
      resourceType?: string;
      s3ResourcePath?: string;
      storage?: string;
      workspace: string;
      }

      - ##### `Optional` fileExtension?: string

      - ##### `Optional` fileKey?: string

      - ##### requestBody: Blob | File

        File content

      - ##### `Optional` resourceType?: string

      - ##### `Optional` s3ResourcePath?: string

      - ##### `Optional` storage?: string

      - ##### workspace: string

    - ##### res: {
      200: {
      file_key: string;
      };
      }

      - ##### 200: {
        file_key: string;
        }

        File upload status

        - ##### file_key: string

- ##### /w/{workspace}/job_helpers/v2/duckdb_connection_settings: {
  post: {
  req: {
  requestBody: {
  s3_resource_path?: string;
  };
  workspace: string;
  };
  res: {
  200: {
  connection_settings_str: string;
  };
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    s3_resource_path?: string;
    };
    workspace: string;
    };
    res: {
    200: {
    connection_settings_str: string;
    };
    };
    }

    - ##### req: {
      requestBody: {
      s3_resource_path?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        s3_resource_path?: string;
        }

        S3 resource path to use to generate the connection settings. If empty, the S3 resource defined in the workspace settings will be used

        - ##### `Optional` s3_resource_path?: string

      - ##### workspace: string

    - ##### res: {
      200: {
      connection_settings_str: string;
      };
      }

      - ##### 200: {
        connection_settings_str: string;
        }

        Connection settings

        - ##### connection_settings_str: string

- ##### /w/{workspace}/job_helpers/v2/polars_connection_settings: {
  post: {
  req: {
  requestBody: {
  s3_resource_path?: string;
  };
  workspace: string;
  };
  res: {
  200: {
  s3fs_args: {
  cache_regions: boolean;
  client_kwargs: PolarsClientKwargs;
  endpoint_url: string;
  key?: string;
  secret?: string;
  use_ssl: boolean;
  };
  storage_options: {
  aws_access_key_id?: string;
  aws_allow_http: string;
  aws_endpoint_url: string;
  aws_region: string;
  aws_secret_access_key?: string;
  };
  };
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    s3_resource_path?: string;
    };
    workspace: string;
    };
    res: {
    200: {
    s3fs_args: {
    cache_regions: boolean;
    client_kwargs: PolarsClientKwargs;
    endpoint_url: string;
    key?: string;
    secret?: string;
    use_ssl: boolean;
    };
    storage_options: {
    aws_access_key_id?: string;
    aws_allow_http: string;
    aws_endpoint_url: string;
    aws_region: string;
    aws_secret_access_key?: string;
    };
    };
    };
    }

    - ##### req: {
      requestBody: {
      s3_resource_path?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        s3_resource_path?: string;
        }

        S3 resource path to use to generate the connection settings. If empty, the S3 resource defined in the workspace settings will be used

        - ##### `Optional` s3_resource_path?: string

      - ##### workspace: string

    - ##### res: {
      200: {
      s3fs_args: {
      cache_regions: boolean;
      client_kwargs: PolarsClientKwargs;
      endpoint_url: string;
      key?: string;
      secret?: string;
      use_ssl: boolean;
      };
      storage_options: {
      aws_access_key_id?: string;
      aws_allow_http: string;
      aws_endpoint_url: string;
      aws_region: string;
      aws_secret_access_key?: string;
      };
      };
      }

      - ##### 200: {
        s3fs_args: {
        cache_regions: boolean;
        client_kwargs: PolarsClientKwargs;
        endpoint_url: string;
        key?: string;
        secret?: string;
        use_ssl: boolean;
        };
        storage_options: {
        aws_access_key_id?: string;
        aws_allow_http: string;
        aws_endpoint_url: string;
        aws_region: string;
        aws_secret_access_key?: string;
        };
        }

        Connection settings

        - ##### s3fs_args: {
          cache_regions: boolean;
          client_kwargs: PolarsClientKwargs;
          endpoint_url: string;
          key?: string;
          secret?: string;
          use_ssl: boolean;
          }

          - ##### cache_regions: boolean

          - ##### client_kwargs: PolarsClientKwargs

          - ##### endpoint_url: string

          - ##### `Optional` key?: string

          - ##### `Optional` secret?: string

          - ##### use_ssl: boolean

        - ##### storage_options: {
          aws_access_key_id?: string;
          aws_allow_http: string;
          aws_endpoint_url: string;
          aws_region: string;
          aws_secret_access_key?: string;
          }

          - ##### `Optional` aws_access_key_id?: string

          - ##### aws_allow_http: string

          - ##### aws_endpoint_url: string

          - ##### aws_region: string

          - ##### `Optional` aws_secret_access_key?: string

- ##### /w/{workspace}/job_helpers/v2/s3_resource_info: {
  post: {
  req: {
  requestBody: {
  s3_resource_path?: string;
  };
  workspace: string;
  };
  res: {
  200: S3Resource;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    s3_resource_path?: string;
    };
    workspace: string;
    };
    res: {
    200: S3Resource;
    };
    }

    - ##### req: {
      requestBody: {
      s3_resource_path?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        s3_resource_path?: string;
        }

        S3 resource path to use. If empty, the S3 resource defined in the workspace settings will be used

        - ##### `Optional` s3_resource_path?: string

      - ##### workspace: string

    - ##### res: {
      200: S3Resource;
      }

      - ##### 200: S3Resource

        Connection settings

- ##### /w/{workspace}/job_metrics/get/{id}: {
  post: {
  req: {
  id: string;
  requestBody: {
  from_timestamp?: string;
  timeseries_max_datapoints?: number;
  to_timestamp?: string;
  };
  workspace: string;
  };
  res: {
  200: {
  metrics_metadata?: MetricMetadata[];
  scalar_metrics?: ScalarMetric[];
  timeseries_metrics?: TimeseriesMetric[];
  };
  };
  };
  }

  - ##### post: {
    req: {
    id: string;
    requestBody: {
    from_timestamp?: string;
    timeseries_max_datapoints?: number;
    to_timestamp?: string;
    };
    workspace: string;
    };
    res: {
    200: {
    metrics_metadata?: MetricMetadata[];
    scalar_metrics?: ScalarMetric[];
    timeseries_metrics?: TimeseriesMetric[];
    };
    };
    }

    - ##### req: {
      id: string;
      requestBody: {
      from_timestamp?: string;
      timeseries_max_datapoints?: number;
      to_timestamp?: string;
      };
      workspace: string;
      }

      - ##### id: string

      - ##### requestBody: {
        from_timestamp?: string;
        timeseries_max_datapoints?: number;
        to_timestamp?: string;
        }

        parameters for statistics retrieval

        - ##### `Optional` from_timestamp?: string

        - ##### `Optional` timeseries_max_datapoints?: number

        - ##### `Optional` to_timestamp?: string

      - ##### workspace: string

    - ##### res: {
      200: {
      metrics_metadata?: MetricMetadata[];
      scalar_metrics?: ScalarMetric[];
      timeseries_metrics?: TimeseriesMetric[];
      };
      }

      - ##### 200: {
        metrics_metadata?: MetricMetadata[];
        scalar_metrics?: ScalarMetric[];
        timeseries_metrics?: TimeseriesMetric[];
        }

        job details

        - ##### `Optional` metrics_metadata?: MetricMetadata[]

        - ##### `Optional` scalar_metrics?: ScalarMetric[]

        - ##### `Optional` timeseries_metrics?: TimeseriesMetric[]

- ##### /w/{workspace}/jobs/completed/count: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  database_length: number;
  };
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    database_length: number;
    };
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      database_length: number;
      };
      }

      - ##### 200: {
        database_length: number;
        }

        completed count

        - ##### database_length: number

- ##### /w/{workspace}/jobs/completed/delete/{id}: {
  post: {
  req: {
  id: string;
  workspace: string;
  };
  res: {
  200: CompletedJob;
  };
  };
  }

  - ##### post: {
    req: {
    id: string;
    workspace: string;
    };
    res: {
    200: CompletedJob;
    };
    }

    - ##### req: {
      id: string;
      workspace: string;
      }

      - ##### id: string

      - ##### workspace: string

    - ##### res: {
      200: CompletedJob;
      }

      - ##### 200: CompletedJob

        job details

- ##### /w/{workspace}/jobs/completed/list: {
  get: {
  req: {
  args?: string;
  createdBy?: string;
  hasNullParent?: boolean;
  isFlowStep?: boolean;
  isNotSchedule?: boolean;
  isSkipped?: boolean;
  jobKinds?: string;
  label?: string;
  orderDesc?: boolean;
  page?: number;
  parentJob?: string;
  perPage?: number;
  result?: string;
  schedulePath?: string;
  scriptHash?: string;
  scriptPathExact?: string;
  scriptPathStart?: string;
  startedAfter?: string;
  startedBefore?: string;
  success?: boolean;
  tag?: string;
  workspace: string;
  };
  res: {
  200: CompletedJob[];
  };
  };
  }

  - ##### get: {
    req: {
    args?: string;
    createdBy?: string;
    hasNullParent?: boolean;
    isFlowStep?: boolean;
    isNotSchedule?: boolean;
    isSkipped?: boolean;
    jobKinds?: string;
    label?: string;
    orderDesc?: boolean;
    page?: number;
    parentJob?: string;
    perPage?: number;
    result?: string;
    schedulePath?: string;
    scriptHash?: string;
    scriptPathExact?: string;
    scriptPathStart?: string;
    startedAfter?: string;
    startedBefore?: string;
    success?: boolean;
    tag?: string;
    workspace: string;
    };
    res: {
    200: CompletedJob[];
    };
    }

    - ##### req: {
      args?: string;
      createdBy?: string;
      hasNullParent?: boolean;
      isFlowStep?: boolean;
      isNotSchedule?: boolean;
      isSkipped?: boolean;
      jobKinds?: string;
      label?: string;
      orderDesc?: boolean;
      page?: number;
      parentJob?: string;
      perPage?: number;
      result?: string;
      schedulePath?: string;
      scriptHash?: string;
      scriptPathExact?: string;
      scriptPathStart?: string;
      startedAfter?: string;
      startedBefore?: string;
      success?: boolean;
      tag?: string;
      workspace: string;
      }

      - ##### `Optional` args?: string

        filter on jobs containing those args as a json subset (@> in postgres)

      - ##### `Optional` createdBy?: string

        mask to filter exact matching user creator

      - ##### `Optional` hasNullParent?: boolean

        has null parent

      - ##### `Optional` isFlowStep?: boolean

        is the job a flow step

      - ##### `Optional` isNotSchedule?: boolean

        is not a scheduled job

      - ##### `Optional` isSkipped?: boolean

        is the job skipped

      - ##### `Optional` jobKinds?: string

        filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by,

      - ##### `Optional` label?: string

        mask to filter exact matching job's label (job labels are completed jobs with as a result an object containing a string in the array at key 'wm_labels')

      - ##### `Optional` orderDesc?: boolean

        order by desc order (default true)

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` result?: string

        filter on jobs containing those result as a json subset (@> in postgres)

      - ##### `Optional` schedulePath?: string

        mask to filter by schedule path

      - ##### `Optional` scriptHash?: string

        mask to filter exact matching path

      - ##### `Optional` scriptPathExact?: string

        mask to filter exact matching path

      - ##### `Optional` scriptPathStart?: string

        mask to filter matching starting path

      - ##### `Optional` startedAfter?: string

        filter on started after (exclusive) timestamp

      - ##### `Optional` startedBefore?: string

        filter on started before (inclusive) timestamp

      - ##### `Optional` success?: boolean

        filter on successful jobs

      - ##### `Optional` tag?: string

        filter on jobs with a given tag/worker group

      - ##### workspace: string

    - ##### res: {
      200: CompletedJob[];
      }

      - ##### 200: CompletedJob[]

        All completed jobs

- ##### /w/{workspace}/jobs/flow/resume/{id}: {
  post: {
  req: {
  id: string;
  requestBody: {
  [key: string]: unknown;
  };
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    id: string;
    requestBody: {
    [key: string]: unknown;
    };
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      id: string;
      requestBody: {
      [key: string]: unknown;
      };
      workspace: string;
      }

      - ##### id: string

      - ##### requestBody: {
        [key: string]: unknown;
        }

        - ##### [key: string]: unknown

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job resumed

- ##### /w/{workspace}/jobs/flow/user_states/{id}/{key}: {
  get: {
  req: {
  id: string;
  key: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  post: {
  req: {
  id: string;
  key: string;
  requestBody: unknown;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    id: string;
    key: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      id: string;
      key: string;
      workspace: string;
      }

      - ##### id: string

      - ##### key: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        flow user state updated

  - ##### post: {
    req: {
    id: string;
    key: string;
    requestBody: unknown;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      id: string;
      key: string;
      requestBody: unknown;
      workspace: string;
      }

      - ##### id: string

      - ##### key: string

      - ##### requestBody: unknown

        new value

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        flow user state updated

- ##### /w/{workspace}/jobs/job_signature/{id}/{resume_id}: {
  get: {
  req: {
  approver?: string;
  id: string;
  resumeId: number;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    approver?: string;
    id: string;
    resumeId: number;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      approver?: string;
      id: string;
      resumeId: number;
      workspace: string;
      }

      - ##### `Optional` approver?: string

      - ##### id: string

      - ##### resumeId: number

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        job signature

- ##### /w/{workspace}/jobs/list: {
  get: {
  req: {
  allWorkspaces?: boolean;
  args?: string;
  createdBy?: string;
  createdOrStartedAfter?: string;
  createdOrStartedBefore?: string;
  hasNullParent?: boolean;
  isFlowStep?: boolean;
  isNotSchedule?: boolean;
  isSkipped?: boolean;
  jobKinds?: string;
  label?: string;
  page?: number;
  parentJob?: string;
  perPage?: number;
  result?: string;
  running?: boolean;
  schedulePath?: string;
  scheduledForBeforeNow?: boolean;
  scriptHash?: string;
  scriptPathExact?: string;
  scriptPathStart?: string;
  startedAfter?: string;
  startedBefore?: string;
  success?: boolean;
  tag?: string;
  workspace: string;
  };
  res: {
  200: Job[];
  };
  };
  }

  - ##### get: {
    req: {
    allWorkspaces?: boolean;
    args?: string;
    createdBy?: string;
    createdOrStartedAfter?: string;
    createdOrStartedBefore?: string;
    hasNullParent?: boolean;
    isFlowStep?: boolean;
    isNotSchedule?: boolean;
    isSkipped?: boolean;
    jobKinds?: string;
    label?: string;
    page?: number;
    parentJob?: string;
    perPage?: number;
    result?: string;
    running?: boolean;
    schedulePath?: string;
    scheduledForBeforeNow?: boolean;
    scriptHash?: string;
    scriptPathExact?: string;
    scriptPathStart?: string;
    startedAfter?: string;
    startedBefore?: string;
    success?: boolean;
    tag?: string;
    workspace: string;
    };
    res: {
    200: Job[];
    };
    }

    - ##### req: {
      allWorkspaces?: boolean;
      args?: string;
      createdBy?: string;
      createdOrStartedAfter?: string;
      createdOrStartedBefore?: string;
      hasNullParent?: boolean;
      isFlowStep?: boolean;
      isNotSchedule?: boolean;
      isSkipped?: boolean;
      jobKinds?: string;
      label?: string;
      page?: number;
      parentJob?: string;
      perPage?: number;
      result?: string;
      running?: boolean;
      schedulePath?: string;
      scheduledForBeforeNow?: boolean;
      scriptHash?: string;
      scriptPathExact?: string;
      scriptPathStart?: string;
      startedAfter?: string;
      startedBefore?: string;
      success?: boolean;
      tag?: string;
      workspace: string;
      }

      - ##### `Optional` allWorkspaces?: boolean

        get jobs from all workspaces (only valid if request come from the `admins` workspace)

      - ##### `Optional` args?: string

        filter on jobs containing those args as a json subset (@> in postgres)

      - ##### `Optional` createdBy?: string

        mask to filter exact matching user creator

      - ##### `Optional` createdOrStartedAfter?: string

        filter on created_at for non non started job and started_at otherwise after (exclusive) timestamp

      - ##### `Optional` createdOrStartedBefore?: string

        filter on created_at for non non started job and started_at otherwise before (inclusive) timestamp

      - ##### `Optional` hasNullParent?: boolean

        has null parent

      - ##### `Optional` isFlowStep?: boolean

        is the job a flow step

      - ##### `Optional` isNotSchedule?: boolean

        is not a scheduled job

      - ##### `Optional` isSkipped?: boolean

        is the job skipped

      - ##### `Optional` jobKinds?: string

        filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by,

      - ##### `Optional` label?: string

        mask to filter exact matching job's label (job labels are completed jobs with as a result an object containing a string in the array at key 'wm_labels')

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` result?: string

        filter on jobs containing those result as a json subset (@> in postgres)

      - ##### `Optional` running?: boolean

        filter on running jobs

      - ##### `Optional` schedulePath?: string

        mask to filter by schedule path

      - ##### `Optional` scheduledForBeforeNow?: boolean

        filter on jobs scheduled_for before now (hence waitinf for a worker)

      - ##### `Optional` scriptHash?: string

        mask to filter exact matching path

      - ##### `Optional` scriptPathExact?: string

        mask to filter exact matching path

      - ##### `Optional` scriptPathStart?: string

        mask to filter matching starting path

      - ##### `Optional` startedAfter?: string

        filter on started after (exclusive) timestamp

      - ##### `Optional` startedBefore?: string

        filter on started before (inclusive) timestamp

      - ##### `Optional` success?: boolean

        filter on successful jobs

      - ##### `Optional` tag?: string

        filter on jobs with a given tag/worker group

      - ##### workspace: string

    - ##### res: {
      200: Job[];
      }

      - ##### 200: Job[]

        All jobs

- ##### /w/{workspace}/jobs/openai_sync/f/{path}: {
  post: {
  req: {
  includeHeader?: string;
  jobId?: string;
  path: string;
  queueLimit?: string;
  requestBody: ScriptArgs;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### post: {
    req: {
    includeHeader?: string;
    jobId?: string;
    path: string;
    queueLimit?: string;
    requestBody: ScriptArgs;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      includeHeader?: string;
      jobId?: string;
      path: string;
      queueLimit?: string;
      requestBody: ScriptArgs;
      workspace: string;
      }

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### path: string

      - ##### `Optional` queueLimit?: string

        The maximum size of the queue for which the request would get rejected if that job would push it above that limit

      - ##### requestBody: ScriptArgs

        script args

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        job result

- ##### /w/{workspace}/jobs/openai_sync/p/{path}: {
  post: {
  req: {
  includeHeader?: string;
  jobId?: string;
  parentJob?: string;
  path: string;
  queueLimit?: string;
  requestBody: ScriptArgs;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### post: {
    req: {
    includeHeader?: string;
    jobId?: string;
    parentJob?: string;
    path: string;
    queueLimit?: string;
    requestBody: ScriptArgs;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      includeHeader?: string;
      jobId?: string;
      parentJob?: string;
      path: string;
      queueLimit?: string;
      requestBody: ScriptArgs;
      workspace: string;
      }

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### path: string

      - ##### `Optional` queueLimit?: string

        The maximum size of the queue for which the request would get rejected if that job would push it above that limit

      - ##### requestBody: ScriptArgs

        script args

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        job result

- ##### /w/{workspace}/jobs/queue/cancel_all: {
  post: {
  req: {
  workspace: string;
  };
  res: {
  200: string[];
  };
  };
  }

  - ##### post: {
    req: {
    workspace: string;
    };
    res: {
    200: string[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        uuids of canceled jobs

- ##### /w/{workspace}/jobs/queue/count: {
  get: {
  req: {
  allWorkspaces?: boolean;
  workspace: string;
  };
  res: {
  200: {
  database_length: number;
  };
  };
  };
  }

  - ##### get: {
    req: {
    allWorkspaces?: boolean;
    workspace: string;
    };
    res: {
    200: {
    database_length: number;
    };
    };
    }

    - ##### req: {
      allWorkspaces?: boolean;
      workspace: string;
      }

      - ##### `Optional` allWorkspaces?: boolean

        get jobs from all workspaces (only valid if request come from the `admins` workspace)

      - ##### workspace: string

    - ##### res: {
      200: {
      database_length: number;
      };
      }

      - ##### 200: {
        database_length: number;
        }

        queue count

        - ##### database_length: number

- ##### /w/{workspace}/jobs/queue/list: {
  get: {
  req: {
  allWorkspaces?: boolean;
  args?: string;
  createdBy?: string;
  isNotSchedule?: boolean;
  jobKinds?: string;
  orderDesc?: boolean;
  page?: number;
  parentJob?: string;
  perPage?: number;
  result?: string;
  running?: boolean;
  schedulePath?: string;
  scheduledForBeforeNow?: boolean;
  scriptHash?: string;
  scriptPathExact?: string;
  scriptPathStart?: string;
  startedAfter?: string;
  startedBefore?: string;
  success?: boolean;
  suspended?: boolean;
  tag?: string;
  workspace: string;
  };
  res: {
  200: QueuedJob[];
  };
  };
  }

  - ##### get: {
    req: {
    allWorkspaces?: boolean;
    args?: string;
    createdBy?: string;
    isNotSchedule?: boolean;
    jobKinds?: string;
    orderDesc?: boolean;
    page?: number;
    parentJob?: string;
    perPage?: number;
    result?: string;
    running?: boolean;
    schedulePath?: string;
    scheduledForBeforeNow?: boolean;
    scriptHash?: string;
    scriptPathExact?: string;
    scriptPathStart?: string;
    startedAfter?: string;
    startedBefore?: string;
    success?: boolean;
    suspended?: boolean;
    tag?: string;
    workspace: string;
    };
    res: {
    200: QueuedJob[];
    };
    }

    - ##### req: {
      allWorkspaces?: boolean;
      args?: string;
      createdBy?: string;
      isNotSchedule?: boolean;
      jobKinds?: string;
      orderDesc?: boolean;
      page?: number;
      parentJob?: string;
      perPage?: number;
      result?: string;
      running?: boolean;
      schedulePath?: string;
      scheduledForBeforeNow?: boolean;
      scriptHash?: string;
      scriptPathExact?: string;
      scriptPathStart?: string;
      startedAfter?: string;
      startedBefore?: string;
      success?: boolean;
      suspended?: boolean;
      tag?: string;
      workspace: string;
      }

      - ##### `Optional` allWorkspaces?: boolean

        get jobs from all workspaces (only valid if request come from the `admins` workspace)

      - ##### `Optional` args?: string

        filter on jobs containing those args as a json subset (@> in postgres)

      - ##### `Optional` createdBy?: string

        mask to filter exact matching user creator

      - ##### `Optional` isNotSchedule?: boolean

        is not a scheduled job

      - ##### `Optional` jobKinds?: string

        filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by,

      - ##### `Optional` orderDesc?: boolean

        order by desc order (default true)

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` result?: string

        filter on jobs containing those result as a json subset (@> in postgres)

      - ##### `Optional` running?: boolean

        filter on running jobs

      - ##### `Optional` schedulePath?: string

        mask to filter by schedule path

      - ##### `Optional` scheduledForBeforeNow?: boolean

        filter on jobs scheduled_for before now (hence waitinf for a worker)

      - ##### `Optional` scriptHash?: string

        mask to filter exact matching path

      - ##### `Optional` scriptPathExact?: string

        mask to filter exact matching path

      - ##### `Optional` scriptPathStart?: string

        mask to filter matching starting path

      - ##### `Optional` startedAfter?: string

        filter on started after (exclusive) timestamp

      - ##### `Optional` startedBefore?: string

        filter on started before (inclusive) timestamp

      - ##### `Optional` success?: boolean

        filter on successful jobs

      - ##### `Optional` suspended?: boolean

        filter on suspended jobs

      - ##### `Optional` tag?: string

        filter on jobs with a given tag/worker group

      - ##### workspace: string

    - ##### res: {
      200: QueuedJob[];
      }

      - ##### 200: QueuedJob[]

        All queued jobs

- ##### /w/{workspace}/jobs/restart/f/{id}/from/{step_id}/{branch_or_iteration_n}: {
  post: {
  req: {
  branchOrIterationN: number;
  id: string;
  includeHeader?: string;
  invisibleToOwner?: boolean;
  jobId?: string;
  parentJob?: string;
  requestBody: ScriptArgs;
  scheduledFor?: string;
  scheduledInSecs?: number;
  stepId: string;
  tag?: string;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    branchOrIterationN: number;
    id: string;
    includeHeader?: string;
    invisibleToOwner?: boolean;
    jobId?: string;
    parentJob?: string;
    requestBody: ScriptArgs;
    scheduledFor?: string;
    scheduledInSecs?: number;
    stepId: string;
    tag?: string;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      branchOrIterationN: number;
      id: string;
      includeHeader?: string;
      invisibleToOwner?: boolean;
      jobId?: string;
      parentJob?: string;
      requestBody: ScriptArgs;
      scheduledFor?: string;
      scheduledInSecs?: number;
      stepId: string;
      tag?: string;
      workspace: string;
      }

      - ##### branchOrIterationN: number

        for branchall or loop, the iteration at which the flow should restart

      - ##### id: string

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` invisibleToOwner?: boolean

        make the run invisible to the the flow owner (default false)

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### requestBody: ScriptArgs

        flow args

      - ##### `Optional` scheduledFor?: string

        when to schedule this job (leave empty for immediate run)

      - ##### `Optional` scheduledInSecs?: number

        schedule the script to execute in the number of seconds starting now

      - ##### stepId: string

        step id to restart the flow from

      - ##### `Optional` tag?: string

        Override the tag to use

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job created

- ##### /w/{workspace}/jobs/result_by_id/{flow_job_id}/{node_id}: {
  get: {
  req: {
  flowJobId: string;
  nodeId: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    flowJobId: string;
    nodeId: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      flowJobId: string;
      nodeId: string;
      workspace: string;
      }

      - ##### flowJobId: string

      - ##### nodeId: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        job result

- ##### /w/{workspace}/jobs/resume_urls/{id}/{resume_id}: {
  get: {
  req: {
  approver?: string;
  id: string;
  resumeId: number;
  workspace: string;
  };
  res: {
  200: {
  approvalPage: string;
  cancel: string;
  resume: string;
  };
  };
  };
  }

  - ##### get: {
    req: {
    approver?: string;
    id: string;
    resumeId: number;
    workspace: string;
    };
    res: {
    200: {
    approvalPage: string;
    cancel: string;
    resume: string;
    };
    };
    }

    - ##### req: {
      approver?: string;
      id: string;
      resumeId: number;
      workspace: string;
      }

      - ##### `Optional` approver?: string

      - ##### id: string

      - ##### resumeId: number

      - ##### workspace: string

    - ##### res: {
      200: {
      approvalPage: string;
      cancel: string;
      resume: string;
      };
      }

      - ##### 200: {
        approvalPage: string;
        cancel: string;
        resume: string;
        }

        url endpoints

        - ##### approvalPage: string

        - ##### cancel: string

        - ##### resume: string

- ##### /w/{workspace}/jobs/run/dependencies: {
  post: {
  req: {
  requestBody: {
  entrypoint: string;
  raw_scripts: RawScriptForDependencies[];
  };
  workspace: string;
  };
  res: {
  201: {
  lock: string;
  };
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    entrypoint: string;
    raw_scripts: RawScriptForDependencies[];
    };
    workspace: string;
    };
    res: {
    201: {
    lock: string;
    };
    };
    }

    - ##### req: {
      requestBody: {
      entrypoint: string;
      raw_scripts: RawScriptForDependencies[];
      };
      workspace: string;
      }

      - ##### requestBody: {
        entrypoint: string;
        raw_scripts: RawScriptForDependencies[];
        }

        raw script content

        - ##### entrypoint: string

        - ##### raw_scripts: RawScriptForDependencies[]

      - ##### workspace: string

    - ##### res: {
      201: {
      lock: string;
      };
      }

      - ##### 201: {
        lock: string;
        }

        dependency job result

        - ##### lock: string

- ##### /w/{workspace}/jobs/run/f/{path}: {
  post: {
  req: {
  includeHeader?: string;
  invisibleToOwner?: boolean;
  jobId?: string;
  parentJob?: string;
  path: string;
  requestBody: ScriptArgs;
  scheduledFor?: string;
  scheduledInSecs?: number;
  tag?: string;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    includeHeader?: string;
    invisibleToOwner?: boolean;
    jobId?: string;
    parentJob?: string;
    path: string;
    requestBody: ScriptArgs;
    scheduledFor?: string;
    scheduledInSecs?: number;
    tag?: string;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      includeHeader?: string;
      invisibleToOwner?: boolean;
      jobId?: string;
      parentJob?: string;
      path: string;
      requestBody: ScriptArgs;
      scheduledFor?: string;
      scheduledInSecs?: number;
      tag?: string;
      workspace: string;
      }

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` invisibleToOwner?: boolean

        make the run invisible to the the flow owner (default false)

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### path: string

      - ##### requestBody: ScriptArgs

        flow args

      - ##### `Optional` scheduledFor?: string

        when to schedule this job (leave empty for immediate run)

      - ##### `Optional` scheduledInSecs?: number

        schedule the script to execute in the number of seconds starting now

      - ##### `Optional` tag?: string

        Override the tag to use

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job created

- ##### /w/{workspace}/jobs/run/h/{hash}: {
  post: {
  req: {
  cacheTtl?: string;
  hash: string;
  includeHeader?: string;
  invisibleToOwner?: boolean;
  jobId?: string;
  parentJob?: string;
  requestBody: {
  [key: string]: unknown;
  };
  scheduledFor?: string;
  scheduledInSecs?: number;
  tag?: string;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    cacheTtl?: string;
    hash: string;
    includeHeader?: string;
    invisibleToOwner?: boolean;
    jobId?: string;
    parentJob?: string;
    requestBody: {
    [key: string]: unknown;
    };
    scheduledFor?: string;
    scheduledInSecs?: number;
    tag?: string;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      cacheTtl?: string;
      hash: string;
      includeHeader?: string;
      invisibleToOwner?: boolean;
      jobId?: string;
      parentJob?: string;
      requestBody: {
      [key: string]: unknown;
      };
      scheduledFor?: string;
      scheduledInSecs?: number;
      tag?: string;
      workspace: string;
      }

      - ##### `Optional` cacheTtl?: string

        Override the cache time to live (in seconds). Can not be used to disable caching, only override with a new cache ttl

      - ##### hash: string

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` invisibleToOwner?: boolean

        make the run invisible to the the script owner (default false)

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### requestBody: {
        [key: string]: unknown;
        }

        Partially filled args

        - ##### [key: string]: unknown

      - ##### `Optional` scheduledFor?: string

        when to schedule this job (leave empty for immediate run)

      - ##### `Optional` scheduledInSecs?: number

        schedule the script to execute in the number of seconds starting now

      - ##### `Optional` tag?: string

        Override the tag to use

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job created

- ##### /w/{workspace}/jobs/run/p/{path}: {
  post: {
  req: {
  cacheTtl?: string;
  invisibleToOwner?: boolean;
  jobId?: string;
  parentJob?: string;
  path: string;
  requestBody: ScriptArgs;
  scheduledFor?: string;
  scheduledInSecs?: number;
  tag?: string;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    cacheTtl?: string;
    invisibleToOwner?: boolean;
    jobId?: string;
    parentJob?: string;
    path: string;
    requestBody: ScriptArgs;
    scheduledFor?: string;
    scheduledInSecs?: number;
    tag?: string;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      cacheTtl?: string;
      invisibleToOwner?: boolean;
      jobId?: string;
      parentJob?: string;
      path: string;
      requestBody: ScriptArgs;
      scheduledFor?: string;
      scheduledInSecs?: number;
      tag?: string;
      workspace: string;
      }

      - ##### `Optional` cacheTtl?: string

        Override the cache time to live (in seconds). Can not be used to disable caching, only override with a new cache ttl

      - ##### `Optional` invisibleToOwner?: boolean

        make the run invisible to the the script owner (default false)

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### path: string

      - ##### requestBody: ScriptArgs

        script args

      - ##### `Optional` scheduledFor?: string

        when to schedule this job (leave empty for immediate run)

      - ##### `Optional` scheduledInSecs?: number

        schedule the script to execute in the number of seconds starting now

      - ##### `Optional` tag?: string

        Override the tag to use

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job created

- ##### /w/{workspace}/jobs/run/preview: {
  post: {
  req: {
  includeHeader?: string;
  invisibleToOwner?: boolean;
  jobId?: string;
  requestBody: Preview;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    includeHeader?: string;
    invisibleToOwner?: boolean;
    jobId?: string;
    requestBody: Preview;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      includeHeader?: string;
      invisibleToOwner?: boolean;
      jobId?: string;
      requestBody: Preview;
      workspace: string;
      }

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` invisibleToOwner?: boolean

        make the run invisible to the the script owner (default false)

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### requestBody: Preview

        preview

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job created

- ##### /w/{workspace}/jobs/run/preview_flow: {
  post: {
  req: {
  includeHeader?: string;
  invisibleToOwner?: boolean;
  jobId?: string;
  requestBody: FlowPreview;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    includeHeader?: string;
    invisibleToOwner?: boolean;
    jobId?: string;
    requestBody: FlowPreview;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      includeHeader?: string;
      invisibleToOwner?: boolean;
      jobId?: string;
      requestBody: FlowPreview;
      workspace: string;
      }

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` invisibleToOwner?: boolean

        make the run invisible to the the script owner (default false)

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### requestBody: FlowPreview

        preview

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job created

- ##### /w/{workspace}/jobs/run_wait_result/f/{path}: {
  post: {
  req: {
  includeHeader?: string;
  jobId?: string;
  path: string;
  queueLimit?: string;
  requestBody: ScriptArgs;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### post: {
    req: {
    includeHeader?: string;
    jobId?: string;
    path: string;
    queueLimit?: string;
    requestBody: ScriptArgs;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      includeHeader?: string;
      jobId?: string;
      path: string;
      queueLimit?: string;
      requestBody: ScriptArgs;
      workspace: string;
      }

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### path: string

      - ##### `Optional` queueLimit?: string

        The maximum size of the queue for which the request would get rejected if that job would push it above that limit

      - ##### requestBody: ScriptArgs

        script args

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        job result

- ##### /w/{workspace}/jobs/run_wait_result/p/{path}: {
  get: {
  req: {
  cacheTtl?: string;
  includeHeader?: string;
  jobId?: string;
  parentJob?: string;
  path: string;
  payload?: string;
  queueLimit?: string;
  tag?: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  post: {
  req: {
  cacheTtl?: string;
  includeHeader?: string;
  jobId?: string;
  parentJob?: string;
  path: string;
  queueLimit?: string;
  requestBody: ScriptArgs;
  tag?: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    cacheTtl?: string;
    includeHeader?: string;
    jobId?: string;
    parentJob?: string;
    path: string;
    payload?: string;
    queueLimit?: string;
    tag?: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      cacheTtl?: string;
      includeHeader?: string;
      jobId?: string;
      parentJob?: string;
      path: string;
      payload?: string;
      queueLimit?: string;
      tag?: string;
      workspace: string;
      }

      - ##### `Optional` cacheTtl?: string

        Override the cache time to live (in seconds). Can not be used to disable caching, only override with a new cache ttl

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### path: string

      - ##### `Optional` payload?: string

        The base64 encoded payload that has been encoded as a JSON. e.g how to encode such payload encodeURIComponent `encodeURIComponent(btoa(JSON.stringify({a: 2})))`

      - ##### `Optional` queueLimit?: string

        The maximum size of the queue for which the request would get rejected if that job would push it above that limit

      - ##### `Optional` tag?: string

        Override the tag to use

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        job result

  - ##### post: {
    req: {
    cacheTtl?: string;
    includeHeader?: string;
    jobId?: string;
    parentJob?: string;
    path: string;
    queueLimit?: string;
    requestBody: ScriptArgs;
    tag?: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      cacheTtl?: string;
      includeHeader?: string;
      jobId?: string;
      parentJob?: string;
      path: string;
      queueLimit?: string;
      requestBody: ScriptArgs;
      tag?: string;
      workspace: string;
      }

      - ##### `Optional` cacheTtl?: string

        Override the cache time to live (in seconds). Can not be used to disable caching, only override with a new cache ttl

      - ##### `Optional` includeHeader?: string

        List of headers's keys (separated with ',') whove value are added to the args Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key

      - ##### `Optional` jobId?: string

        The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)

      - ##### `Optional` parentJob?: string

        The parent job that is at the origin and responsible for the execution of this script if any

      - ##### path: string

      - ##### `Optional` queueLimit?: string

        The maximum size of the queue for which the request would get rejected if that job would push it above that limit

      - ##### requestBody: ScriptArgs

        script args

      - ##### `Optional` tag?: string

        Override the tag to use

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        job result

- ##### /w/{workspace}/jobs/workflow_as_code/{job_id}/{entrypoint}: {
  post: {
  req: {
  entrypoint: string;
  jobId: string;
  requestBody: WorkflowTask;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    entrypoint: string;
    jobId: string;
    requestBody: WorkflowTask;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      entrypoint: string;
      jobId: string;
      requestBody: WorkflowTask;
      workspace: string;
      }

      - ##### entrypoint: string

      - ##### jobId: string

      - ##### requestBody: WorkflowTask

        preview

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job created

- ##### /w/{workspace}/jobs_u/cancel/{id}/{resume_id}/{signature}: {
  get: {
  req: {
  approver?: string;
  id: string;
  resumeId: number;
  signature: string;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  post: {
  req: {
  approver?: string;
  id: string;
  requestBody: {
  [key: string]: unknown;
  };
  resumeId: number;
  signature: string;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### get: {
    req: {
    approver?: string;
    id: string;
    resumeId: number;
    signature: string;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      approver?: string;
      id: string;
      resumeId: number;
      signature: string;
      workspace: string;
      }

      - ##### `Optional` approver?: string

      - ##### id: string

      - ##### resumeId: number

      - ##### signature: string

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job canceled

  - ##### post: {
    req: {
    approver?: string;
    id: string;
    requestBody: {
    [key: string]: unknown;
    };
    resumeId: number;
    signature: string;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      approver?: string;
      id: string;
      requestBody: {
      [key: string]: unknown;
      };
      resumeId: number;
      signature: string;
      workspace: string;
      }

      - ##### `Optional` approver?: string

      - ##### id: string

      - ##### requestBody: {
        [key: string]: unknown;
        }

        - ##### [key: string]: unknown

      - ##### resumeId: number

      - ##### signature: string

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job canceled

- ##### /w/{workspace}/jobs_u/completed/get/{id}: {
  get: {
  req: {
  id: string;
  workspace: string;
  };
  res: {
  200: CompletedJob;
  };
  };
  }

  - ##### get: {
    req: {
    id: string;
    workspace: string;
    };
    res: {
    200: CompletedJob;
    };
    }

    - ##### req: {
      id: string;
      workspace: string;
      }

      - ##### id: string

      - ##### workspace: string

    - ##### res: {
      200: CompletedJob;
      }

      - ##### 200: CompletedJob

        job details

- ##### /w/{workspace}/jobs_u/completed/get_result/{id}: {
  get: {
  req: {
  id: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    id: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      id: string;
      workspace: string;
      }

      - ##### id: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        result

- ##### /w/{workspace}/jobs_u/completed/get_result_maybe/{id}: {
  get: {
  req: {
  getStarted?: boolean;
  id: string;
  workspace: string;
  };
  res: {
  200: {
  completed: boolean;
  result: unknown;
  started?: boolean;
  success?: boolean;
  };
  };
  };
  }

  - ##### get: {
    req: {
    getStarted?: boolean;
    id: string;
    workspace: string;
    };
    res: {
    200: {
    completed: boolean;
    result: unknown;
    started?: boolean;
    success?: boolean;
    };
    };
    }

    - ##### req: {
      getStarted?: boolean;
      id: string;
      workspace: string;
      }

      - ##### `Optional` getStarted?: boolean

      - ##### id: string

      - ##### workspace: string

    - ##### res: {
      200: {
      completed: boolean;
      result: unknown;
      started?: boolean;
      success?: boolean;
      };
      }

      - ##### 200: {
        completed: boolean;
        result: unknown;
        started?: boolean;
        success?: boolean;
        }

        result

        - ##### completed: boolean

        - ##### result: unknown

        - ##### `Optional` started?: boolean

        - ##### `Optional` success?: boolean

- ##### /w/{workspace}/jobs_u/get/{id}: {
  get: {
  req: {
  id: string;
  noLogs?: boolean;
  workspace: string;
  };
  res: {
  200: Job;
  };
  };
  }

  - ##### get: {
    req: {
    id: string;
    noLogs?: boolean;
    workspace: string;
    };
    res: {
    200: Job;
    };
    }

    - ##### req: {
      id: string;
      noLogs?: boolean;
      workspace: string;
      }

      - ##### id: string

      - ##### `Optional` noLogs?: boolean

      - ##### workspace: string

    - ##### res: {
      200: Job;
      }

      - ##### 200: Job

        job details

- ##### /w/{workspace}/jobs_u/get_flow/{id}/{resume_id}/{signature}: {
  get: {
  req: {
  approver?: string;
  id: string;
  resumeId: number;
  signature: string;
  workspace: string;
  };
  res: {
  200: {
  approvers: {
  approver: string;
  resume_id: number;
  }[];
  job: Job;
  };
  };
  };
  }

  - ##### get: {
    req: {
    approver?: string;
    id: string;
    resumeId: number;
    signature: string;
    workspace: string;
    };
    res: {
    200: {
    approvers: {
    approver: string;
    resume_id: number;
    }[];
    job: Job;
    };
    };
    }

    - ##### req: {
      approver?: string;
      id: string;
      resumeId: number;
      signature: string;
      workspace: string;
      }

      - ##### `Optional` approver?: string

      - ##### id: string

      - ##### resumeId: number

      - ##### signature: string

      - ##### workspace: string

    - ##### res: {
      200: {
      approvers: {
      approver: string;
      resume_id: number;
      }[];
      job: Job;
      };
      }

      - ##### 200: {
        approvers: {
        approver: string;
        resume_id: number;
        }[];
        job: Job;
        }

        parent flow details

        - ##### approvers: {
          approver: string;
          resume_id: number;
          }[]

        - ##### job: Job

- ##### /w/{workspace}/jobs_u/get_flow_debug_info/{id}: {
  get: {
  req: {
  id: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    id: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      id: string;
      workspace: string;
      }

      - ##### id: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        flow debug info details

- ##### /w/{workspace}/jobs_u/get_log_file/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        job log

- ##### /w/{workspace}/jobs_u/get_logs/{id}: {
  get: {
  req: {
  id: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    id: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      id: string;
      workspace: string;
      }

      - ##### id: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        job details

- ##### /w/{workspace}/jobs_u/get_root_job_id/{id}: {
  get: {
  req: {
  id: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    id: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      id: string;
      workspace: string;
      }

      - ##### id: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        get root job id

- ##### /w/{workspace}/jobs_u/getupdate/{id}: {
  get: {
  req: {
  id: string;
  logOffset?: number;
  running?: boolean;
  workspace: string;
  };
  res: {
  200: {
  completed?: boolean;
  flow_status?: WorkflowStatusRecord;
  log_offset?: number;
  mem_peak?: number;
  new_logs?: string;
  running?: boolean;
  };
  };
  };
  }

  - ##### get: {
    req: {
    id: string;
    logOffset?: number;
    running?: boolean;
    workspace: string;
    };
    res: {
    200: {
    completed?: boolean;
    flow_status?: WorkflowStatusRecord;
    log_offset?: number;
    mem_peak?: number;
    new_logs?: string;
    running?: boolean;
    };
    };
    }

    - ##### req: {
      id: string;
      logOffset?: number;
      running?: boolean;
      workspace: string;
      }

      - ##### id: string

      - ##### `Optional` logOffset?: number

      - ##### `Optional` running?: boolean

      - ##### workspace: string

    - ##### res: {
      200: {
      completed?: boolean;
      flow_status?: WorkflowStatusRecord;
      log_offset?: number;
      mem_peak?: number;
      new_logs?: string;
      running?: boolean;
      };
      }

      - ##### 200: {
        completed?: boolean;
        flow_status?: WorkflowStatusRecord;
        log_offset?: number;
        mem_peak?: number;
        new_logs?: string;
        running?: boolean;
        }

        job details

        - ##### `Optional` completed?: boolean

        - ##### `Optional` flow_status?: WorkflowStatusRecord

        - ##### `Optional` log_offset?: number

        - ##### `Optional` mem_peak?: number

        - ##### `Optional` new_logs?: string

        - ##### `Optional` running?: boolean

- ##### /w/{workspace}/jobs_u/queue/cancel/{id}: {
  post: {
  req: {
  id: string;
  requestBody: {
  reason?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    id: string;
    requestBody: {
    reason?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      id: string;
      requestBody: {
      reason?: string;
      };
      workspace: string;
      }

      - ##### id: string

      - ##### requestBody: {
        reason?: string;
        }

        reason

        - ##### `Optional` reason?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        job canceled

- ##### /w/{workspace}/jobs_u/queue/cancel_persistent/{path}: {
  post: {
  req: {
  path: string;
  requestBody: {
  reason?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: {
    reason?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: {
      reason?: string;
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: {
        reason?: string;
        }

        reason

        - ##### `Optional` reason?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        persistent job scaled down to zero

- ##### /w/{workspace}/jobs_u/queue/force_cancel/{id}: {
  post: {
  req: {
  id: string;
  requestBody: {
  reason?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    id: string;
    requestBody: {
    reason?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      id: string;
      requestBody: {
      reason?: string;
      };
      workspace: string;
      }

      - ##### id: string

      - ##### requestBody: {
        reason?: string;
        }

        reason

        - ##### `Optional` reason?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        job canceled

- ##### /w/{workspace}/jobs_u/resume/{id}/{resume_id}/{signature}: {
  get: {
  req: {
  approver?: string;
  id: string;
  payload?: string;
  resumeId: number;
  signature: string;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  post: {
  req: {
  approver?: string;
  id: string;
  requestBody: {
  [key: string]: unknown;
  };
  resumeId: number;
  signature: string;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### get: {
    req: {
    approver?: string;
    id: string;
    payload?: string;
    resumeId: number;
    signature: string;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      approver?: string;
      id: string;
      payload?: string;
      resumeId: number;
      signature: string;
      workspace: string;
      }

      - ##### `Optional` approver?: string

      - ##### id: string

      - ##### `Optional` payload?: string

        The base64 encoded payload that has been encoded as a JSON. e.g how to encode such payload encodeURIComponent `encodeURIComponent(btoa(JSON.stringify({a: 2})))`

      - ##### resumeId: number

      - ##### signature: string

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job resumed

  - ##### post: {
    req: {
    approver?: string;
    id: string;
    requestBody: {
    [key: string]: unknown;
    };
    resumeId: number;
    signature: string;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      approver?: string;
      id: string;
      requestBody: {
      [key: string]: unknown;
      };
      resumeId: number;
      signature: string;
      workspace: string;
      }

      - ##### `Optional` approver?: string

      - ##### id: string

      - ##### requestBody: {
        [key: string]: unknown;
        }

        - ##### [key: string]: unknown

      - ##### resumeId: number

      - ##### signature: string

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        job resumed

- ##### /w/{workspace}/oauth/connect_slack_callback: {
  post: {
  req: {
  requestBody: {
  code: string;
  state: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    code: string;
    state: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      code: string;
      state: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        code: string;
        state: string;
        }

        code endpoint

        - ##### code: string

        - ##### state: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        slack token

- ##### /w/{workspace}/oauth/create_account: {
  post: {
  req: {
  requestBody: {
  client: string;
  expires_in: number;
  refresh_token?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    client: string;
    expires_in: number;
    refresh_token?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      client: string;
      expires_in: number;
      refresh_token?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        client: string;
        expires_in: number;
        refresh_token?: string;
        }

        code endpoint

        - ##### client: string

        - ##### expires_in: number

        - ##### `Optional` refresh_token?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        account set

- ##### /w/{workspace}/oauth/disconnect/{id}: {
  post: {
  req: {
  id: number;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    id: number;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      id: number;
      workspace: string;
      }

      - ##### id: number

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        disconnected client

- ##### /w/{workspace}/oauth/disconnect_slack: {
  post: {
  req: {
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        disconnected slack

- ##### /w/{workspace}/oauth/refresh_token/{id}: {
  post: {
  req: {
  id: number;
  requestBody: {
  path: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    id: number;
    requestBody: {
    path: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      id: number;
      requestBody: {
      path: string;
      };
      workspace: string;
      }

      - ##### id: number

      - ##### requestBody: {
        path: string;
        }

        variable path

        - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        token refreshed

- ##### /w/{workspace}/oidc/token/{audience}: {
  post: {
  req: {
  audience: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    audience: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      audience: string;
      workspace: string;
      }

      - ##### audience: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        new oidc token

- ##### /w/{workspace}/raw_apps/create: {
  post: {
  req: {
  requestBody: {
  path: string;
  summary: string;
  value: string;
  };
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    path: string;
    summary: string;
    value: string;
    };
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: {
      path: string;
      summary: string;
      value: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        path: string;
        summary: string;
        value: string;
        }

        new raw app

        - ##### path: string

        - ##### summary: string

        - ##### value: string

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        raw app created

- ##### /w/{workspace}/raw_apps/delete/{path}: {
  delete: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        app deleted

- ##### /w/{workspace}/raw_apps/exists/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        app exists

- ##### /w/{workspace}/raw_apps/list: {
  get: {
  req: {
  createdBy?: string;
  orderDesc?: boolean;
  page?: number;
  pathExact?: string;
  pathStart?: string;
  perPage?: number;
  starredOnly?: boolean;
  workspace: string;
  };
  res: {
  200: ListableRawApp[];
  };
  };
  }

  - ##### get: {
    req: {
    createdBy?: string;
    orderDesc?: boolean;
    page?: number;
    pathExact?: string;
    pathStart?: string;
    perPage?: number;
    starredOnly?: boolean;
    workspace: string;
    };
    res: {
    200: ListableRawApp[];
    };
    }

    - ##### req: {
      createdBy?: string;
      orderDesc?: boolean;
      page?: number;
      pathExact?: string;
      pathStart?: string;
      perPage?: number;
      starredOnly?: boolean;
      workspace: string;
      }

      - ##### `Optional` createdBy?: string

        mask to filter exact matching user creator

      - ##### `Optional` orderDesc?: boolean

        order by desc order (default true)

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` pathExact?: string

        mask to filter exact matching path

      - ##### `Optional` pathStart?: string

        mask to filter matching starting path

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` starredOnly?: boolean

        (default false) show only the starred items

      - ##### workspace: string

    - ##### res: {
      200: ListableRawApp[];
      }

      - ##### 200: ListableRawApp[]

        All raw apps

- ##### /w/{workspace}/raw_apps/update/{path}: {
  post: {
  req: {
  path: string;
  requestBody: {
  path?: string;
  summary?: string;
  value?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: {
    path?: string;
    summary?: string;
    value?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: {
      path?: string;
      summary?: string;
      value?: string;
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: {
        path?: string;
        summary?: string;
        value?: string;
        }

        updateraw app

        - ##### `Optional` path?: string

        - ##### `Optional` summary?: string

        - ##### `Optional` value?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        app updated

- ##### /w/{workspace}/resources/create: {
  post: {
  req: {
  requestBody: CreateResource;
  updateIfExists?: boolean;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: CreateResource;
    updateIfExists?: boolean;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: CreateResource;
      updateIfExists?: boolean;
      workspace: string;
      }

      - ##### requestBody: CreateResource

        new resource

      - ##### `Optional` updateIfExists?: boolean

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        resource created

- ##### /w/{workspace}/resources/delete/{path}: {
  delete: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        resource deleted

- ##### /w/{workspace}/resources/exists/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        does resource exists

- ##### /w/{workspace}/resources/get/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: Resource;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: Resource;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: Resource;
      }

      - ##### 200: Resource

        resource

- ##### /w/{workspace}/resources/get_value/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        resource value

- ##### /w/{workspace}/resources/get_value_interpolated/{path}: {
  get: {
  req: {
  jobId?: string;
  path: string;
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### get: {
    req: {
    jobId?: string;
    path: string;
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      jobId?: string;
      path: string;
      workspace: string;
      }

      - ##### `Optional` jobId?: string

        job id

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        resource value

- ##### /w/{workspace}/resources/list: {
  get: {
  req: {
  page?: number;
  perPage?: number;
  resourceType?: string;
  resourceTypeExclude?: string;
  workspace: string;
  };
  res: {
  200: ListableResource[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    perPage?: number;
    resourceType?: string;
    resourceTypeExclude?: string;
    workspace: string;
    };
    res: {
    200: ListableResource[];
    };
    }

    - ##### req: {
      page?: number;
      perPage?: number;
      resourceType?: string;
      resourceTypeExclude?: string;
      workspace: string;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` resourceType?: string

        resource_types to list from, separated by ',',

      - ##### `Optional` resourceTypeExclude?: string

        resource_types to not list from, separated by ',',

      - ##### workspace: string

    - ##### res: {
      200: ListableResource[];
      }

      - ##### 200: ListableResource[]

        resource list

- ##### /w/{workspace}/resources/list_names/{name}: {
  get: {
  req: {
  name: string;
  workspace: string;
  };
  res: {
  200: {
  name: string;
  path: string;
  }[];
  };
  };
  }

  - ##### get: {
    req: {
    name: string;
    workspace: string;
    };
    res: {
    200: {
    name: string;
    path: string;
    }[];
    };
    }

    - ##### req: {
      name: string;
      workspace: string;
      }

      - ##### name: string

      - ##### workspace: string

    - ##### res: {
      200: {
      name: string;
      path: string;
      }[];
      }

      - ##### 200: {
        name: string;
        path: string;
        }[]

        resource list names

- ##### /w/{workspace}/resources/list_search: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  path: string;
  value: unknown;
  }[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    path: string;
    value: unknown;
    }[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      path: string;
      value: unknown;
      }[];
      }

      - ##### 200: {
        path: string;
        value: unknown;
        }[]

        resource list

- ##### /w/{workspace}/resources/type/create: {
  post: {
  req: {
  requestBody: ResourceType;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: ResourceType;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: ResourceType;
      workspace: string;
      }

      - ##### requestBody: ResourceType

        new resource_type

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        resource_type created

- ##### /w/{workspace}/resources/type/delete/{path}: {
  delete: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        resource_type deleted

- ##### /w/{workspace}/resources/type/exists/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        does resource_type exist

- ##### /w/{workspace}/resources/type/get/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: ResourceType;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: ResourceType;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: ResourceType;
      }

      - ##### 200: ResourceType

        resource_type deleted

- ##### /w/{workspace}/resources/type/list: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: ResourceType[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: ResourceType[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: ResourceType[];
      }

      - ##### 200: ResourceType[]

        resource_type list

- ##### /w/{workspace}/resources/type/listnames: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: string[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: string[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        resource_type list

- ##### /w/{workspace}/resources/type/update/{path}: {
  post: {
  req: {
  path: string;
  requestBody: EditResourceType;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: EditResourceType;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: EditResourceType;
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: EditResourceType

        updated resource_type

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        resource_type updated

- ##### /w/{workspace}/resources/update/{path}: {
  post: {
  req: {
  path: string;
  requestBody: EditResource;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: EditResource;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: EditResource;
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: EditResource

        updated resource

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        resource updated

- ##### /w/{workspace}/resources/update_value/{path}: {
  post: {
  req: {
  path: string;
  requestBody: {
  value?: unknown;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: {
    value?: unknown;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: {
      value?: unknown;
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: {
        value?: unknown;
        }

        updated resource

        - ##### `Optional` value?: unknown

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        resource value updated

- ##### /w/{workspace}/schedules/create: {
  post: {
  req: {
  requestBody: NewSchedule;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: NewSchedule;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: NewSchedule;
      workspace: string;
      }

      - ##### requestBody: NewSchedule

        new schedule

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        schedule created

- ##### /w/{workspace}/schedules/delete/{path}: {
  delete: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        schedule deleted

- ##### /w/{workspace}/schedules/exists/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        schedule exists

- ##### /w/{workspace}/schedules/get/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: Schedule;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: Schedule;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: Schedule;
      }

      - ##### 200: Schedule

        schedule deleted

- ##### /w/{workspace}/schedules/list: {
  get: {
  req: {
  args?: string;
  isFlow?: boolean;
  page?: number;
  path?: string;
  perPage?: number;
  workspace: string;
  };
  res: {
  200: Schedule[];
  };
  };
  }

  - ##### get: {
    req: {
    args?: string;
    isFlow?: boolean;
    page?: number;
    path?: string;
    perPage?: number;
    workspace: string;
    };
    res: {
    200: Schedule[];
    };
    }

    - ##### req: {
      args?: string;
      isFlow?: boolean;
      page?: number;
      path?: string;
      perPage?: number;
      workspace: string;
      }

      - ##### `Optional` args?: string

        filter on jobs containing those args as a json subset (@> in postgres)

      - ##### `Optional` isFlow?: boolean

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` path?: string

        filter by path

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### workspace: string

    - ##### res: {
      200: Schedule[];
      }

      - ##### 200: Schedule[]

        schedule list

- ##### /w/{workspace}/schedules/list_with_jobs: {
  get: {
  req: {
  page?: number;
  perPage?: number;
  workspace: string;
  };
  res: {
  200: ScheduleWJobs[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    perPage?: number;
    workspace: string;
    };
    res: {
    200: ScheduleWJobs[];
    };
    }

    - ##### req: {
      page?: number;
      perPage?: number;
      workspace: string;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### workspace: string

    - ##### res: {
      200: ScheduleWJobs[];
      }

      - ##### 200: ScheduleWJobs[]

        schedule list

- ##### /w/{workspace}/schedules/setdefaulthandler: {
  post: {
  req: {
  requestBody: {
  extra_args?: {
  [key: string]: unknown;
  };
  handler_type: "error" | "recovery";
  number_of_occurence?: number;
  number_of_occurence_exact?: boolean;
  override_existing: boolean;
  path?: string;
  workspace_handler_muted?: boolean;
  };
  workspace: string;
  };
  res: {
  201: unknown;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    extra_args?: {
    [key: string]: unknown;
    };
    handler_type: "error" | "recovery";
    number_of_occurence?: number;
    number_of_occurence_exact?: boolean;
    override_existing: boolean;
    path?: string;
    workspace_handler_muted?: boolean;
    };
    workspace: string;
    };
    res: {
    201: unknown;
    };
    }

    - ##### req: {
      requestBody: {
      extra_args?: {
      [key: string]: unknown;
      };
      handler_type: "error" | "recovery";
      number_of_occurence?: number;
      number_of_occurence_exact?: boolean;
      override_existing: boolean;
      path?: string;
      workspace_handler_muted?: boolean;
      };
      workspace: string;
      }

      - ##### requestBody: {
        extra_args?: {
        [key: string]: unknown;
        };
        handler_type: "error" | "recovery";
        number_of_occurence?: number;
        number_of_occurence_exact?: boolean;
        override_existing: boolean;
        path?: string;
        workspace_handler_muted?: boolean;
        }

        Handler description

        - ##### `Optional` extra_args?: {
          [key: string]: unknown;
          }

          - ##### [key: string]: unknown

        - ##### handler_type: "error" | "recovery"

        - ##### `Optional` number_of_occurence?: number

        - ##### `Optional` number_of_occurence_exact?: boolean

        - ##### override_existing: boolean

        - ##### `Optional` path?: string

        - ##### `Optional` workspace_handler_muted?: boolean

      - ##### workspace: string

    - ##### res: {
      201: unknown;
      }

      - ##### 201: unknown

        default error handler set

- ##### /w/{workspace}/schedules/setenabled/{path}: {
  post: {
  req: {
  path: string;
  requestBody: {
  enabled: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: {
    enabled: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: {
      enabled: boolean;
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: {
        enabled: boolean;
        }

        updated schedule enable

        - ##### enabled: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        schedule enabled set

- ##### /w/{workspace}/schedules/update/{path}: {
  post: {
  req: {
  path: string;
  requestBody: EditSchedule;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: EditSchedule;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: EditSchedule;
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: EditSchedule

        updated schedule

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        schedule updated

- ##### /w/{workspace}/scripts/archive/h/{hash}: {
  post: {
  req: {
  hash: string;
  workspace: string;
  };
  res: {
  200: Script;
  };
  };
  }

  - ##### post: {
    req: {
    hash: string;
    workspace: string;
    };
    res: {
    200: Script;
    };
    }

    - ##### req: {
      hash: string;
      workspace: string;
      }

      - ##### hash: string

      - ##### workspace: string

    - ##### res: {
      200: Script;
      }

      - ##### 200: Script

        script details

- ##### /w/{workspace}/scripts/archive/p/{path}: {
  post: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        script archived

- ##### /w/{workspace}/scripts/create: {
  post: {
  req: {
  requestBody: NewScript;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: NewScript;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: NewScript;
      workspace: string;
      }

      - ##### requestBody: NewScript

        Partially filled script

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        script created

- ##### /w/{workspace}/scripts/delete/h/{hash}: {
  post: {
  req: {
  hash: string;
  workspace: string;
  };
  res: {
  200: Script;
  };
  };
  }

  - ##### post: {
    req: {
    hash: string;
    workspace: string;
    };
    res: {
    200: Script;
    };
    }

    - ##### req: {
      hash: string;
      workspace: string;
      }

      - ##### hash: string

      - ##### workspace: string

    - ##### res: {
      200: Script;
      }

      - ##### 200: Script

        script details

- ##### /w/{workspace}/scripts/delete/p/{path}: {
  post: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        script path

- ##### /w/{workspace}/scripts/deployment_status/h/{hash}: {
  get: {
  req: {
  hash: string;
  workspace: string;
  };
  res: {
  200: {
  lock?: string;
  lock_error_logs?: string;
  };
  };
  };
  }

  - ##### get: {
    req: {
    hash: string;
    workspace: string;
    };
    res: {
    200: {
    lock?: string;
    lock_error_logs?: string;
    };
    };
    }

    - ##### req: {
      hash: string;
      workspace: string;
      }

      - ##### hash: string

      - ##### workspace: string

    - ##### res: {
      200: {
      lock?: string;
      lock_error_logs?: string;
      };
      }

      - ##### 200: {
        lock?: string;
        lock_error_logs?: string;
        }

        script details

        - ##### `Optional` lock?: string

        - ##### `Optional` lock_error_logs?: string

- ##### /w/{workspace}/scripts/exists/p/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        does it exists

- ##### /w/{workspace}/scripts/get/draft/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: NewScriptWithDraft;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: NewScriptWithDraft;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: NewScriptWithDraft;
      }

      - ##### 200: NewScriptWithDraft

        script details

- ##### /w/{workspace}/scripts/get/h/{hash}: {
  get: {
  req: {
  hash: string;
  workspace: string;
  };
  res: {
  200: Script;
  };
  };
  }

  - ##### get: {
    req: {
    hash: string;
    workspace: string;
    };
    res: {
    200: Script;
    };
    }

    - ##### req: {
      hash: string;
      workspace: string;
      }

      - ##### hash: string

      - ##### workspace: string

    - ##### res: {
      200: Script;
      }

      - ##### 200: Script

        script details

- ##### /w/{workspace}/scripts/get/p/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: Script;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: Script;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: Script;
      }

      - ##### 200: Script

        script details

- ##### /w/{workspace}/scripts/history/p/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: ScriptHistory[];
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: ScriptHistory[];
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: ScriptHistory[];
      }

      - ##### 200: ScriptHistory[]

        script history

- ##### /w/{workspace}/scripts/history_update/h/{hash}/p/{path}: {
  post: {
  req: {
  hash: string;
  path: string;
  requestBody: {
  deployment_msg?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    hash: string;
    path: string;
    requestBody: {
    deployment_msg?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      hash: string;
      path: string;
      requestBody: {
      deployment_msg?: string;
      };
      workspace: string;
      }

      - ##### hash: string

      - ##### path: string

      - ##### requestBody: {
        deployment_msg?: string;
        }

        Script deployment message

        - ##### `Optional` deployment_msg?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        success

- ##### /w/{workspace}/scripts/list: {
  get: {
  req: {
  createdBy?: string;
  firstParentHash?: string;
  hideWithoutMain?: boolean;
  isTemplate?: boolean;
  kinds?: string;
  lastParentHash?: string;
  orderDesc?: boolean;
  page?: number;
  parentHash?: string;
  pathExact?: string;
  pathStart?: string;
  perPage?: number;
  showArchived?: boolean;
  starredOnly?: boolean;
  workspace: string;
  };
  res: {
  200: Script[];
  };
  };
  }

  - ##### get: {
    req: {
    createdBy?: string;
    firstParentHash?: string;
    hideWithoutMain?: boolean;
    isTemplate?: boolean;
    kinds?: string;
    lastParentHash?: string;
    orderDesc?: boolean;
    page?: number;
    parentHash?: string;
    pathExact?: string;
    pathStart?: string;
    perPage?: number;
    showArchived?: boolean;
    starredOnly?: boolean;
    workspace: string;
    };
    res: {
    200: Script[];
    };
    }

    - ##### req: {
      createdBy?: string;
      firstParentHash?: string;
      hideWithoutMain?: boolean;
      isTemplate?: boolean;
      kinds?: string;
      lastParentHash?: string;
      orderDesc?: boolean;
      page?: number;
      parentHash?: string;
      pathExact?: string;
      pathStart?: string;
      perPage?: number;
      showArchived?: boolean;
      starredOnly?: boolean;
      workspace: string;
      }

      - ##### `Optional` createdBy?: string

        mask to filter exact matching user creator

      - ##### `Optional` firstParentHash?: string

        mask to filter scripts whom first direct parent has exact hash

      - ##### `Optional` hideWithoutMain?: boolean

        (default false) hide the scripts without an exported main function

      - ##### `Optional` isTemplate?: boolean

        (default regardless) if true show only the templates if false show only the non templates if not defined, show all regardless of if the script is a template

      - ##### `Optional` kinds?: string

        (default regardless) script kinds to filter, split by comma

      - ##### `Optional` lastParentHash?: string

        mask to filter scripts whom last parent in the chain has exact hash. Beware that each script stores only a limited number of parents. Hence the last parent hash for a script is not necessarily its top-most parent. To find the top-most parent you will have to jump from last to last hash until finding the parent

      - ##### `Optional` orderDesc?: boolean

        order by desc order (default true)

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` parentHash?: string

        is the hash present in the array of stored parent hashes for this script. The same warning applies than for last_parent_hash. A script only store a limited number of direct parent

      - ##### `Optional` pathExact?: string

        mask to filter exact matching path

      - ##### `Optional` pathStart?: string

        mask to filter matching starting path

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` showArchived?: boolean

        (default false) show also the archived files. when multiple archived hash share the same path, only the ones with the latest create_at are ed.

      - ##### `Optional` starredOnly?: boolean

        (default false) show only the starred items

      - ##### workspace: string

    - ##### res: {
      200: Script[];
      }

      - ##### 200: Script[]

        All scripts

- ##### /w/{workspace}/scripts/list_paths: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: string[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: string[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        list of script paths

- ##### /w/{workspace}/scripts/list_search: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  content: string;
  path: string;
  }[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    content: string;
    path: string;
    }[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      content: string;
      path: string;
      }[];
      }

      - ##### 200: {
        content: string;
        path: string;
        }[]

        script list

- ##### /w/{workspace}/scripts/raw/h/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        script content

- ##### /w/{workspace}/scripts/raw/p/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        script content

- ##### /w/{workspace}/scripts/toggle_workspace_error_handler/p/{path}: {
  post: {
  req: {
  path: string;
  requestBody: {
  muted?: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    path: string;
    requestBody: {
    muted?: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      requestBody: {
      muted?: boolean;
      };
      workspace: string;
      }

      - ##### path: string

      - ##### requestBody: {
        muted?: boolean;
        }

        Workspace error handler enabled

        - ##### `Optional` muted?: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        error handler toggled

- ##### /w/{workspace}/users/delete/{username}: {
  delete: {
  req: {
  username: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    username: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      username: string;
      workspace: string;
      }

      - ##### username: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        delete user

- ##### /w/{workspace}/users/is_owner/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        is owner

- ##### /w/{workspace}/users/list: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: User[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: User[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: User[];
      }

      - ##### 200: User[]

        user

- ##### /w/{workspace}/users/list_usage: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: UserUsage[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: UserUsage[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: UserUsage[];
      }

      - ##### 200: UserUsage[]

        user

- ##### /w/{workspace}/users/list_usernames: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: string[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: string[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        user

- ##### /w/{workspace}/users/update/{username}: {
  post: {
  req: {
  requestBody: EditWorkspaceUser;
  username: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: EditWorkspaceUser;
    username: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: EditWorkspaceUser;
      username: string;
      workspace: string;
      }

      - ##### requestBody: EditWorkspaceUser

        new user

      - ##### username: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        edited user

- ##### /w/{workspace}/users/username_to_email/{username}: {
  get: {
  req: {
  username: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    username: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      username: string;
      workspace: string;
      }

      - ##### username: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        email

- ##### /w/{workspace}/users/whoami: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: User;
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: User;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: User;
      }

      - ##### 200: User

        user

- ##### /w/{workspace}/users/whois/{username}: {
  get: {
  req: {
  username: string;
  workspace: string;
  };
  res: {
  200: User;
  };
  };
  }

  - ##### get: {
    req: {
    username: string;
    workspace: string;
    };
    res: {
    200: User;
    };
    }

    - ##### req: {
      username: string;
      workspace: string;
      }

      - ##### username: string

      - ##### workspace: string

    - ##### res: {
      200: User;
      }

      - ##### 200: User

        user

- ##### /w/{workspace}/users/{username}: {
  get: {
  req: {
  username: string;
  workspace: string;
  };
  res: {
  200: User;
  };
  };
  }

  - ##### get: {
    req: {
    username: string;
    workspace: string;
    };
    res: {
    200: User;
    };
    }

    - ##### req: {
      username: string;
      workspace: string;
      }

      - ##### username: string

      - ##### workspace: string

    - ##### res: {
      200: User;
      }

      - ##### 200: User

        user created

- ##### /w/{workspace}/variables/create: {
  post: {
  req: {
  alreadyEncrypted?: boolean;
  requestBody: CreateVariable;
  workspace: string;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    alreadyEncrypted?: boolean;
    requestBody: CreateVariable;
    workspace: string;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      alreadyEncrypted?: boolean;
      requestBody: CreateVariable;
      workspace: string;
      }

      - ##### `Optional` alreadyEncrypted?: boolean

      - ##### requestBody: CreateVariable

        new variable

      - ##### workspace: string

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        variable created

- ##### /w/{workspace}/variables/delete/{path}: {
  delete: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        variable deleted

- ##### /w/{workspace}/variables/encrypt: {
  post: {
  req: {
  requestBody: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: string;
      workspace: string;
      }

      - ##### requestBody: string

        new variable

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        encrypted value

- ##### /w/{workspace}/variables/exists/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        variable

- ##### /w/{workspace}/variables/get/{path}: {
  get: {
  req: {
  decryptSecret?: boolean;
  includeEncrypted?: boolean;
  path: string;
  workspace: string;
  };
  res: {
  200: ListableVariable;
  };
  };
  }

  - ##### get: {
    req: {
    decryptSecret?: boolean;
    includeEncrypted?: boolean;
    path: string;
    workspace: string;
    };
    res: {
    200: ListableVariable;
    };
    }

    - ##### req: {
      decryptSecret?: boolean;
      includeEncrypted?: boolean;
      path: string;
      workspace: string;
      }

      - ##### `Optional` decryptSecret?: boolean

        ask to decrypt secret if this variable is secret (if not secret no effect, default: true)

      - ##### `Optional` includeEncrypted?: boolean

        ask to include the encrypted value if secret and decrypt secret is not true (default: false)

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: ListableVariable;
      }

      - ##### 200: ListableVariable

        variable

- ##### /w/{workspace}/variables/get_value/{path}: {
  get: {
  req: {
  path: string;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    path: string;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      path: string;
      workspace: string;
      }

      - ##### path: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        variable

- ##### /w/{workspace}/variables/list: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: ListableVariable[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: ListableVariable[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: ListableVariable[];
      }

      - ##### 200: ListableVariable[]

        variable list

- ##### /w/{workspace}/variables/list_contextual: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: ContextualVariable[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: ContextualVariable[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: ContextualVariable[];
      }

      - ##### 200: ContextualVariable[]

        contextual variable list

- ##### /w/{workspace}/variables/update/{path}: {
  post: {
  req: {
  alreadyEncrypted?: boolean;
  path: string;
  requestBody: EditVariable;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    alreadyEncrypted?: boolean;
    path: string;
    requestBody: EditVariable;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      alreadyEncrypted?: boolean;
      path: string;
      requestBody: EditVariable;
      workspace: string;
      }

      - ##### `Optional` alreadyEncrypted?: boolean

      - ##### path: string

      - ##### requestBody: EditVariable

        updated variable

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        variable updated

- ##### /w/{workspace}/workspaces/add_user: {
  post: {
  req: {
  requestBody: {
  email: string;
  is_admin: boolean;
  operator: boolean;
  username?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    email: string;
    is_admin: boolean;
    operator: boolean;
    username?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      email: string;
      is_admin: boolean;
      operator: boolean;
      username?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        email: string;
        is_admin: boolean;
        operator: boolean;
        username?: string;
        }

        WorkspaceInvite

        - ##### email: string

        - ##### is_admin: boolean

        - ##### operator: boolean

        - ##### `Optional` username?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/archive: {
  post: {
  req: {
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/change_workspace_id: {
  post: {
  req: {
  requestBody?: {
  new_id?: string;
  new_name?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody?: {
    new_id?: string;
    new_name?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody?: {
      new_id?: string;
      new_name?: string;
      };
      workspace: string;
      }

      - ##### `Optional` requestBody?: {
        new_id?: string;
        new_name?: string;
        }

        - ##### `Optional` new_id?: string

        - ##### `Optional` new_name?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/change_workspace_name: {
  post: {
  req: {
  requestBody?: {
  new_name?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody?: {
    new_name?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody?: {
      new_name?: string;
      };
      workspace: string;
      }

      - ##### `Optional` requestBody?: {
        new_name?: string;
        }

        - ##### `Optional` new_name?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/default_app: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  default_app_path?: string;
  };
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    default_app_path?: string;
    };
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      default_app_path?: string;
      };
      }

      - ##### 200: {
        default_app_path?: string;
        }

        status

        - ##### `Optional` default_app_path?: string

- ##### /w/{workspace}/workspaces/default_scripts: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: WorkspaceDefaultScripts;
  };
  };
  post: {
  req: {
  requestBody?: WorkspaceDefaultScripts;
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: WorkspaceDefaultScripts;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: WorkspaceDefaultScripts;
      }

      - ##### 200: WorkspaceDefaultScripts

        status

  - ##### post: {
    req: {
    requestBody?: WorkspaceDefaultScripts;
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody?: WorkspaceDefaultScripts;
      workspace: string;
      }

      - ##### `Optional` requestBody?: WorkspaceDefaultScripts

        Workspace default app

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/delete_invite: {
  post: {
  req: {
  requestBody: {
  email: string;
  is_admin: boolean;
  operator: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    email: string;
    is_admin: boolean;
    operator: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      email: string;
      is_admin: boolean;
      operator: boolean;
      };
      workspace: string;
      }

      - ##### requestBody: {
        email: string;
        is_admin: boolean;
        operator: boolean;
        }

        WorkspaceInvite

        - ##### email: string

        - ##### is_admin: boolean

        - ##### operator: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/edit_auto_invite: {
  post: {
  req: {
  requestBody: {
  auto_add?: boolean;
  invite_all?: boolean;
  operator?: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    auto_add?: boolean;
    invite_all?: boolean;
    operator?: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      auto_add?: boolean;
      invite_all?: boolean;
      operator?: boolean;
      };
      workspace: string;
      }

      - ##### requestBody: {
        auto_add?: boolean;
        invite_all?: boolean;
        operator?: boolean;
        }

        WorkspaceInvite

        - ##### `Optional` auto_add?: boolean

        - ##### `Optional` invite_all?: boolean

        - ##### `Optional` operator?: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/edit_copilot_config: {
  post: {
  req: {
  requestBody: {
  code_completion_enabled: boolean;
  openai_resource_path?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    code_completion_enabled: boolean;
    openai_resource_path?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      code_completion_enabled: boolean;
      openai_resource_path?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        code_completion_enabled: boolean;
        openai_resource_path?: string;
        }

        WorkspaceCopilotConfig

        - ##### code_completion_enabled: boolean

        - ##### `Optional` openai_resource_path?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/edit_default_app: {
  post: {
  req: {
  requestBody: {
  default_app_path?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    default_app_path?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      default_app_path?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        default_app_path?: string;
        }

        Workspace default app

        - ##### `Optional` default_app_path?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/edit_deploy_to: {
  post: {
  req: {
  requestBody: {
  deploy_to?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    deploy_to?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      deploy_to?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        deploy_to?: string;
        }

        - ##### `Optional` deploy_to?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/edit_error_handler: {
  post: {
  req: {
  requestBody: {
  error_handler?: string;
  error_handler_extra_args?: ScriptArgs;
  error_handler_muted_on_cancel?: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    error_handler?: string;
    error_handler_extra_args?: ScriptArgs;
    error_handler_muted_on_cancel?: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      error_handler?: string;
      error_handler_extra_args?: ScriptArgs;
      error_handler_muted_on_cancel?: boolean;
      };
      workspace: string;
      }

      - ##### requestBody: {
        error_handler?: string;
        error_handler_extra_args?: ScriptArgs;
        error_handler_muted_on_cancel?: boolean;
        }

        WorkspaceErrorHandler

        - ##### `Optional` error_handler?: string

        - ##### `Optional` error_handler_extra_args?: ScriptArgs

        - ##### `Optional` error_handler_muted_on_cancel?: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/edit_git_sync_config: {
  post: {
  req: {
  requestBody: {
  git_sync_settings?: WorkspaceGitSyncSettings;
  };
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    git_sync_settings?: WorkspaceGitSyncSettings;
    };
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      requestBody: {
      git_sync_settings?: WorkspaceGitSyncSettings;
      };
      workspace: string;
      }

      - ##### requestBody: {
        git_sync_settings?: WorkspaceGitSyncSettings;
        }

        Workspace Git sync settings

        - ##### `Optional` git_sync_settings?: WorkspaceGitSyncSettings

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        status

- ##### /w/{workspace}/workspaces/edit_large_file_storage_config: {
  post: {
  req: {
  requestBody: {
  large_file_storage?: LargeFileStorage;
  };
  workspace: string;
  };
  res: {
  200: unknown;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    large_file_storage?: LargeFileStorage;
    };
    workspace: string;
    };
    res: {
    200: unknown;
    };
    }

    - ##### req: {
      requestBody: {
      large_file_storage?: LargeFileStorage;
      };
      workspace: string;
      }

      - ##### requestBody: {
        large_file_storage?: LargeFileStorage;
        }

        LargeFileStorage info

        - ##### `Optional` large_file_storage?: LargeFileStorage

      - ##### workspace: string

    - ##### res: {
      200: unknown;
      }

      - ##### 200: unknown

        status

- ##### /w/{workspace}/workspaces/edit_slack_command: {
  post: {
  req: {
  requestBody: {
  slack_command_script?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    slack_command_script?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      slack_command_script?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        slack_command_script?: string;
        }

        WorkspaceInvite

        - ##### `Optional` slack_command_script?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/edit_webhook: {
  post: {
  req: {
  requestBody: {
  webhook?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    webhook?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      webhook?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        webhook?: string;
        }

        WorkspaceWebhook

        - ##### `Optional` webhook?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/encryption_key: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  key: string;
  };
  };
  };
  post: {
  req: {
  requestBody: {
  new_key: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    key: string;
    };
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      key: string;
      };
      }

      - ##### 200: {
        key: string;
        }

        status

        - ##### key: string

  - ##### post: {
    req: {
    requestBody: {
    new_key: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      new_key: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        new_key: string;
        }

        New encryption key

        - ##### new_key: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/get_copilot_info: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  code_completion_enabled: boolean;
  exists_openai_resource_path: boolean;
  };
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    code_completion_enabled: boolean;
    exists_openai_resource_path: boolean;
    };
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      code_completion_enabled: boolean;
      exists_openai_resource_path: boolean;
      };
      }

      - ##### 200: {
        code_completion_enabled: boolean;
        exists_openai_resource_path: boolean;
        }

        status

        - ##### code_completion_enabled: boolean

        - ##### exists_openai_resource_path: boolean

- ##### /w/{workspace}/workspaces/get_deploy_to: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  deploy_to?: string;
  };
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    deploy_to?: string;
    };
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      deploy_to?: string;
      };
      }

      - ##### 200: {
        deploy_to?: string;
        }

        status

        - ##### `Optional` deploy_to?: string

- ##### /w/{workspace}/workspaces/get_large_file_storage_config: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: LargeFileStorage;
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: LargeFileStorage;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: LargeFileStorage;
      }

      - ##### 200: LargeFileStorage

        status

- ##### /w/{workspace}/workspaces/get_settings: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  auto_add?: boolean;
  auto_invite_domain?: string;
  auto_invite_operator?: boolean;
  automatic_billing: boolean;
  code_completion_enabled: boolean;
  customer_id?: string;
  default_app?: string;
  default_scripts?: WorkspaceDefaultScripts;
  deploy_to?: string;
  error_handler?: string;
  error_handler_extra_args?: ScriptArgs;
  error_handler_muted_on_cancel: boolean;
  git_sync?: WorkspaceGitSyncSettings;
  large_file_storage?: LargeFileStorage;
  openai_resource_path?: string;
  plan?: string;
  slack_command_script?: string;
  slack_name?: string;
  slack_team_id?: string;
  webhook?: string;
  workspace_id?: string;
  };
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    auto_add?: boolean;
    auto_invite_domain?: string;
    auto_invite_operator?: boolean;
    automatic_billing: boolean;
    code_completion_enabled: boolean;
    customer_id?: string;
    default_app?: string;
    default_scripts?: WorkspaceDefaultScripts;
    deploy_to?: string;
    error_handler?: string;
    error_handler_extra_args?: ScriptArgs;
    error_handler_muted_on_cancel: boolean;
    git_sync?: WorkspaceGitSyncSettings;
    large_file_storage?: LargeFileStorage;
    openai_resource_path?: string;
    plan?: string;
    slack_command_script?: string;
    slack_name?: string;
    slack_team_id?: string;
    webhook?: string;
    workspace_id?: string;
    };
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      auto_add?: boolean;
      auto_invite_domain?: string;
      auto_invite_operator?: boolean;
      automatic_billing: boolean;
      code_completion_enabled: boolean;
      customer_id?: string;
      default_app?: string;
      default_scripts?: WorkspaceDefaultScripts;
      deploy_to?: string;
      error_handler?: string;
      error_handler_extra_args?: ScriptArgs;
      error_handler_muted_on_cancel: boolean;
      git_sync?: WorkspaceGitSyncSettings;
      large_file_storage?: LargeFileStorage;
      openai_resource_path?: string;
      plan?: string;
      slack_command_script?: string;
      slack_name?: string;
      slack_team_id?: string;
      webhook?: string;
      workspace_id?: string;
      };
      }

      - ##### 200: {
        auto_add?: boolean;
        auto_invite_domain?: string;
        auto_invite_operator?: boolean;
        automatic_billing: boolean;
        code_completion_enabled: boolean;
        customer_id?: string;
        default_app?: string;
        default_scripts?: WorkspaceDefaultScripts;
        deploy_to?: string;
        error_handler?: string;
        error_handler_extra_args?: ScriptArgs;
        error_handler_muted_on_cancel: boolean;
        git_sync?: WorkspaceGitSyncSettings;
        large_file_storage?: LargeFileStorage;
        openai_resource_path?: string;
        plan?: string;
        slack_command_script?: string;
        slack_name?: string;
        slack_team_id?: string;
        webhook?: string;
        workspace_id?: string;
        }

        status

        - ##### `Optional` auto_add?: boolean

        - ##### `Optional` auto_invite_domain?: string

        - ##### `Optional` auto_invite_operator?: boolean

        - ##### automatic_billing: boolean

        - ##### code_completion_enabled: boolean

        - ##### `Optional` customer_id?: string

        - ##### `Optional` default_app?: string

        - ##### `Optional` default_scripts?: WorkspaceDefaultScripts

        - ##### `Optional` deploy_to?: string

        - ##### `Optional` error_handler?: string

        - ##### `Optional` error_handler_extra_args?: ScriptArgs

        - ##### error_handler_muted_on_cancel: boolean

        - ##### `Optional` git_sync?: WorkspaceGitSyncSettings

        - ##### `Optional` large_file_storage?: LargeFileStorage

        - ##### `Optional` openai_resource_path?: string

        - ##### `Optional` plan?: string

        - ##### `Optional` slack_command_script?: string

        - ##### `Optional` slack_name?: string

        - ##### `Optional` slack_team_id?: string

        - ##### `Optional` webhook?: string

        - ##### `Optional` workspace_id?: string

- ##### /w/{workspace}/workspaces/get_workspace_name: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/invite_user: {
  post: {
  req: {
  requestBody: {
  email: string;
  is_admin: boolean;
  operator: boolean;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    email: string;
    is_admin: boolean;
    operator: boolean;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      email: string;
      is_admin: boolean;
      operator: boolean;
      };
      workspace: string;
      }

      - ##### requestBody: {
        email: string;
        is_admin: boolean;
        operator: boolean;
        }

        WorkspaceInvite

        - ##### email: string

        - ##### is_admin: boolean

        - ##### operator: boolean

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/is_premium: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        status

- ##### /w/{workspace}/workspaces/leave: {
  post: {
  req: {
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/list_pending_invites: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: WorkspaceInvite[];
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: WorkspaceInvite[];
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: WorkspaceInvite[];
      }

      - ##### 200: WorkspaceInvite[]

        user

- ##### /w/{workspace}/workspaces/premium_info: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: {
  automatic_billing: boolean;
  premium: boolean;
  seats?: number;
  usage?: number;
  };
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: {
    automatic_billing: boolean;
    premium: boolean;
    seats?: number;
    usage?: number;
    };
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: {
      automatic_billing: boolean;
      premium: boolean;
      seats?: number;
      usage?: number;
      };
      }

      - ##### 200: {
        automatic_billing: boolean;
        premium: boolean;
        seats?: number;
        usage?: number;
        }

        status

        - ##### automatic_billing: boolean

        - ##### premium: boolean

        - ##### `Optional` seats?: number

        - ##### `Optional` usage?: number

- ##### /w/{workspace}/workspaces/run_slack_message_test_job: {
  post: {
  req: {
  requestBody: {
  channel?: string;
  hub_script_path?: string;
  test_msg?: string;
  };
  workspace: string;
  };
  res: {
  200: {
  job_uuid?: string;
  };
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    channel?: string;
    hub_script_path?: string;
    test_msg?: string;
    };
    workspace: string;
    };
    res: {
    200: {
    job_uuid?: string;
    };
    };
    }

    - ##### req: {
      requestBody: {
      channel?: string;
      hub_script_path?: string;
      test_msg?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        channel?: string;
        hub_script_path?: string;
        test_msg?: string;
        }

        path to hub script to run and its corresponding args

        - ##### `Optional` channel?: string

        - ##### `Optional` hub_script_path?: string

        - ##### `Optional` test_msg?: string

      - ##### workspace: string

    - ##### res: {
      200: {
      job_uuid?: string;
      };
      }

      - ##### 200: {
        job_uuid?: string;
        }

        status

        - ##### `Optional` job_uuid?: string

- ##### /w/{workspace}/workspaces/set_automatic_billing: {
  post: {
  req: {
  requestBody: {
  automatic_billing: boolean;
  seats?: number;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    automatic_billing: boolean;
    seats?: number;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      automatic_billing: boolean;
      seats?: number;
      };
      workspace: string;
      }

      - ##### requestBody: {
        automatic_billing: boolean;
        seats?: number;
        }

        automatic billing

        - ##### automatic_billing: boolean

        - ##### `Optional` seats?: number

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/set_environment_variable: {
  post: {
  req: {
  requestBody: {
  name: string;
  value?: string;
  };
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    name: string;
    value?: string;
    };
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      requestBody: {
      name: string;
      value?: string;
      };
      workspace: string;
      }

      - ##### requestBody: {
        name: string;
        value?: string;
        }

        Workspace default app

        - ##### name: string

        - ##### `Optional` value?: string

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /w/{workspace}/workspaces/usage: {
  get: {
  req: {
  workspace: string;
  };
  res: {
  200: number;
  };
  };
  }

  - ##### get: {
    req: {
    workspace: string;
    };
    res: {
    200: number;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: number;
      }

      - ##### 200: number

        usage

- ##### /workers/custom_tags: {
  get: {
  res: {
  200: string[];
  };
  };
  }

  - ##### get: {
    res: {
    200: string[];
    };
    }

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        list of custom tags

- ##### /workers/exists_worker_with_tag: {
  get: {
  req: {
  tag: string;
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    req: {
    tag: string;
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      tag: string;
      }

      - ##### tag: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        whether a worker with the tag exists

- ##### /workers/get_default_tags: {
  get: {
  res: {
  200: string[];
  };
  };
  }

  - ##### get: {
    res: {
    200: string[];
    };
    }

    - ##### res: {
      200: string[];
      }

      - ##### 200: string[]

        list of default tags

- ##### /workers/is_default_tags_per_workspace: {
  get: {
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    res: {
    200: boolean;
    };
    }

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        is the default tags per workspace

- ##### /workers/list: {
  get: {
  req: {
  page?: number;
  perPage?: number;
  pingSince?: number;
  };
  res: {
  200: WorkerPing[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    perPage?: number;
    pingSince?: number;
    };
    res: {
    200: WorkerPing[];
    };
    }

    - ##### req: {
      page?: number;
      perPage?: number;
      pingSince?: number;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

      - ##### `Optional` pingSince?: number

        number of seconds the worker must have had a last ping more recent of (default to 300)

    - ##### res: {
      200: WorkerPing[];
      }

      - ##### 200: WorkerPing[]

        a list of workers

- ##### /workers/queue_metrics: {
  get: {
  res: {
  200: {
  id: string;
  values: {
  created_at: string;
  value: number;
  }[];
  }[];
  };
  };
  }

  - ##### get: {
    res: {
    200: {
    id: string;
    values: {
    created_at: string;
    value: number;
    }[];
    }[];
    };
    }

    - ##### res: {
      200: {
      id: string;
      values: {
      created_at: string;
      value: number;
      }[];
      }[];
      }

      - ##### 200: {
        id: string;
        values: {
        created_at: string;
        value: number;
        }[];
        }[]

        metrics

- ##### /workspaces/allowed_domain_auto_invite: {
  get: {
  res: {
  200: boolean;
  };
  };
  }

  - ##### get: {
    res: {
    200: boolean;
    };
    }

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        domain allowed or not

- ##### /workspaces/create: {
  post: {
  req: {
  requestBody: CreateWorkspace;
  };
  res: {
  201: string;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: CreateWorkspace;
    };
    res: {
    201: string;
    };
    }

    - ##### req: {
      requestBody: CreateWorkspace;
      }

      - ##### requestBody: CreateWorkspace

        new token

    - ##### res: {
      201: string;
      }

      - ##### 201: string

        token created

- ##### /workspaces/delete/{workspace}: {
  delete: {
  req: {
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### delete: {
    req: {
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /workspaces/exists: {
  post: {
  req: {
  requestBody: {
  id: string;
  };
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    id: string;
    };
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      requestBody: {
      id: string;
      };
      }

      - ##### requestBody: {
        id: string;
        }

        id of workspace

        - ##### id: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        status

- ##### /workspaces/exists_username: {
  post: {
  req: {
  requestBody: {
  id: string;
  username: string;
  };
  };
  res: {
  200: boolean;
  };
  };
  }

  - ##### post: {
    req: {
    requestBody: {
    id: string;
    username: string;
    };
    };
    res: {
    200: boolean;
    };
    }

    - ##### req: {
      requestBody: {
      id: string;
      username: string;
      };
      }

      - ##### requestBody: {
        id: string;
        username: string;
        }

        - ##### id: string

        - ##### username: string

    - ##### res: {
      200: boolean;
      }

      - ##### 200: boolean

        status

- ##### /workspaces/list: {
  get: {
  res: {
  200: Workspace[];
  };
  };
  }

  - ##### get: {
    res: {
    200: Workspace[];
    };
    }

    - ##### res: {
      200: Workspace[];
      }

      - ##### 200: Workspace[]

        all workspaces

- ##### /workspaces/list_as_superadmin: {
  get: {
  req: {
  page?: number;
  perPage?: number;
  };
  res: {
  200: Workspace[];
  };
  };
  }

  - ##### get: {
    req: {
    page?: number;
    perPage?: number;
    };
    res: {
    200: Workspace[];
    };
    }

    - ##### req: {
      page?: number;
      perPage?: number;
      }

      - ##### `Optional` page?: number

        which page to return (start at 1, default 1)

      - ##### `Optional` perPage?: number

        number of items to return for a given page (default 30, max 100)

    - ##### res: {
      200: Workspace[];
      }

      - ##### 200: Workspace[]

        workspaces

- ##### /workspaces/unarchive/{workspace}: {
  post: {
  req: {
  workspace: string;
  };
  res: {
  200: string;
  };
  };
  }

  - ##### post: {
    req: {
    workspace: string;
    };
    res: {
    200: string;
    };
    }

    - ##### req: {
      workspace: string;
      }

      - ##### workspace: string

    - ##### res: {
      200: string;
      }

      - ##### 200: string

        status

- ##### /workspaces/users: {
  get: {
  res: {
  200: UserWorkspaceList;
  };
  };
  }

  - ##### get: {
    res: {
    200: UserWorkspaceList;
    };
    }

    - ##### res: {
      200: UserWorkspaceList;
      }

      - ##### 200: UserWorkspaceList

        workspace with associated username

- Defined in src/types.gen.ts:5153