@vertracloud/api-types 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payloads/v1/api-error.d.ts +2 -0
- package/payloads/v1/api-error.js +1 -0
- package/payloads/v1/api-error.js.map +1 -1
- package/payloads/v1/api-error.mjs +1 -0
- package/payloads/v1/index.js +1 -0
- package/payloads/v1/index.js.map +1 -1
- package/payloads/v1/index.mjs +1 -0
- package/payloads/v1/workspace.d.ts +1 -1
- package/payloads/v1/workspace.js.map +1 -1
- package/rest/v1/index.d.ts +1 -1
- package/rest/v1/workspace.d.ts +1 -9
- package/rest/v1/workspace.js.map +1 -1
- package/v1.d.ts +1 -1
- package/v1.js +1 -0
- package/v1.js.map +1 -1
- package/v1.mjs +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["workspace.ts"],"sourcesContent":["import type { ISODateString, SnowFlake, UserPlan } from \"../../v1\";\nimport type { APIApplication, APIDatabase } from \"./index\";\n\n/**\n * Granular workspace permission. Display group in `WORKSPACE_PERMISSIONS`.\n * The owner (`owner_id`) has no entry here: owner-only actions (rename/delete the workspace,\n * transfer ownership, link/unlink projects, deploy webhook, web publishing) are allowed for the\n * owner only, never through a permission.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport type WorkspacePermission =\n\t| \"apps:read\"\n\t| \"apps:manage\"\n\t| \"apps:lifecycle\"\n\t| \"apps:envs\"\n\t| \"apps:files\"\n\t| \"apps:delete\"\n\t| \"databases:read\"\n\t| \"databases:manage\"\n\t| \"databases:lifecycle\"\n\t| \"databases:credentials\"\n\t| \"databases:data\"\n\t| \"databases:delete\"\n\t| \"snapshots:read\"\n\t| \"snapshots:manage\"\n\t| \"members:read\"\n\t| \"members:manage\"\n\t| \"roles:manage\"\n\t| \"activities:read\";\n\nexport const WorkspacePermission = {\n\tAPPS_READ: \"apps:read\",\n\tAPPS_MANAGE: \"apps:manage\",\n\tAPPS_LIFECYCLE: \"apps:lifecycle\",\n\tAPPS_ENVS: \"apps:envs\",\n\tAPPS_FILES: \"apps:files\",\n\tAPPS_DELETE: \"apps:delete\",\n\tDATABASES_READ: \"databases:read\",\n\tDATABASES_MANAGE: \"databases:manage\",\n\tDATABASES_LIFECYCLE: \"databases:lifecycle\",\n\tDATABASES_CREDENTIALS: \"databases:credentials\",\n\tDATABASES_DATA: \"databases:data\",\n\tDATABASES_DELETE: \"databases:delete\",\n\tSNAPSHOTS_READ: \"snapshots:read\",\n\tSNAPSHOTS_MANAGE: \"snapshots:manage\",\n\tMEMBERS_READ: \"members:read\",\n\tMEMBERS_MANAGE: \"members:manage\",\n\tROLES_MANAGE: \"roles:manage\",\n\tACTIVITIES_READ: \"activities:read\",\n} as const satisfies Record<string, WorkspacePermission>;\n\nexport interface WorkspacePermissionEntry {\n\tgroup: \"apps\" | \"databases\" | \"snapshots\" | \"members\" | \"roles\" | \"activities\";\n}\n\n/**\n * Closed catalog of workspace permissions. A member whose role lacks the permission a route\n * requires gets 403 `WORKSPACE_PERMISSION_DENIED`.\n */\nexport const WORKSPACE_PERMISSIONS: Record<WorkspacePermission, WorkspacePermissionEntry> = {\n\t\"apps:read\": { group: \"apps\" },\n\t\"apps:manage\": { group: \"apps\" },\n\t\"apps:lifecycle\": { group: \"apps\" },\n\t\"apps:envs\": { group: \"apps\" },\n\t\"apps:files\": { group: \"apps\" },\n\t\"apps:delete\": { group: \"apps\" },\n\t\"databases:read\": { group: \"databases\" },\n\t\"databases:manage\": { group: \"databases\" },\n\t\"databases:lifecycle\": { group: \"databases\" },\n\t\"databases:credentials\": { group: \"databases\" },\n\t\"databases:data\": { group: \"databases\" },\n\t\"databases:delete\": { group: \"databases\" },\n\t\"snapshots:read\": { group: \"snapshots\" },\n\t\"snapshots:manage\": { group: \"snapshots\" },\n\t\"members:read\": { group: \"members\" },\n\t\"members:manage\": { group: \"members\" },\n\t\"roles:manage\": { group: \"roles\" },\n\t\"activities:read\": { group: \"activities\" },\n};\n\nexport const WORKSPACE_PERMISSION_LIST = Object.keys(WORKSPACE_PERMISSIONS) as WorkspacePermission[];\n\n/**\n * Seed role, created together with the workspace. It can be renamed and deleted like any other\n * role (it becomes a regular role; `preset` is not restored) and counts toward the plan's role limit.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport type WorkspaceRolePreset = \"admin\" | \"developer\" | \"operator\" | \"viewer\";\nexport const WorkspaceRolePreset = {\n\tAdmin: \"admin\",\n\tDeveloper: \"developer\",\n\tOperator: \"operator\",\n\tViewer: \"viewer\",\n} as const satisfies Record<string, WorkspaceRolePreset>;\n\n/**\n * Permissions a seed role gets when the workspace is created. `admin` does NOT include\n * `snapshots:manage` (restoring/deleting snapshots is destructive); the owner can grant it per role.\n */\nexport function workspacePresetPermissions(preset: WorkspaceRolePreset): WorkspacePermission[] {\n\tswitch (preset) {\n\t\tcase \"admin\":\n\t\t\treturn WORKSPACE_PERMISSION_LIST.filter((p) => p !== \"snapshots:manage\");\n\t\tcase \"developer\":\n\t\t\treturn [\"apps:read\", \"apps:manage\", \"apps:lifecycle\", \"apps:envs\", \"apps:files\", \"databases:read\", \"databases:manage\", \"databases:lifecycle\", \"databases:credentials\", \"databases:data\", \"snapshots:read\", \"members:read\", \"activities:read\"];\n\t\tcase \"operator\":\n\t\t\treturn [\"apps:read\", \"apps:lifecycle\", \"databases:read\", \"databases:lifecycle\", \"snapshots:read\", \"members:read\", \"activities:read\"];\n\t\tcase \"viewer\":\n\t\t\treturn [\"apps:read\", \"databases:read\", \"snapshots:read\", \"members:read\", \"activities:read\"];\n\t}\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/list\n */\nexport interface APIWorkspaceRole {\n\tid: SnowFlake;\n\tworkspace_id: SnowFlake;\n\tname: string;\n\tpermissions: WorkspacePermission[];\n\t/** Seed role it came from; `null` for a manually created role. Informational only. */\n\tpreset: WorkspaceRolePreset | null;\n\t/** Display order. */\n\tposition: number;\n\tmembers_count: number;\n\tcreated_at: ISODateString;\n\tupdated_at: ISODateString;\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/members/list\n */\nexport interface APIWorkspaceMember {\n\tuser_id: SnowFlake;\n\trole_id: SnowFlake;\n\trole_name: string;\n\tjoined_at: ISODateString;\n\t/** When the member's access expires; `null` = never. */\n\texpires_at: ISODateString | null;\n\tuser: {\n\t\tdisplay_name: string;\n\t\temail: string;\n\t};\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport interface APIWorkspace {\n\tid: SnowFlake;\n\tname: string;\n\tdescription: string | null;\n\towner_id: SnowFlake;\n\towner: { display_name: string };\n\tmembers_count: number;\n\t/** Soft delete timestamp. `null` = active. */\n\tdeleted_at: ISODateString | null;\n\t/**\n\t * `true` when the OWNER's plan does not include workspaces (it expired or was downgraded):\n\t * reads keep working, every write returns `PLAN_RESTRICTED_FEATURE`. Nobody is removed — the\n\t * owner must upgrade to unfreeze it.\n\t */\n\tfrozen: boolean;\n\tcreated_at: ISODateString;\n\tupdated_at: ISODateString;\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport interface APIWorkspaceInfoResponse extends APIWorkspace {\n\tmembers: APIWorkspaceMember[];\n\troles: APIWorkspaceRole[];\n\tapplications: APIApplication[];\n\tdatabases: APIDatabase[];\n\t/** Resolved permissions of the caller. The owner always gets the full list, regardless of role. */\n\tpermissions: WorkspacePermission[];\n\tis_owner: boolean;\n\t/** Owner's plan — it determines which features the workspace has. */\n\towner_plan_id: UserPlan;\n\t/** The caller's saved resource organization (folders, favorites) in this workspace. */\n\tresource_organization: APIWorkspaceResourceOrganization;\n}\n\nexport type WorkspaceResourceType = \"application\" | \"database\";\nexport const WorkspaceResourceType = { Application: \"application\", Database: \"database\" } as const satisfies Record<string, WorkspaceResourceType>;\n\nexport type WorkspaceResourceOrganizationScope = \"personal\" | \"workspace\";\nexport const WorkspaceResourceOrganizationScope = { Personal: \"personal\", Workspace: \"workspace\" } as const satisfies Record<string, WorkspaceResourceOrganizationScope>;\n\nexport type WorkspaceFolderColor = \"neutral\" | \"red\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\";\nexport const WorkspaceFolderColor = { Neutral: \"neutral\", Red: \"red\", Orange: \"orange\", Yellow: \"yellow\", Green: \"green\", Blue: \"blue\", Purple: \"purple\" } as const satisfies Record<string, WorkspaceFolderColor>;\nexport const WORKSPACE_FOLDER_COLORS = Object.values(WorkspaceFolderColor) as WorkspaceFolderColor[];\n\nexport interface APIWorkspaceResourceRef {\n\tresource_type: WorkspaceResourceType;\n\tresource_id: SnowFlake;\n}\n\nexport interface APIWorkspaceFolderItem extends APIWorkspaceResourceRef {\n\tposition: number;\n}\n\nexport interface APIWorkspaceResourceFolder {\n\tid: SnowFlake;\n\tname: string;\n\tcolor: WorkspaceFolderColor;\n\tposition: number;\n\tresources: APIWorkspaceFolderItem[];\n\tcreated_at: ISODateString;\n\tupdated_at: ISODateString;\n}\n\nexport interface APIWorkspaceFavorite extends APIWorkspaceResourceRef {\n\tposition: number;\n\tcreated_at: ISODateString;\n}\n\nexport interface APIWorkspaceResourceOrganization {\n\tscope: WorkspaceResourceOrganizationScope;\n\tuser_id: SnowFlake;\n\tworkspace_id: SnowFlake | null;\n\tfolders: APIWorkspaceResourceFolder[];\n\tfavorites: APIWorkspaceFavorite[];\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/list\n */\nexport type WorkspaceInviteKind = \"email\" | \"link\";\nexport const WorkspaceInviteKind = { Email: \"email\", Link: \"link\" } as const satisfies Record<string, WorkspaceInviteKind>;\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/list\n */\nexport interface APIWorkspaceInvite {\n\tid: SnowFlake;\n\tworkspace_id: SnowFlake;\n\tkind: WorkspaceInviteKind;\n\t/** Bound e-mail; only for `kind: \"email\"`. */\n\temail: string | null;\n\trole_id: SnowFlake;\n\trole_name: string;\n\tinvited_by: { id: SnowFlake; display_name: string };\n\texpires_at: ISODateString;\n\taccepted_at: ISODateString | null;\n\trevoked_at: ISODateString | null;\n\tuses: number;\n\t/** Only for `kind: \"link\"`; `null` = unlimited uses. */\n\tmax_uses: number | null;\n\t/** Access expiration applied to members who join through this invite; `null` = never. */\n\texpires_in_days: number | null;\n\tcreated_at: ISODateString;\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/create\n */\nexport interface APIWorkspaceInviteCreated extends APIWorkspaceInvite {\n\t/** Invite URL; only for `kind: \"link\"`, shown once. */\n\turl: string | null;\n}\n\n/**\n * What the invitee sees before accepting (`GET /v1/workspaces/invites/:token`).\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/preview\n */\nexport interface APIWorkspaceInvitePreview {\n\tworkspace: { id: SnowFlake; name: string };\n\tinviter: { display_name: string };\n\trole_name: string;\n\tkind: WorkspaceInviteKind;\n\texpires_at: ISODateString;\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/list\n */\nexport type WorkspaceActionRequestAction = \"app_delete\" | \"database_delete\" | \"snapshot_create\" | \"snapshot_restore\";\nexport const WorkspaceActionRequestAction = {\n\tAppDelete: \"app_delete\",\n\tDatabaseDelete: \"database_delete\",\n\tSnapshotCreate: \"snapshot_create\",\n\tSnapshotRestore: \"snapshot_restore\",\n} as const satisfies Record<string, WorkspaceActionRequestAction>;\n\nexport type WorkspaceActionRequestStatus = \"pending\" | \"approved\" | \"rejected\" | \"expired\";\nexport const WorkspaceActionRequestStatus = {\n\tPending: \"pending\",\n\tApproved: \"approved\",\n\tRejected: \"rejected\",\n\tExpired: \"expired\",\n} as const satisfies Record<string, WorkspaceActionRequestStatus>;\n\n/**\n * `params` of an action request, per `action`. Actions without parameters take an empty object;\n * unknown keys are rejected with `WORKSPACE_ACTION_INVALID_PARAMS`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/create\n */\nexport interface WorkspaceActionRequestParams {\n\tapp_delete: Record<string, never>;\n\tdatabase_delete: Record<string, never>;\n\tsnapshot_create: Record<string, never>;\n\t/** The snapshot must belong to the request's resource. */\n\tsnapshot_restore: { snapshot_id: SnowFlake };\n}\n\ninterface APIWorkspaceActionRequestBase {\n\tid: SnowFlake;\n\tworkspace_id: SnowFlake;\n\tresource_type: WorkspaceResourceType;\n\tresource_id: SnowFlake;\n\tresource_name: string | null;\n\tstatus: WorkspaceActionRequestStatus;\n\trequested_by: { id: SnowFlake; display_name: string };\n\tdecided_by: { id: SnowFlake; display_name: string } | null;\n\tdecided_at: ISODateString | null;\n\texpires_at: ISODateString;\n\tcreated_at: ISODateString;\n}\n\n/**\n * A request for a destructive/sensitive action made by a member who lacks its permission, to be\n * approved by someone who has it. Expires after 24 h without a decision. Discriminated by `action`,\n * which decides the shape of `params`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/list\n */\nexport type APIWorkspaceActionRequest = {\n\t[A in WorkspaceActionRequestAction]: APIWorkspaceActionRequestBase & { action: A; params: WorkspaceActionRequestParams[A] };\n}[WorkspaceActionRequestAction];\n\n/**\n * Workspace error codes. Stable English sentinels returned in `code`; clients are expected to\n * translate them.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport const WORKSPACE_ERROR_CODES = {\n\tWORKSPACE_NOT_FOUND: \"WORKSPACE_NOT_FOUND\",\n\tWORKSPACE_NAME_ALREADY_EXISTS: \"WORKSPACE_NAME_ALREADY_EXISTS\",\n\tWORKSPACE_MEMBER_LIMIT_REACHED: \"WORKSPACE_MEMBER_LIMIT_REACHED\",\n\tWORKSPACE_ROLE_LIMIT_REACHED: \"WORKSPACE_ROLE_LIMIT_REACHED\",\n\tWORKSPACE_ROLE_IN_USE: \"WORKSPACE_ROLE_IN_USE\",\n\tWORKSPACE_ROLE_NOT_FOUND: \"WORKSPACE_ROLE_NOT_FOUND\",\n\tWORKSPACE_ROLE_NAME_ALREADY_EXISTS: \"WORKSPACE_ROLE_NAME_ALREADY_EXISTS\",\n\tWORKSPACE_PERMISSION_DENIED: \"WORKSPACE_PERMISSION_DENIED\",\n\tWORKSPACE_PERMISSION_ESCALATION: \"WORKSPACE_PERMISSION_ESCALATION\",\n\tWORKSPACE_INVITE_NOT_FOUND: \"WORKSPACE_INVITE_NOT_FOUND\",\n\tWORKSPACE_INVITE_EXPIRED: \"WORKSPACE_INVITE_EXPIRED\",\n\tWORKSPACE_INVITE_EMAIL_MISMATCH: \"WORKSPACE_INVITE_EMAIL_MISMATCH\",\n\t/** 400 — the invited account turned off workspace invites by email. */\n\tWORKSPACE_INVITES_DISABLED: \"WORKSPACE_INVITES_DISABLED\",\n\t/** 409 — the account is already the owner or a member of the workspace. */\n\tWORKSPACE_ALREADY_MEMBER: \"WORKSPACE_ALREADY_MEMBER\",\n\tWORKSPACE_OWNER_ONLY: \"WORKSPACE_OWNER_ONLY\",\n\tWORKSPACE_ACTION_REQUEST_NOT_FOUND: \"WORKSPACE_ACTION_REQUEST_NOT_FOUND\",\n\t/** 410 — the request expired before anyone decided on it. */\n\tWORKSPACE_ACTION_REQUEST_EXPIRED: \"WORKSPACE_ACTION_REQUEST_EXPIRED\",\n\t/** 409 — the request was already approved or rejected. */\n\tWORKSPACE_ACTION_REQUEST_ALREADY_DECIDED: \"WORKSPACE_ACTION_REQUEST_ALREADY_DECIDED\",\n\t/** 400 — the requester already has the permission; perform the action directly. */\n\tWORKSPACE_ACTION_NOT_NEEDED: \"WORKSPACE_ACTION_NOT_NEEDED\",\n\t/** 400 — the request `params` failed the action's validation (e.g. a snapshot of another resource). */\n\tWORKSPACE_ACTION_INVALID_PARAMS: \"WORKSPACE_ACTION_INVALID_PARAMS\",\n\t/** 409 — a pending request already exists for the same action on the same resource. */\n\tWORKSPACE_ACTION_REQUEST_PENDING: \"WORKSPACE_ACTION_REQUEST_PENDING\",\n\tWORKSPACE_RESOURCE_FOLDER_NOT_FOUND: \"WORKSPACE_RESOURCE_FOLDER_NOT_FOUND\",\n\tWORKSPACE_RESOURCE_FOLDER_NAME_CONFLICT: \"WORKSPACE_RESOURCE_FOLDER_NAME_CONFLICT\",\n\tWORKSPACE_RESOURCE_NOT_FOUND: \"WORKSPACE_RESOURCE_NOT_FOUND\",\n\tPLAN_RESTRICTED_FEATURE: \"PLAN_RESTRICTED_FEATURE\",\n} as const;\nexport type WorkspaceErrorCode = (typeof WORKSPACE_ERROR_CODES)[keyof typeof WORKSPACE_ERROR_CODES];\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["workspace.ts"],"sourcesContent":["import type { ISODateString, SnowFlake, UserPlan } from \"../../v1\";\nimport type { APIApplication, APIDatabase } from \"./index\";\n\n/**\n * Granular workspace permission. Display group in `WORKSPACE_PERMISSIONS`.\n * The owner (`owner_id`) has no entry here: owner-only actions (rename/delete the workspace,\n * link/unlink projects, deploy webhook, web publishing) are allowed for the\n * owner only, never through a permission.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport type WorkspacePermission =\n\t| \"apps:read\"\n\t| \"apps:manage\"\n\t| \"apps:lifecycle\"\n\t| \"apps:envs\"\n\t| \"apps:files\"\n\t| \"apps:delete\"\n\t| \"databases:read\"\n\t| \"databases:manage\"\n\t| \"databases:lifecycle\"\n\t| \"databases:credentials\"\n\t| \"databases:data\"\n\t| \"databases:delete\"\n\t| \"snapshots:read\"\n\t| \"snapshots:manage\"\n\t| \"members:read\"\n\t| \"members:manage\"\n\t| \"roles:manage\"\n\t| \"activities:read\";\n\nexport const WorkspacePermission = {\n\tAPPS_READ: \"apps:read\",\n\tAPPS_MANAGE: \"apps:manage\",\n\tAPPS_LIFECYCLE: \"apps:lifecycle\",\n\tAPPS_ENVS: \"apps:envs\",\n\tAPPS_FILES: \"apps:files\",\n\tAPPS_DELETE: \"apps:delete\",\n\tDATABASES_READ: \"databases:read\",\n\tDATABASES_MANAGE: \"databases:manage\",\n\tDATABASES_LIFECYCLE: \"databases:lifecycle\",\n\tDATABASES_CREDENTIALS: \"databases:credentials\",\n\tDATABASES_DATA: \"databases:data\",\n\tDATABASES_DELETE: \"databases:delete\",\n\tSNAPSHOTS_READ: \"snapshots:read\",\n\tSNAPSHOTS_MANAGE: \"snapshots:manage\",\n\tMEMBERS_READ: \"members:read\",\n\tMEMBERS_MANAGE: \"members:manage\",\n\tROLES_MANAGE: \"roles:manage\",\n\tACTIVITIES_READ: \"activities:read\",\n} as const satisfies Record<string, WorkspacePermission>;\n\nexport interface WorkspacePermissionEntry {\n\tgroup: \"apps\" | \"databases\" | \"snapshots\" | \"members\" | \"roles\" | \"activities\";\n}\n\n/**\n * Closed catalog of workspace permissions. A member whose role lacks the permission a route\n * requires gets 403 `WORKSPACE_PERMISSION_DENIED`.\n */\nexport const WORKSPACE_PERMISSIONS: Record<WorkspacePermission, WorkspacePermissionEntry> = {\n\t\"apps:read\": { group: \"apps\" },\n\t\"apps:manage\": { group: \"apps\" },\n\t\"apps:lifecycle\": { group: \"apps\" },\n\t\"apps:envs\": { group: \"apps\" },\n\t\"apps:files\": { group: \"apps\" },\n\t\"apps:delete\": { group: \"apps\" },\n\t\"databases:read\": { group: \"databases\" },\n\t\"databases:manage\": { group: \"databases\" },\n\t\"databases:lifecycle\": { group: \"databases\" },\n\t\"databases:credentials\": { group: \"databases\" },\n\t\"databases:data\": { group: \"databases\" },\n\t\"databases:delete\": { group: \"databases\" },\n\t\"snapshots:read\": { group: \"snapshots\" },\n\t\"snapshots:manage\": { group: \"snapshots\" },\n\t\"members:read\": { group: \"members\" },\n\t\"members:manage\": { group: \"members\" },\n\t\"roles:manage\": { group: \"roles\" },\n\t\"activities:read\": { group: \"activities\" },\n};\n\nexport const WORKSPACE_PERMISSION_LIST = Object.keys(WORKSPACE_PERMISSIONS) as WorkspacePermission[];\n\n/**\n * Seed role, created together with the workspace. It can be renamed and deleted like any other\n * role (it becomes a regular role; `preset` is not restored) and counts toward the plan's role limit.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport type WorkspaceRolePreset = \"admin\" | \"developer\" | \"operator\" | \"viewer\";\nexport const WorkspaceRolePreset = {\n\tAdmin: \"admin\",\n\tDeveloper: \"developer\",\n\tOperator: \"operator\",\n\tViewer: \"viewer\",\n} as const satisfies Record<string, WorkspaceRolePreset>;\n\n/**\n * Permissions a seed role gets when the workspace is created. `admin` does NOT include\n * `snapshots:manage` (restoring/deleting snapshots is destructive); the owner can grant it per role.\n */\nexport function workspacePresetPermissions(preset: WorkspaceRolePreset): WorkspacePermission[] {\n\tswitch (preset) {\n\t\tcase \"admin\":\n\t\t\treturn WORKSPACE_PERMISSION_LIST.filter((p) => p !== \"snapshots:manage\");\n\t\tcase \"developer\":\n\t\t\treturn [\"apps:read\", \"apps:manage\", \"apps:lifecycle\", \"apps:envs\", \"apps:files\", \"databases:read\", \"databases:manage\", \"databases:lifecycle\", \"databases:credentials\", \"databases:data\", \"snapshots:read\", \"members:read\", \"activities:read\"];\n\t\tcase \"operator\":\n\t\t\treturn [\"apps:read\", \"apps:lifecycle\", \"databases:read\", \"databases:lifecycle\", \"snapshots:read\", \"members:read\", \"activities:read\"];\n\t\tcase \"viewer\":\n\t\t\treturn [\"apps:read\", \"databases:read\", \"snapshots:read\", \"members:read\", \"activities:read\"];\n\t}\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/list\n */\nexport interface APIWorkspaceRole {\n\tid: SnowFlake;\n\tworkspace_id: SnowFlake;\n\tname: string;\n\tpermissions: WorkspacePermission[];\n\t/** Seed role it came from; `null` for a manually created role. Informational only. */\n\tpreset: WorkspaceRolePreset | null;\n\t/** Display order. */\n\tposition: number;\n\tmembers_count: number;\n\tcreated_at: ISODateString;\n\tupdated_at: ISODateString;\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/members/list\n */\nexport interface APIWorkspaceMember {\n\tuser_id: SnowFlake;\n\trole_id: SnowFlake;\n\trole_name: string;\n\tjoined_at: ISODateString;\n\t/** When the member's access expires; `null` = never. */\n\texpires_at: ISODateString | null;\n\tuser: {\n\t\tdisplay_name: string;\n\t\temail: string;\n\t};\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport interface APIWorkspace {\n\tid: SnowFlake;\n\tname: string;\n\tdescription: string | null;\n\towner_id: SnowFlake;\n\towner: { display_name: string };\n\tmembers_count: number;\n\t/** Soft delete timestamp. `null` = active. */\n\tdeleted_at: ISODateString | null;\n\t/**\n\t * `true` when the OWNER's plan does not include workspaces (it expired or was downgraded):\n\t * reads keep working, every write returns `PLAN_RESTRICTED_FEATURE`. Nobody is removed — the\n\t * owner must upgrade to unfreeze it.\n\t */\n\tfrozen: boolean;\n\tcreated_at: ISODateString;\n\tupdated_at: ISODateString;\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport interface APIWorkspaceInfoResponse extends APIWorkspace {\n\tmembers: APIWorkspaceMember[];\n\troles: APIWorkspaceRole[];\n\tapplications: APIApplication[];\n\tdatabases: APIDatabase[];\n\t/** Resolved permissions of the caller. The owner always gets the full list, regardless of role. */\n\tpermissions: WorkspacePermission[];\n\tis_owner: boolean;\n\t/** Owner's plan — it determines which features the workspace has. */\n\towner_plan_id: UserPlan;\n\t/** The caller's saved resource organization (folders, favorites) in this workspace. */\n\tresource_organization: APIWorkspaceResourceOrganization;\n}\n\nexport type WorkspaceResourceType = \"application\" | \"database\";\nexport const WorkspaceResourceType = { Application: \"application\", Database: \"database\" } as const satisfies Record<string, WorkspaceResourceType>;\n\nexport type WorkspaceResourceOrganizationScope = \"personal\" | \"workspace\";\nexport const WorkspaceResourceOrganizationScope = { Personal: \"personal\", Workspace: \"workspace\" } as const satisfies Record<string, WorkspaceResourceOrganizationScope>;\n\nexport type WorkspaceFolderColor = \"neutral\" | \"red\" | \"orange\" | \"yellow\" | \"green\" | \"blue\" | \"purple\";\nexport const WorkspaceFolderColor = { Neutral: \"neutral\", Red: \"red\", Orange: \"orange\", Yellow: \"yellow\", Green: \"green\", Blue: \"blue\", Purple: \"purple\" } as const satisfies Record<string, WorkspaceFolderColor>;\nexport const WORKSPACE_FOLDER_COLORS = Object.values(WorkspaceFolderColor) as WorkspaceFolderColor[];\n\nexport interface APIWorkspaceResourceRef {\n\tresource_type: WorkspaceResourceType;\n\tresource_id: SnowFlake;\n}\n\nexport interface APIWorkspaceFolderItem extends APIWorkspaceResourceRef {\n\tposition: number;\n}\n\nexport interface APIWorkspaceResourceFolder {\n\tid: SnowFlake;\n\tname: string;\n\tcolor: WorkspaceFolderColor;\n\tposition: number;\n\tresources: APIWorkspaceFolderItem[];\n\tcreated_at: ISODateString;\n\tupdated_at: ISODateString;\n}\n\nexport interface APIWorkspaceFavorite extends APIWorkspaceResourceRef {\n\tposition: number;\n\tcreated_at: ISODateString;\n}\n\nexport interface APIWorkspaceResourceOrganization {\n\tscope: WorkspaceResourceOrganizationScope;\n\tuser_id: SnowFlake;\n\tworkspace_id: SnowFlake | null;\n\tfolders: APIWorkspaceResourceFolder[];\n\tfavorites: APIWorkspaceFavorite[];\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/list\n */\nexport type WorkspaceInviteKind = \"email\" | \"link\";\nexport const WorkspaceInviteKind = { Email: \"email\", Link: \"link\" } as const satisfies Record<string, WorkspaceInviteKind>;\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/list\n */\nexport interface APIWorkspaceInvite {\n\tid: SnowFlake;\n\tworkspace_id: SnowFlake;\n\tkind: WorkspaceInviteKind;\n\t/** Bound e-mail; only for `kind: \"email\"`. */\n\temail: string | null;\n\trole_id: SnowFlake;\n\trole_name: string;\n\tinvited_by: { id: SnowFlake; display_name: string };\n\texpires_at: ISODateString;\n\taccepted_at: ISODateString | null;\n\trevoked_at: ISODateString | null;\n\tuses: number;\n\t/** Only for `kind: \"link\"`; `null` = unlimited uses. */\n\tmax_uses: number | null;\n\t/** Access expiration applied to members who join through this invite; `null` = never. */\n\texpires_in_days: number | null;\n\tcreated_at: ISODateString;\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/create\n */\nexport interface APIWorkspaceInviteCreated extends APIWorkspaceInvite {\n\t/** Invite URL; only for `kind: \"link\"`, shown once. */\n\turl: string | null;\n}\n\n/**\n * What the invitee sees before accepting (`GET /v1/workspaces/invites/:token`).\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/preview\n */\nexport interface APIWorkspaceInvitePreview {\n\tworkspace: { id: SnowFlake; name: string };\n\tinviter: { display_name: string };\n\trole_name: string;\n\tkind: WorkspaceInviteKind;\n\texpires_at: ISODateString;\n}\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/list\n */\nexport type WorkspaceActionRequestAction = \"app_delete\" | \"database_delete\" | \"snapshot_create\" | \"snapshot_restore\";\nexport const WorkspaceActionRequestAction = {\n\tAppDelete: \"app_delete\",\n\tDatabaseDelete: \"database_delete\",\n\tSnapshotCreate: \"snapshot_create\",\n\tSnapshotRestore: \"snapshot_restore\",\n} as const satisfies Record<string, WorkspaceActionRequestAction>;\n\nexport type WorkspaceActionRequestStatus = \"pending\" | \"approved\" | \"rejected\" | \"expired\";\nexport const WorkspaceActionRequestStatus = {\n\tPending: \"pending\",\n\tApproved: \"approved\",\n\tRejected: \"rejected\",\n\tExpired: \"expired\",\n} as const satisfies Record<string, WorkspaceActionRequestStatus>;\n\n/**\n * `params` of an action request, per `action`. Actions without parameters take an empty object;\n * unknown keys are rejected with `WORKSPACE_ACTION_INVALID_PARAMS`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/create\n */\nexport interface WorkspaceActionRequestParams {\n\tapp_delete: Record<string, never>;\n\tdatabase_delete: Record<string, never>;\n\tsnapshot_create: Record<string, never>;\n\t/** The snapshot must belong to the request's resource. */\n\tsnapshot_restore: { snapshot_id: SnowFlake };\n}\n\ninterface APIWorkspaceActionRequestBase {\n\tid: SnowFlake;\n\tworkspace_id: SnowFlake;\n\tresource_type: WorkspaceResourceType;\n\tresource_id: SnowFlake;\n\tresource_name: string | null;\n\tstatus: WorkspaceActionRequestStatus;\n\trequested_by: { id: SnowFlake; display_name: string };\n\tdecided_by: { id: SnowFlake; display_name: string } | null;\n\tdecided_at: ISODateString | null;\n\texpires_at: ISODateString;\n\tcreated_at: ISODateString;\n}\n\n/**\n * A request for a destructive/sensitive action made by a member who lacks its permission, to be\n * approved by someone who has it. Expires after 24 h without a decision. Discriminated by `action`,\n * which decides the shape of `params`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/list\n */\nexport type APIWorkspaceActionRequest = {\n\t[A in WorkspaceActionRequestAction]: APIWorkspaceActionRequestBase & { action: A; params: WorkspaceActionRequestParams[A] };\n}[WorkspaceActionRequestAction];\n\n/**\n * Workspace error codes. Stable English sentinels returned in `code`; clients are expected to\n * translate them.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport const WORKSPACE_ERROR_CODES = {\n\tWORKSPACE_NOT_FOUND: \"WORKSPACE_NOT_FOUND\",\n\tWORKSPACE_NAME_ALREADY_EXISTS: \"WORKSPACE_NAME_ALREADY_EXISTS\",\n\tWORKSPACE_MEMBER_LIMIT_REACHED: \"WORKSPACE_MEMBER_LIMIT_REACHED\",\n\tWORKSPACE_ROLE_LIMIT_REACHED: \"WORKSPACE_ROLE_LIMIT_REACHED\",\n\tWORKSPACE_ROLE_IN_USE: \"WORKSPACE_ROLE_IN_USE\",\n\tWORKSPACE_ROLE_NOT_FOUND: \"WORKSPACE_ROLE_NOT_FOUND\",\n\tWORKSPACE_ROLE_NAME_ALREADY_EXISTS: \"WORKSPACE_ROLE_NAME_ALREADY_EXISTS\",\n\tWORKSPACE_PERMISSION_DENIED: \"WORKSPACE_PERMISSION_DENIED\",\n\tWORKSPACE_PERMISSION_ESCALATION: \"WORKSPACE_PERMISSION_ESCALATION\",\n\tWORKSPACE_INVITE_NOT_FOUND: \"WORKSPACE_INVITE_NOT_FOUND\",\n\tWORKSPACE_INVITE_EXPIRED: \"WORKSPACE_INVITE_EXPIRED\",\n\tWORKSPACE_INVITE_EMAIL_MISMATCH: \"WORKSPACE_INVITE_EMAIL_MISMATCH\",\n\t/** 400 — the invited account turned off workspace invites by email. */\n\tWORKSPACE_INVITES_DISABLED: \"WORKSPACE_INVITES_DISABLED\",\n\t/** 409 — the account is already the owner or a member of the workspace. */\n\tWORKSPACE_ALREADY_MEMBER: \"WORKSPACE_ALREADY_MEMBER\",\n\tWORKSPACE_OWNER_ONLY: \"WORKSPACE_OWNER_ONLY\",\n\tWORKSPACE_ACTION_REQUEST_NOT_FOUND: \"WORKSPACE_ACTION_REQUEST_NOT_FOUND\",\n\t/** 410 — the request expired before anyone decided on it. */\n\tWORKSPACE_ACTION_REQUEST_EXPIRED: \"WORKSPACE_ACTION_REQUEST_EXPIRED\",\n\t/** 409 — the request was already approved or rejected. */\n\tWORKSPACE_ACTION_REQUEST_ALREADY_DECIDED: \"WORKSPACE_ACTION_REQUEST_ALREADY_DECIDED\",\n\t/** 400 — the requester already has the permission; perform the action directly. */\n\tWORKSPACE_ACTION_NOT_NEEDED: \"WORKSPACE_ACTION_NOT_NEEDED\",\n\t/** 400 — the request `params` failed the action's validation (e.g. a snapshot of another resource). */\n\tWORKSPACE_ACTION_INVALID_PARAMS: \"WORKSPACE_ACTION_INVALID_PARAMS\",\n\t/** 409 — a pending request already exists for the same action on the same resource. */\n\tWORKSPACE_ACTION_REQUEST_PENDING: \"WORKSPACE_ACTION_REQUEST_PENDING\",\n\tWORKSPACE_RESOURCE_FOLDER_NOT_FOUND: \"WORKSPACE_RESOURCE_FOLDER_NOT_FOUND\",\n\tWORKSPACE_RESOURCE_FOLDER_NAME_CONFLICT: \"WORKSPACE_RESOURCE_FOLDER_NAME_CONFLICT\",\n\tWORKSPACE_RESOURCE_NOT_FOUND: \"WORKSPACE_RESOURCE_NOT_FOUND\",\n\tPLAN_RESTRICTED_FEATURE: \"PLAN_RESTRICTED_FEATURE\",\n} as const;\nexport type WorkspaceErrorCode = (typeof WORKSPACE_ERROR_CODES)[keyof typeof WORKSPACE_ERROR_CODES];\n"],"mappings":"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","names":[]}
|
package/rest/v1/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export { RESTPostAPIRedeemResponse } from './redeem.js';
|
|
|
10
10
|
export { RESTGetAPIGroupedSnapshotsQuery, RESTGetAPIGroupedSnapshotsResponse, RESTGetAPISnapshotDownloadQuery, RESTGetAPISnapshotDownloadResponse, RESTGetAPISnapshotsQuery, RESTGetAPISnapshotsResponse, RESTPostAPISnapshotCreateQuery, RESTPostAPISnapshotCreateResponse, RESTPostAPISnapshotRestoreBody, RESTPostAPISnapshotRestoreQuery, RESTPostAPISnapshotRestoreResponse } from './snapshot.js';
|
|
11
11
|
export { RESTGetAPIStatusResponse } from './status.js';
|
|
12
12
|
export { RESTDeleteAPIUserFavoriteResponse, RESTDeleteAPIUserResourceFolderResourceResponse, RESTDeleteAPIUserResourceFolderResponse, RESTGetAPIUserApiKeyRequestsQuery, RESTGetAPIUserApiKeyRequestsResponse, RESTGetAPIUserInfoResponse, RESTGetAPIUserSessionsResponse, RESTPatchAPIUserMeBody, RESTPatchAPIUserMeResponse, RESTPatchAPIUserResourceFolderBody, RESTPatchAPIUserResourceFolderResponse, RESTPostAPIUserDowngradeResponse, RESTPostAPIUserGenerateApiKeyResponse, RESTPostAPIUserResourceFolderBody, RESTPostAPIUserResourceFolderResponse, RESTPutAPIUserFavoriteBody, RESTPutAPIUserFavoriteResponse, RESTPutAPIUserResourceFolderResourceBody, RESTPutAPIUserResourceFolderResourceResponse } from './user.js';
|
|
13
|
-
export { RESTDeleteAPIWorkspaceFavoriteResponse, RESTDeleteAPIWorkspaceInviteResponse, RESTDeleteAPIWorkspaceMemberResponse, RESTDeleteAPIWorkspaceResourceFolderResourceResponse, RESTDeleteAPIWorkspaceResourceFolderResponse, RESTDeleteAPIWorkspaceResourceLinkResponse, RESTDeleteAPIWorkspaceResponse, RESTDeleteAPIWorkspaceRoleResponse, RESTGetAPIWorkspaceActionRequestsQuery, RESTGetAPIWorkspaceActionRequestsResponse, RESTGetAPIWorkspaceActivitiesExportQuery, RESTGetAPIWorkspaceInfoResponse, RESTGetAPIWorkspaceInvitePreviewResponse, RESTGetAPIWorkspaceInvitesResponse, RESTGetAPIWorkspaceMembersResponse, RESTGetAPIWorkspaceRolesResponse, RESTGetAPIWorkspacesResponse, RESTPatchAPIWorkspaceResourceFolderBody, RESTPatchAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceActionRequestApproveResponse, RESTPostAPIWorkspaceActionRequestBody, RESTPostAPIWorkspaceActionRequestRejectResponse, RESTPostAPIWorkspaceActionRequestResponse, RESTPostAPIWorkspaceCreateBody, RESTPostAPIWorkspaceCreateResponse, RESTPostAPIWorkspaceInviteAcceptResponse, RESTPostAPIWorkspaceInviteBody, RESTPostAPIWorkspaceInviteDeclineResponse, RESTPostAPIWorkspaceInviteResponse, RESTPostAPIWorkspaceResourceFolderBody, RESTPostAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceResourceLinkResponse, RESTPostAPIWorkspaceRoleBody, RESTPostAPIWorkspaceRoleResponse,
|
|
13
|
+
export { RESTDeleteAPIWorkspaceFavoriteResponse, RESTDeleteAPIWorkspaceInviteResponse, RESTDeleteAPIWorkspaceMemberResponse, RESTDeleteAPIWorkspaceResourceFolderResourceResponse, RESTDeleteAPIWorkspaceResourceFolderResponse, RESTDeleteAPIWorkspaceResourceLinkResponse, RESTDeleteAPIWorkspaceResponse, RESTDeleteAPIWorkspaceRoleResponse, RESTGetAPIWorkspaceActionRequestsQuery, RESTGetAPIWorkspaceActionRequestsResponse, RESTGetAPIWorkspaceActivitiesExportQuery, RESTGetAPIWorkspaceInfoResponse, RESTGetAPIWorkspaceInvitePreviewResponse, RESTGetAPIWorkspaceInvitesResponse, RESTGetAPIWorkspaceMembersResponse, RESTGetAPIWorkspaceRolesResponse, RESTGetAPIWorkspacesResponse, RESTPatchAPIWorkspaceResourceFolderBody, RESTPatchAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceActionRequestApproveResponse, RESTPostAPIWorkspaceActionRequestBody, RESTPostAPIWorkspaceActionRequestRejectResponse, RESTPostAPIWorkspaceActionRequestResponse, RESTPostAPIWorkspaceCreateBody, RESTPostAPIWorkspaceCreateResponse, RESTPostAPIWorkspaceInviteAcceptResponse, RESTPostAPIWorkspaceInviteBody, RESTPostAPIWorkspaceInviteDeclineResponse, RESTPostAPIWorkspaceInviteResponse, RESTPostAPIWorkspaceResourceFolderBody, RESTPostAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceResourceLinkResponse, RESTPostAPIWorkspaceRoleBody, RESTPostAPIWorkspaceRoleResponse, RESTPutAPIWorkspaceFavoriteBody, RESTPutAPIWorkspaceFavoriteResponse, RESTPutAPIWorkspaceMemberBody, RESTPutAPIWorkspaceMemberResponse, RESTPutAPIWorkspaceResourceFolderResourceBody, RESTPutAPIWorkspaceResourceFolderResourceResponse, RESTPutAPIWorkspaceRoleBody, RESTPutAPIWorkspaceRoleResponse, RESTPutAPIWorkspaceUpdateBody, RESTPutAPIWorkspaceUpdateResponse } from './workspace.js';
|
|
14
14
|
import '../../common/v1.js';
|
|
15
15
|
import '../../payloads/v1/api-error.js';
|
|
16
16
|
import '../../payloads/v1/activity.js';
|
package/rest/v1/workspace.d.ts
CHANGED
|
@@ -33,14 +33,6 @@ type RESTPutAPIWorkspaceUpdateResponse = APIPayload<APIWorkspace>;
|
|
|
33
33
|
* @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/delete
|
|
34
34
|
*/
|
|
35
35
|
type RESTDeleteAPIWorkspaceResponse = APIPayload<null>;
|
|
36
|
-
/**
|
|
37
|
-
* `POST /v1/workspaces/:id/transfer-ownership` — owner only.
|
|
38
|
-
* @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/transfer-ownership
|
|
39
|
-
*/
|
|
40
|
-
interface RESTPostAPIWorkspaceTransferOwnershipBody {
|
|
41
|
-
user_id: string;
|
|
42
|
-
}
|
|
43
|
-
type RESTPostAPIWorkspaceTransferOwnershipResponse = APIPayload<APIWorkspace>;
|
|
44
36
|
interface RESTPostAPIWorkspaceResourceFolderBody {
|
|
45
37
|
name: string;
|
|
46
38
|
color?: WorkspaceFolderColor;
|
|
@@ -204,4 +196,4 @@ interface RESTGetAPIWorkspaceActivitiesExportQuery {
|
|
|
204
196
|
to?: ISODateString;
|
|
205
197
|
}
|
|
206
198
|
|
|
207
|
-
export type { RESTDeleteAPIWorkspaceFavoriteResponse, RESTDeleteAPIWorkspaceInviteResponse, RESTDeleteAPIWorkspaceMemberResponse, RESTDeleteAPIWorkspaceResourceFolderResourceResponse, RESTDeleteAPIWorkspaceResourceFolderResponse, RESTDeleteAPIWorkspaceResourceLinkResponse, RESTDeleteAPIWorkspaceResponse, RESTDeleteAPIWorkspaceRoleResponse, RESTGetAPIWorkspaceActionRequestsQuery, RESTGetAPIWorkspaceActionRequestsResponse, RESTGetAPIWorkspaceActivitiesExportQuery, RESTGetAPIWorkspaceInfoResponse, RESTGetAPIWorkspaceInvitePreviewResponse, RESTGetAPIWorkspaceInvitesResponse, RESTGetAPIWorkspaceMembersResponse, RESTGetAPIWorkspaceRolesResponse, RESTGetAPIWorkspacesResponse, RESTPatchAPIWorkspaceResourceFolderBody, RESTPatchAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceActionRequestApproveResponse, RESTPostAPIWorkspaceActionRequestBody, RESTPostAPIWorkspaceActionRequestRejectResponse, RESTPostAPIWorkspaceActionRequestResponse, RESTPostAPIWorkspaceCreateBody, RESTPostAPIWorkspaceCreateResponse, RESTPostAPIWorkspaceInviteAcceptResponse, RESTPostAPIWorkspaceInviteBody, RESTPostAPIWorkspaceInviteDeclineResponse, RESTPostAPIWorkspaceInviteResponse, RESTPostAPIWorkspaceResourceFolderBody, RESTPostAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceResourceLinkResponse, RESTPostAPIWorkspaceRoleBody, RESTPostAPIWorkspaceRoleResponse,
|
|
199
|
+
export type { RESTDeleteAPIWorkspaceFavoriteResponse, RESTDeleteAPIWorkspaceInviteResponse, RESTDeleteAPIWorkspaceMemberResponse, RESTDeleteAPIWorkspaceResourceFolderResourceResponse, RESTDeleteAPIWorkspaceResourceFolderResponse, RESTDeleteAPIWorkspaceResourceLinkResponse, RESTDeleteAPIWorkspaceResponse, RESTDeleteAPIWorkspaceRoleResponse, RESTGetAPIWorkspaceActionRequestsQuery, RESTGetAPIWorkspaceActionRequestsResponse, RESTGetAPIWorkspaceActivitiesExportQuery, RESTGetAPIWorkspaceInfoResponse, RESTGetAPIWorkspaceInvitePreviewResponse, RESTGetAPIWorkspaceInvitesResponse, RESTGetAPIWorkspaceMembersResponse, RESTGetAPIWorkspaceRolesResponse, RESTGetAPIWorkspacesResponse, RESTPatchAPIWorkspaceResourceFolderBody, RESTPatchAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceActionRequestApproveResponse, RESTPostAPIWorkspaceActionRequestBody, RESTPostAPIWorkspaceActionRequestRejectResponse, RESTPostAPIWorkspaceActionRequestResponse, RESTPostAPIWorkspaceCreateBody, RESTPostAPIWorkspaceCreateResponse, RESTPostAPIWorkspaceInviteAcceptResponse, RESTPostAPIWorkspaceInviteBody, RESTPostAPIWorkspaceInviteDeclineResponse, RESTPostAPIWorkspaceInviteResponse, RESTPostAPIWorkspaceResourceFolderBody, RESTPostAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceResourceLinkResponse, RESTPostAPIWorkspaceRoleBody, RESTPostAPIWorkspaceRoleResponse, RESTPutAPIWorkspaceFavoriteBody, RESTPutAPIWorkspaceFavoriteResponse, RESTPutAPIWorkspaceMemberBody, RESTPutAPIWorkspaceMemberResponse, RESTPutAPIWorkspaceResourceFolderResourceBody, RESTPutAPIWorkspaceResourceFolderResourceResponse, RESTPutAPIWorkspaceRoleBody, RESTPutAPIWorkspaceRoleResponse, RESTPutAPIWorkspaceUpdateBody, RESTPutAPIWorkspaceUpdateResponse };
|
package/rest/v1/workspace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["workspace.ts"],"sourcesContent":["import type {\n\tAPIPayload,\n\tAPIWorkspace,\n\tAPIWorkspaceActionRequest,\n\tAPIWorkspaceInfoResponse,\n\tAPIWorkspaceInvite,\n\tAPIWorkspaceInviteCreated,\n\tAPIWorkspaceInvitePreview,\n\tAPIWorkspaceMember,\n\tAPIWorkspaceResourceFolder,\n\tAPIWorkspaceResourceOrganization,\n\tAPIWorkspaceRole,\n\tISODateString,\n\tWorkspaceActionRequestAction,\n\tWorkspaceActionRequestParams,\n\tWorkspaceActionRequestStatus,\n\tWorkspaceFolderColor,\n\tWorkspacePermission,\n} from \"../../v1\";\n\n// ---------------------------------------------------------------------------\n// Workspace\n// ---------------------------------------------------------------------------\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport type RESTGetAPIWorkspaceInfoResponse = APIPayload<APIWorkspaceInfoResponse>;\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get-all\n */\nexport type RESTGetAPIWorkspacesResponse = APIPayload<APIWorkspace[]>;\n\n/**\n * `POST /v1/workspaces` — the caller becomes the owner (requires a plan with workspaces).\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/create\n */\nexport interface RESTPostAPIWorkspaceCreateBody {\n\tname: string;\n\tdescription?: string;\n}\n/** Returns the full workspace view, same as `GET /v1/workspaces/:id`. */\nexport type RESTPostAPIWorkspaceCreateResponse = APIPayload<APIWorkspaceInfoResponse>;\n\n/**\n * `PUT /v1/workspaces/:id` — owner only. At least one field.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/update\n */\nexport type RESTPutAPIWorkspaceUpdateBody = Partial<RESTPostAPIWorkspaceCreateBody>;\nexport type RESTPutAPIWorkspaceUpdateResponse = APIPayload<APIWorkspace>;\n\n/**\n * `DELETE /v1/workspaces/:id` — soft delete, owner only.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/delete\n */\nexport type RESTDeleteAPIWorkspaceResponse = APIPayload<null>;\n\n/**\n * `POST /v1/workspaces/:id/transfer-ownership` — owner only.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/transfer-ownership\n */\nexport interface RESTPostAPIWorkspaceTransferOwnershipBody {\n\tuser_id: string;\n}\nexport type RESTPostAPIWorkspaceTransferOwnershipResponse = APIPayload<APIWorkspace>;\n\n// ---------------------------------------------------------------------------\n// Saved resource organization\n// ---------------------------------------------------------------------------\n\nexport interface RESTPostAPIWorkspaceResourceFolderBody {\n\tname: string;\n\tcolor?: WorkspaceFolderColor;\n\tposition?: number;\n}\nexport type RESTPostAPIWorkspaceResourceFolderResponse = APIPayload<APIWorkspaceResourceFolder>;\n\nexport interface RESTPatchAPIWorkspaceResourceFolderBody {\n\tname?: string;\n\tcolor?: WorkspaceFolderColor;\n\tposition?: number;\n}\nexport type RESTPatchAPIWorkspaceResourceFolderResponse = APIPayload<APIWorkspaceResourceFolder>;\nexport type RESTDeleteAPIWorkspaceResourceFolderResponse = APIPayload<null>;\n\nexport interface RESTPutAPIWorkspaceResourceFolderResourceBody {\n\tposition?: number;\n}\nexport type RESTPutAPIWorkspaceResourceFolderResourceResponse = APIPayload<APIWorkspaceResourceOrganization>;\nexport type RESTDeleteAPIWorkspaceResourceFolderResourceResponse = APIPayload<APIWorkspaceResourceOrganization>;\n\nexport interface RESTPutAPIWorkspaceFavoriteBody {\n\tposition?: number;\n}\nexport type RESTPutAPIWorkspaceFavoriteResponse = APIPayload<APIWorkspaceResourceOrganization>;\nexport type RESTDeleteAPIWorkspaceFavoriteResponse = APIPayload<APIWorkspaceResourceOrganization>;\n\n// ---------------------------------------------------------------------------\n// Members\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/members` — permission `members:read`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/members/list\n */\nexport type RESTGetAPIWorkspaceMembersResponse = APIPayload<APIWorkspaceMember[]>;\n\n/**\n * `PUT /v1/workspaces/:id/members/:user_id` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/members/update\n */\nexport interface RESTPutAPIWorkspaceMemberBody {\n\trole_id?: string;\n\texpires_at?: ISODateString | null;\n}\nexport type RESTPutAPIWorkspaceMemberResponse = APIPayload<APIWorkspaceMember>;\n\n/**\n * `DELETE /v1/workspaces/:id/members/:user_id` — permission `members:manage`, or the member leaving on their own.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/members/remove\n */\nexport type RESTDeleteAPIWorkspaceMemberResponse = APIPayload<null>;\n\n// ---------------------------------------------------------------------------\n// Roles\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/roles` — permission `members:read`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/list\n */\nexport type RESTGetAPIWorkspaceRolesResponse = APIPayload<APIWorkspaceRole[]>;\n\n/**\n * `POST /v1/workspaces/:id/roles` — permission `roles:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/create\n */\nexport interface RESTPostAPIWorkspaceRoleBody {\n\tname: string;\n\tpermissions: WorkspacePermission[];\n\tposition?: number;\n}\nexport type RESTPostAPIWorkspaceRoleResponse = APIPayload<APIWorkspaceRole>;\n\n/**\n * `PUT /v1/workspaces/:id/roles/:role_id` — permission `roles:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/update\n */\nexport type RESTPutAPIWorkspaceRoleBody = RESTPostAPIWorkspaceRoleBody;\nexport type RESTPutAPIWorkspaceRoleResponse = APIPayload<APIWorkspaceRole>;\n\n/**\n * `DELETE /v1/workspaces/:id/roles/:role_id` — permission `roles:manage`. A role still used by a\n * member or pending invite is rejected with `WORKSPACE_ROLE_IN_USE`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/delete\n */\nexport type RESTDeleteAPIWorkspaceRoleResponse = APIPayload<null>;\n\n// ---------------------------------------------------------------------------\n// Invites\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/invites` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/list\n */\nexport type RESTGetAPIWorkspaceInvitesResponse = APIPayload<APIWorkspaceInvite[]>;\n\n/**\n * `POST /v1/workspaces/:id/invites` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/create\n */\nexport type RESTPostAPIWorkspaceInviteBody = { kind: \"email\"; email: string; role_id: string; expires_in_days?: number } | { kind: \"link\"; role_id: string; max_uses?: number; expires_in_days?: number };\nexport type RESTPostAPIWorkspaceInviteResponse = APIPayload<APIWorkspaceInviteCreated>;\n\n/**\n * `DELETE /v1/workspaces/:id/invites/:invite_id` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/revoke\n */\nexport type RESTDeleteAPIWorkspaceInviteResponse = APIPayload<null>;\n\n/**\n * `GET /v1/workspaces/invites/:token` — any authenticated user.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/preview\n */\nexport type RESTGetAPIWorkspaceInvitePreviewResponse = APIPayload<APIWorkspaceInvitePreview>;\n\n/**\n * `POST /v1/workspaces/invites/:token/accept` — any authenticated user.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/accept\n */\nexport type RESTPostAPIWorkspaceInviteAcceptResponse = APIPayload<Pick<APIWorkspace, \"id\" | \"name\">>;\n\n/**\n * `POST /v1/workspaces/invites/:token/decline` — any authenticated user.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/decline\n */\nexport type RESTPostAPIWorkspaceInviteDeclineResponse = APIPayload<null>;\n\n// ---------------------------------------------------------------------------\n// Projects (apps/databases) — owner only\n// ---------------------------------------------------------------------------\n\n/**\n * `POST /v1/workspaces/:id/apps/:app_id` and `POST /v1/workspaces/:id/databases/:db_id` — owner only.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/links/add-app\n */\nexport type RESTPostAPIWorkspaceResourceLinkResponse = APIPayload<null>;\n\n/**\n * `DELETE /v1/workspaces/:id/apps/:app_id` and `DELETE /v1/workspaces/:id/databases/:db_id` — owner only.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/links/remove-app\n */\nexport type RESTDeleteAPIWorkspaceResourceLinkResponse = APIPayload<null>;\n\n// ---------------------------------------------------------------------------\n// Action requests\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/action-requests` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/list\n */\nexport interface RESTGetAPIWorkspaceActionRequestsQuery {\n\tstatus?: WorkspaceActionRequestStatus;\n}\nexport type RESTGetAPIWorkspaceActionRequestsResponse = APIPayload<APIWorkspaceActionRequest[]>;\n\n/**\n * `POST /v1/workspaces/:id/action-requests` — any member (who lacks the action's permission).\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/create\n */\nexport type RESTPostAPIWorkspaceActionRequestBody = {\n\t[A in WorkspaceActionRequestAction]: { action: A; resource_id: string } & (WorkspaceActionRequestParams[A] extends Record<string, never> ? { params?: WorkspaceActionRequestParams[A] } : { params: WorkspaceActionRequestParams[A] });\n}[WorkspaceActionRequestAction];\nexport type RESTPostAPIWorkspaceActionRequestResponse = APIPayload<APIWorkspaceActionRequest>;\n\n/**\n * `POST /v1/workspaces/:id/action-requests/:rid/approve` — permission `members:manage` plus\n * the permission the action requires.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/approve\n */\nexport type RESTPostAPIWorkspaceActionRequestApproveResponse = APIPayload<APIWorkspaceActionRequest>;\n\n/**\n * `POST /v1/workspaces/:id/action-requests/:rid/reject` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/reject\n */\nexport type RESTPostAPIWorkspaceActionRequestRejectResponse = APIPayload<APIWorkspaceActionRequest>;\n\n// ---------------------------------------------------------------------------\n// Export\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/activities/export` — permission `activities:read`. CSV, 90-day window.\n * Dashboard session only.\n */\nexport interface RESTGetAPIWorkspaceActivitiesExportQuery {\n\tfrom?: ISODateString;\n\tto?: ISODateString;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
1
|
+
{"version":3,"sources":["workspace.ts"],"sourcesContent":["import type {\n\tAPIPayload,\n\tAPIWorkspace,\n\tAPIWorkspaceActionRequest,\n\tAPIWorkspaceInfoResponse,\n\tAPIWorkspaceInvite,\n\tAPIWorkspaceInviteCreated,\n\tAPIWorkspaceInvitePreview,\n\tAPIWorkspaceMember,\n\tAPIWorkspaceResourceFolder,\n\tAPIWorkspaceResourceOrganization,\n\tAPIWorkspaceRole,\n\tISODateString,\n\tWorkspaceActionRequestAction,\n\tWorkspaceActionRequestParams,\n\tWorkspaceActionRequestStatus,\n\tWorkspaceFolderColor,\n\tWorkspacePermission,\n} from \"../../v1\";\n\n// ---------------------------------------------------------------------------\n// Workspace\n// ---------------------------------------------------------------------------\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get\n */\nexport type RESTGetAPIWorkspaceInfoResponse = APIPayload<APIWorkspaceInfoResponse>;\n\n/**\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/get-all\n */\nexport type RESTGetAPIWorkspacesResponse = APIPayload<APIWorkspace[]>;\n\n/**\n * `POST /v1/workspaces` — the caller becomes the owner (requires a plan with workspaces).\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/create\n */\nexport interface RESTPostAPIWorkspaceCreateBody {\n\tname: string;\n\tdescription?: string;\n}\n/** Returns the full workspace view, same as `GET /v1/workspaces/:id`. */\nexport type RESTPostAPIWorkspaceCreateResponse = APIPayload<APIWorkspaceInfoResponse>;\n\n/**\n * `PUT /v1/workspaces/:id` — owner only. At least one field.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/update\n */\nexport type RESTPutAPIWorkspaceUpdateBody = Partial<RESTPostAPIWorkspaceCreateBody>;\nexport type RESTPutAPIWorkspaceUpdateResponse = APIPayload<APIWorkspace>;\n\n/**\n * `DELETE /v1/workspaces/:id` — soft delete, owner only.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/delete\n */\nexport type RESTDeleteAPIWorkspaceResponse = APIPayload<null>;\n\n// ---------------------------------------------------------------------------\n// Saved resource organization\n// ---------------------------------------------------------------------------\n\nexport interface RESTPostAPIWorkspaceResourceFolderBody {\n\tname: string;\n\tcolor?: WorkspaceFolderColor;\n\tposition?: number;\n}\nexport type RESTPostAPIWorkspaceResourceFolderResponse = APIPayload<APIWorkspaceResourceFolder>;\n\nexport interface RESTPatchAPIWorkspaceResourceFolderBody {\n\tname?: string;\n\tcolor?: WorkspaceFolderColor;\n\tposition?: number;\n}\nexport type RESTPatchAPIWorkspaceResourceFolderResponse = APIPayload<APIWorkspaceResourceFolder>;\nexport type RESTDeleteAPIWorkspaceResourceFolderResponse = APIPayload<null>;\n\nexport interface RESTPutAPIWorkspaceResourceFolderResourceBody {\n\tposition?: number;\n}\nexport type RESTPutAPIWorkspaceResourceFolderResourceResponse = APIPayload<APIWorkspaceResourceOrganization>;\nexport type RESTDeleteAPIWorkspaceResourceFolderResourceResponse = APIPayload<APIWorkspaceResourceOrganization>;\n\nexport interface RESTPutAPIWorkspaceFavoriteBody {\n\tposition?: number;\n}\nexport type RESTPutAPIWorkspaceFavoriteResponse = APIPayload<APIWorkspaceResourceOrganization>;\nexport type RESTDeleteAPIWorkspaceFavoriteResponse = APIPayload<APIWorkspaceResourceOrganization>;\n\n// ---------------------------------------------------------------------------\n// Members\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/members` — permission `members:read`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/members/list\n */\nexport type RESTGetAPIWorkspaceMembersResponse = APIPayload<APIWorkspaceMember[]>;\n\n/**\n * `PUT /v1/workspaces/:id/members/:user_id` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/members/update\n */\nexport interface RESTPutAPIWorkspaceMemberBody {\n\trole_id?: string;\n\texpires_at?: ISODateString | null;\n}\nexport type RESTPutAPIWorkspaceMemberResponse = APIPayload<APIWorkspaceMember>;\n\n/**\n * `DELETE /v1/workspaces/:id/members/:user_id` — permission `members:manage`, or the member leaving on their own.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/members/remove\n */\nexport type RESTDeleteAPIWorkspaceMemberResponse = APIPayload<null>;\n\n// ---------------------------------------------------------------------------\n// Roles\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/roles` — permission `members:read`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/list\n */\nexport type RESTGetAPIWorkspaceRolesResponse = APIPayload<APIWorkspaceRole[]>;\n\n/**\n * `POST /v1/workspaces/:id/roles` — permission `roles:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/create\n */\nexport interface RESTPostAPIWorkspaceRoleBody {\n\tname: string;\n\tpermissions: WorkspacePermission[];\n\tposition?: number;\n}\nexport type RESTPostAPIWorkspaceRoleResponse = APIPayload<APIWorkspaceRole>;\n\n/**\n * `PUT /v1/workspaces/:id/roles/:role_id` — permission `roles:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/update\n */\nexport type RESTPutAPIWorkspaceRoleBody = RESTPostAPIWorkspaceRoleBody;\nexport type RESTPutAPIWorkspaceRoleResponse = APIPayload<APIWorkspaceRole>;\n\n/**\n * `DELETE /v1/workspaces/:id/roles/:role_id` — permission `roles:manage`. A role still used by a\n * member or pending invite is rejected with `WORKSPACE_ROLE_IN_USE`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/roles/delete\n */\nexport type RESTDeleteAPIWorkspaceRoleResponse = APIPayload<null>;\n\n// ---------------------------------------------------------------------------\n// Invites\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/invites` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/list\n */\nexport type RESTGetAPIWorkspaceInvitesResponse = APIPayload<APIWorkspaceInvite[]>;\n\n/**\n * `POST /v1/workspaces/:id/invites` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/create\n */\nexport type RESTPostAPIWorkspaceInviteBody = { kind: \"email\"; email: string; role_id: string; expires_in_days?: number } | { kind: \"link\"; role_id: string; max_uses?: number; expires_in_days?: number };\nexport type RESTPostAPIWorkspaceInviteResponse = APIPayload<APIWorkspaceInviteCreated>;\n\n/**\n * `DELETE /v1/workspaces/:id/invites/:invite_id` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/revoke\n */\nexport type RESTDeleteAPIWorkspaceInviteResponse = APIPayload<null>;\n\n/**\n * `GET /v1/workspaces/invites/:token` — any authenticated user.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/preview\n */\nexport type RESTGetAPIWorkspaceInvitePreviewResponse = APIPayload<APIWorkspaceInvitePreview>;\n\n/**\n * `POST /v1/workspaces/invites/:token/accept` — any authenticated user.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/accept\n */\nexport type RESTPostAPIWorkspaceInviteAcceptResponse = APIPayload<Pick<APIWorkspace, \"id\" | \"name\">>;\n\n/**\n * `POST /v1/workspaces/invites/:token/decline` — any authenticated user.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/invites/decline\n */\nexport type RESTPostAPIWorkspaceInviteDeclineResponse = APIPayload<null>;\n\n// ---------------------------------------------------------------------------\n// Projects (apps/databases) — owner only\n// ---------------------------------------------------------------------------\n\n/**\n * `POST /v1/workspaces/:id/apps/:app_id` and `POST /v1/workspaces/:id/databases/:db_id` — owner only.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/links/add-app\n */\nexport type RESTPostAPIWorkspaceResourceLinkResponse = APIPayload<null>;\n\n/**\n * `DELETE /v1/workspaces/:id/apps/:app_id` and `DELETE /v1/workspaces/:id/databases/:db_id` — owner only.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/links/remove-app\n */\nexport type RESTDeleteAPIWorkspaceResourceLinkResponse = APIPayload<null>;\n\n// ---------------------------------------------------------------------------\n// Action requests\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/action-requests` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/list\n */\nexport interface RESTGetAPIWorkspaceActionRequestsQuery {\n\tstatus?: WorkspaceActionRequestStatus;\n}\nexport type RESTGetAPIWorkspaceActionRequestsResponse = APIPayload<APIWorkspaceActionRequest[]>;\n\n/**\n * `POST /v1/workspaces/:id/action-requests` — any member (who lacks the action's permission).\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/create\n */\nexport type RESTPostAPIWorkspaceActionRequestBody = {\n\t[A in WorkspaceActionRequestAction]: { action: A; resource_id: string } & (WorkspaceActionRequestParams[A] extends Record<string, never> ? { params?: WorkspaceActionRequestParams[A] } : { params: WorkspaceActionRequestParams[A] });\n}[WorkspaceActionRequestAction];\nexport type RESTPostAPIWorkspaceActionRequestResponse = APIPayload<APIWorkspaceActionRequest>;\n\n/**\n * `POST /v1/workspaces/:id/action-requests/:rid/approve` — permission `members:manage` plus\n * the permission the action requires.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/approve\n */\nexport type RESTPostAPIWorkspaceActionRequestApproveResponse = APIPayload<APIWorkspaceActionRequest>;\n\n/**\n * `POST /v1/workspaces/:id/action-requests/:rid/reject` — permission `members:manage`.\n * @see https://docs.vertracloud.app/api-reference/endpoint/workspaces/action-requests/reject\n */\nexport type RESTPostAPIWorkspaceActionRequestRejectResponse = APIPayload<APIWorkspaceActionRequest>;\n\n// ---------------------------------------------------------------------------\n// Export\n// ---------------------------------------------------------------------------\n\n/**\n * `GET /v1/workspaces/:id/activities/export` — permission `activities:read`. CSV, 90-day window.\n * Dashboard session only.\n */\nexport interface RESTGetAPIWorkspaceActivitiesExportQuery {\n\tfrom?: ISODateString;\n\tto?: ISODateString;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/v1.d.ts
CHANGED
|
@@ -25,5 +25,5 @@ export { RESTPostAPIRedeemResponse } from './rest/v1/redeem.js';
|
|
|
25
25
|
export { RESTGetAPIGroupedSnapshotsQuery, RESTGetAPIGroupedSnapshotsResponse, RESTGetAPISnapshotDownloadQuery, RESTGetAPISnapshotDownloadResponse, RESTGetAPISnapshotsQuery, RESTGetAPISnapshotsResponse, RESTPostAPISnapshotCreateQuery, RESTPostAPISnapshotCreateResponse, RESTPostAPISnapshotRestoreBody, RESTPostAPISnapshotRestoreQuery, RESTPostAPISnapshotRestoreResponse } from './rest/v1/snapshot.js';
|
|
26
26
|
export { RESTGetAPIStatusResponse } from './rest/v1/status.js';
|
|
27
27
|
export { RESTDeleteAPIUserFavoriteResponse, RESTDeleteAPIUserResourceFolderResourceResponse, RESTDeleteAPIUserResourceFolderResponse, RESTGetAPIUserApiKeyRequestsQuery, RESTGetAPIUserApiKeyRequestsResponse, RESTGetAPIUserInfoResponse, RESTGetAPIUserSessionsResponse, RESTPatchAPIUserMeBody, RESTPatchAPIUserMeResponse, RESTPatchAPIUserResourceFolderBody, RESTPatchAPIUserResourceFolderResponse, RESTPostAPIUserDowngradeResponse, RESTPostAPIUserGenerateApiKeyResponse, RESTPostAPIUserResourceFolderBody, RESTPostAPIUserResourceFolderResponse, RESTPutAPIUserFavoriteBody, RESTPutAPIUserFavoriteResponse, RESTPutAPIUserResourceFolderResourceBody, RESTPutAPIUserResourceFolderResourceResponse } from './rest/v1/user.js';
|
|
28
|
-
export { RESTDeleteAPIWorkspaceFavoriteResponse, RESTDeleteAPIWorkspaceInviteResponse, RESTDeleteAPIWorkspaceMemberResponse, RESTDeleteAPIWorkspaceResourceFolderResourceResponse, RESTDeleteAPIWorkspaceResourceFolderResponse, RESTDeleteAPIWorkspaceResourceLinkResponse, RESTDeleteAPIWorkspaceResponse, RESTDeleteAPIWorkspaceRoleResponse, RESTGetAPIWorkspaceActionRequestsQuery, RESTGetAPIWorkspaceActionRequestsResponse, RESTGetAPIWorkspaceActivitiesExportQuery, RESTGetAPIWorkspaceInfoResponse, RESTGetAPIWorkspaceInvitePreviewResponse, RESTGetAPIWorkspaceInvitesResponse, RESTGetAPIWorkspaceMembersResponse, RESTGetAPIWorkspaceRolesResponse, RESTGetAPIWorkspacesResponse, RESTPatchAPIWorkspaceResourceFolderBody, RESTPatchAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceActionRequestApproveResponse, RESTPostAPIWorkspaceActionRequestBody, RESTPostAPIWorkspaceActionRequestRejectResponse, RESTPostAPIWorkspaceActionRequestResponse, RESTPostAPIWorkspaceCreateBody, RESTPostAPIWorkspaceCreateResponse, RESTPostAPIWorkspaceInviteAcceptResponse, RESTPostAPIWorkspaceInviteBody, RESTPostAPIWorkspaceInviteDeclineResponse, RESTPostAPIWorkspaceInviteResponse, RESTPostAPIWorkspaceResourceFolderBody, RESTPostAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceResourceLinkResponse, RESTPostAPIWorkspaceRoleBody, RESTPostAPIWorkspaceRoleResponse,
|
|
28
|
+
export { RESTDeleteAPIWorkspaceFavoriteResponse, RESTDeleteAPIWorkspaceInviteResponse, RESTDeleteAPIWorkspaceMemberResponse, RESTDeleteAPIWorkspaceResourceFolderResourceResponse, RESTDeleteAPIWorkspaceResourceFolderResponse, RESTDeleteAPIWorkspaceResourceLinkResponse, RESTDeleteAPIWorkspaceResponse, RESTDeleteAPIWorkspaceRoleResponse, RESTGetAPIWorkspaceActionRequestsQuery, RESTGetAPIWorkspaceActionRequestsResponse, RESTGetAPIWorkspaceActivitiesExportQuery, RESTGetAPIWorkspaceInfoResponse, RESTGetAPIWorkspaceInvitePreviewResponse, RESTGetAPIWorkspaceInvitesResponse, RESTGetAPIWorkspaceMembersResponse, RESTGetAPIWorkspaceRolesResponse, RESTGetAPIWorkspacesResponse, RESTPatchAPIWorkspaceResourceFolderBody, RESTPatchAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceActionRequestApproveResponse, RESTPostAPIWorkspaceActionRequestBody, RESTPostAPIWorkspaceActionRequestRejectResponse, RESTPostAPIWorkspaceActionRequestResponse, RESTPostAPIWorkspaceCreateBody, RESTPostAPIWorkspaceCreateResponse, RESTPostAPIWorkspaceInviteAcceptResponse, RESTPostAPIWorkspaceInviteBody, RESTPostAPIWorkspaceInviteDeclineResponse, RESTPostAPIWorkspaceInviteResponse, RESTPostAPIWorkspaceResourceFolderBody, RESTPostAPIWorkspaceResourceFolderResponse, RESTPostAPIWorkspaceResourceLinkResponse, RESTPostAPIWorkspaceRoleBody, RESTPostAPIWorkspaceRoleResponse, RESTPutAPIWorkspaceFavoriteBody, RESTPutAPIWorkspaceFavoriteResponse, RESTPutAPIWorkspaceMemberBody, RESTPutAPIWorkspaceMemberResponse, RESTPutAPIWorkspaceResourceFolderResourceBody, RESTPutAPIWorkspaceResourceFolderResourceResponse, RESTPutAPIWorkspaceRoleBody, RESTPutAPIWorkspaceRoleResponse, RESTPutAPIWorkspaceUpdateBody, RESTPutAPIWorkspaceUpdateResponse } from './rest/v1/workspace.js';
|
|
29
29
|
export { Brand, Prettify } from './utils.js';
|
package/v1.js
CHANGED
|
@@ -576,6 +576,7 @@ var API_ERROR_CODES = {
|
|
|
576
576
|
REPO_ALREADY_LINKED: "REPO_ALREADY_LINKED",
|
|
577
577
|
RESTORE_COOLDOWN: "RESTORE_COOLDOWN",
|
|
578
578
|
SNAPSHOT_ENGINE_MISMATCH: "SNAPSHOT_ENGINE_MISMATCH",
|
|
579
|
+
SNAPSHOT_FAILED: "SNAPSHOT_FAILED",
|
|
579
580
|
SNAPSHOT_IMPORT_FAILED: "SNAPSHOT_IMPORT_FAILED",
|
|
580
581
|
SNAPSHOT_NOT_FOUND: "SNAPSHOT_NOT_FOUND",
|
|
581
582
|
SNAPSHOT_RATE_LIMITED: "SNAPSHOT_RATE_LIMITED",
|