@vertracloud/api-types 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +63 -35
  2. package/common/v1.d.ts +23 -7
  3. package/common/v1.js.map +1 -1
  4. package/package.json +5 -5
  5. package/payloads/v1/activity.d.ts +22 -10
  6. package/payloads/v1/activity.js +9 -0
  7. package/payloads/v1/activity.js.map +1 -1
  8. package/payloads/v1/activity.mjs +8 -0
  9. package/payloads/v1/api-error.d.ts +302 -0
  10. package/payloads/v1/api-error.js +216 -0
  11. package/payloads/v1/api-error.js.map +1 -0
  12. package/payloads/v1/api-error.mjs +188 -0
  13. package/payloads/v1/api-key.d.ts +88 -0
  14. package/payloads/v1/api-key.js +267 -0
  15. package/payloads/v1/api-key.js.map +1 -0
  16. package/payloads/v1/api-key.mjs +235 -0
  17. package/payloads/v1/application.d.ts +234 -47
  18. package/payloads/v1/application.js +34 -3
  19. package/payloads/v1/application.js.map +1 -1
  20. package/payloads/v1/application.mjs +28 -2
  21. package/payloads/v1/database-data.d.ts +329 -0
  22. package/payloads/v1/database-data.js +63 -0
  23. package/payloads/v1/database-data.js.map +1 -0
  24. package/payloads/v1/database-data.mjs +35 -0
  25. package/payloads/v1/database.d.ts +29 -31
  26. package/payloads/v1/database.js.map +1 -1
  27. package/payloads/v1/github.d.ts +20 -0
  28. package/{rest/v1/credits.js → payloads/v1/github.js} +4 -4
  29. package/payloads/v1/github.js.map +1 -0
  30. package/payloads/v1/github.mjs +1 -0
  31. package/payloads/v1/index.d.ts +12 -9
  32. package/payloads/v1/index.js +630 -10
  33. package/payloads/v1/index.js.map +1 -1
  34. package/payloads/v1/index.mjs +590 -9
  35. package/payloads/v1/notification.d.ts +2 -3
  36. package/payloads/v1/notification.js.map +1 -1
  37. package/payloads/v1/oauth.d.ts +27 -0
  38. package/payloads/v1/oauth.js +34 -0
  39. package/payloads/v1/oauth.js.map +1 -0
  40. package/payloads/v1/oauth.mjs +8 -0
  41. package/payloads/v1/orders.d.ts +52 -27
  42. package/payloads/v1/orders.js +30 -0
  43. package/payloads/v1/orders.js.map +1 -1
  44. package/payloads/v1/orders.mjs +21 -0
  45. package/payloads/v1/redeem.d.ts +1 -1
  46. package/payloads/v1/redeem.js.map +1 -1
  47. package/payloads/v1/snapshot.d.ts +37 -7
  48. package/payloads/v1/snapshot.js +8 -2
  49. package/payloads/v1/snapshot.js.map +1 -1
  50. package/payloads/v1/snapshot.mjs +6 -1
  51. package/payloads/v1/status.d.ts +2 -2
  52. package/payloads/v1/status.js.map +1 -1
  53. package/payloads/v1/user.d.ts +54 -20
  54. package/payloads/v1/user.js +16 -0
  55. package/payloads/v1/user.js.map +1 -1
  56. package/payloads/v1/user.mjs +9 -0
  57. package/payloads/v1/workspace.d.ts +296 -25
  58. package/payloads/v1/workspace.js +128 -8
  59. package/payloads/v1/workspace.js.map +1 -1
  60. package/payloads/v1/workspace.mjs +115 -7
  61. package/rest/v1/activity.d.ts +20 -9
  62. package/rest/v1/activity.js.map +1 -1
  63. package/rest/v1/api-key.d.ts +26 -0
  64. package/{payloads/v1/credits.js → rest/v1/api-key.js} +4 -4
  65. package/rest/v1/api-key.js.map +1 -0
  66. package/rest/v1/api-key.mjs +1 -0
  67. package/rest/v1/application.d.ts +302 -30
  68. package/rest/v1/application.js.map +1 -1
  69. package/rest/v1/database-data.d.ts +234 -0
  70. package/rest/v1/database-data.js +19 -0
  71. package/rest/v1/database-data.js.map +1 -0
  72. package/rest/v1/database-data.mjs +1 -0
  73. package/rest/v1/database.d.ts +55 -14
  74. package/rest/v1/database.js.map +1 -1
  75. package/rest/v1/github.d.ts +22 -0
  76. package/rest/v1/{wing.js → github.js} +4 -4
  77. package/rest/v1/github.js.map +1 -0
  78. package/rest/v1/github.mjs +1 -0
  79. package/rest/v1/index.d.ts +16 -11
  80. package/rest/v1/index.js.map +1 -1
  81. package/rest/v1/notification.d.ts +2 -3
  82. package/rest/v1/notification.js.map +1 -1
  83. package/rest/v1/oauth.d.ts +60 -0
  84. package/{payloads/v1/wing.js → rest/v1/oauth.js} +4 -4
  85. package/rest/v1/oauth.js.map +1 -0
  86. package/rest/v1/oauth.mjs +1 -0
  87. package/rest/v1/orders.d.ts +28 -7
  88. package/rest/v1/orders.js.map +1 -1
  89. package/rest/v1/redeem.d.ts +2 -1
  90. package/rest/v1/redeem.js.map +1 -1
  91. package/rest/v1/snapshot.d.ts +45 -10
  92. package/rest/v1/snapshot.js.map +1 -1
  93. package/rest/v1/status.d.ts +1 -0
  94. package/rest/v1/user.d.ts +56 -7
  95. package/rest/v1/user.js.map +1 -1
  96. package/rest/v1/workspace.d.ts +186 -18
  97. package/rest/v1/workspace.js.map +1 -1
  98. package/v1.d.ts +24 -19
  99. package/v1.js +630 -10
  100. package/v1.js.map +1 -1
  101. package/v1.mjs +590 -9
  102. package/payloads/v1/credits.d.ts +0 -56
  103. package/payloads/v1/credits.js.map +0 -1
  104. package/payloads/v1/credits.mjs +0 -1
  105. package/payloads/v1/wing.d.ts +0 -133
  106. package/payloads/v1/wing.js.map +0 -1
  107. package/payloads/v1/wing.mjs +0 -1
  108. package/rest/v1/credits.d.ts +0 -17
  109. package/rest/v1/credits.js.map +0 -1
  110. package/rest/v1/credits.mjs +0 -1
  111. package/rest/v1/wing.d.ts +0 -38
  112. package/rest/v1/wing.js.map +0 -1
  113. package/rest/v1/wing.mjs +0 -1
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // payloads/v1/api-error.ts
21
+ var api_error_exports = {};
22
+ __export(api_error_exports, {
23
+ APIErrorCode: () => APIErrorCode,
24
+ API_ERROR_CODES: () => API_ERROR_CODES
25
+ });
26
+ module.exports = __toCommonJS(api_error_exports);
27
+
28
+ // payloads/v1/workspace.ts
29
+ var WORKSPACE_PERMISSIONS = {
30
+ "apps:read": { group: "apps" },
31
+ "apps:manage": { group: "apps" },
32
+ "apps:lifecycle": { group: "apps" },
33
+ "apps:envs": { group: "apps" },
34
+ "apps:files": { group: "apps" },
35
+ "apps:delete": { group: "apps" },
36
+ "databases:read": { group: "databases" },
37
+ "databases:manage": { group: "databases" },
38
+ "databases:lifecycle": { group: "databases" },
39
+ "databases:credentials": { group: "databases" },
40
+ "databases:data": { group: "databases" },
41
+ "databases:delete": { group: "databases" },
42
+ "snapshots:read": { group: "snapshots" },
43
+ "snapshots:manage": { group: "snapshots" },
44
+ "members:read": { group: "members" },
45
+ "members:manage": { group: "members" },
46
+ "roles:manage": { group: "roles" },
47
+ "activities:read": { group: "activities" }
48
+ };
49
+ var WORKSPACE_PERMISSION_LIST = Object.keys(WORKSPACE_PERMISSIONS);
50
+ var WorkspaceFolderColor = { Neutral: "neutral", Red: "red", Orange: "orange", Yellow: "yellow", Green: "green", Blue: "blue", Purple: "purple" };
51
+ var WORKSPACE_FOLDER_COLORS = Object.values(WorkspaceFolderColor);
52
+ var WORKSPACE_ERROR_CODES = {
53
+ WORKSPACE_NOT_FOUND: "WORKSPACE_NOT_FOUND",
54
+ WORKSPACE_NAME_ALREADY_EXISTS: "WORKSPACE_NAME_ALREADY_EXISTS",
55
+ WORKSPACE_MEMBER_LIMIT_REACHED: "WORKSPACE_MEMBER_LIMIT_REACHED",
56
+ WORKSPACE_ROLE_LIMIT_REACHED: "WORKSPACE_ROLE_LIMIT_REACHED",
57
+ WORKSPACE_ROLE_IN_USE: "WORKSPACE_ROLE_IN_USE",
58
+ WORKSPACE_ROLE_NOT_FOUND: "WORKSPACE_ROLE_NOT_FOUND",
59
+ WORKSPACE_ROLE_NAME_ALREADY_EXISTS: "WORKSPACE_ROLE_NAME_ALREADY_EXISTS",
60
+ WORKSPACE_PERMISSION_DENIED: "WORKSPACE_PERMISSION_DENIED",
61
+ WORKSPACE_PERMISSION_ESCALATION: "WORKSPACE_PERMISSION_ESCALATION",
62
+ WORKSPACE_INVITE_NOT_FOUND: "WORKSPACE_INVITE_NOT_FOUND",
63
+ WORKSPACE_INVITE_EXPIRED: "WORKSPACE_INVITE_EXPIRED",
64
+ WORKSPACE_INVITE_EMAIL_MISMATCH: "WORKSPACE_INVITE_EMAIL_MISMATCH",
65
+ WORKSPACE_OWNER_ONLY: "WORKSPACE_OWNER_ONLY",
66
+ WORKSPACE_ACTION_REQUEST_NOT_FOUND: "WORKSPACE_ACTION_REQUEST_NOT_FOUND",
67
+ /** 409 — the request was already approved or rejected. */
68
+ /** 400 — the requester already has the permission; perform the action directly. */
69
+ WORKSPACE_ACTION_NOT_NEEDED: "WORKSPACE_ACTION_NOT_NEEDED",
70
+ /** 400 — the request `params` failed the action's validation (e.g. a snapshot of another resource). */
71
+ WORKSPACE_ACTION_INVALID_PARAMS: "WORKSPACE_ACTION_INVALID_PARAMS",
72
+ /** 409 — a pending request already exists for the same action on the same resource. */
73
+ WORKSPACE_ACTION_REQUEST_PENDING: "WORKSPACE_ACTION_REQUEST_PENDING",
74
+ WORKSPACE_RESOURCE_FOLDER_NOT_FOUND: "WORKSPACE_RESOURCE_FOLDER_NOT_FOUND",
75
+ WORKSPACE_RESOURCE_FOLDER_NAME_CONFLICT: "WORKSPACE_RESOURCE_FOLDER_NAME_CONFLICT",
76
+ WORKSPACE_RESOURCE_NOT_FOUND: "WORKSPACE_RESOURCE_NOT_FOUND",
77
+ PLAN_RESTRICTED_FEATURE: "PLAN_RESTRICTED_FEATURE"
78
+ };
79
+
80
+ // payloads/v1/api-error.ts
81
+ var API_ERROR_CODES = {
82
+ ACCESS_DENIED: "ACCESS_DENIED",
83
+ API_KEY_INVALID: "API_KEY_INVALID",
84
+ API_KEY_IP_DENIED: "API_KEY_IP_DENIED",
85
+ API_KEY_SCOPE_DENIED: "API_KEY_SCOPE_DENIED",
86
+ AUTH_TOKEN_MISSING: "AUTH_TOKEN_MISSING",
87
+ ACCOUNT_BANNED: "ACCOUNT_BANNED",
88
+ APP_SHIELD_COOLDOWN: "APP_SHIELD_COOLDOWN",
89
+ APP_BANNED: "APP_BANNED",
90
+ APP_ALREADY_PUBLISHED: "APP_ALREADY_PUBLISHED",
91
+ APP_HAS_NO_SUBDOMAIN: "APP_HAS_NO_SUBDOMAIN",
92
+ APP_NOT_FOUND: "APP_NOT_FOUND",
93
+ APP_NOT_PUBLISHED: "APP_NOT_PUBLISHED",
94
+ APP_ALREADY_IN_WORKSPACE: "APP_ALREADY_IN_WORKSPACE",
95
+ APP_NOT_FOUND_IN_WORKSPACE: "APP_NOT_FOUND_IN_WORKSPACE",
96
+ BUILD_FAILED: "BUILD_FAILED",
97
+ BUILD_TIMEOUT: "BUILD_TIMEOUT",
98
+ CERTIFICATE_NOT_FOUND: "CERTIFICATE_NOT_FOUND",
99
+ CLEANUP_LANGUAGE_SAME_AS_CURRENT: "CLEANUP_LANGUAGE_SAME_AS_CURRENT",
100
+ CONTAINER_ALREADY_RUNNING: "CONTAINER_ALREADY_RUNNING",
101
+ CUSTOM_DOMAIN_RECORD_NOT_FOUND: "CUSTOM_DOMAIN_RECORD_NOT_FOUND",
102
+ CUSTOM_DOMAIN_REGISTRATION_FAILED: "CUSTOM_DOMAIN_REGISTRATION_FAILED",
103
+ DAILY_QUOTA_EXCEEDED: "DAILY_QUOTA_EXCEEDED",
104
+ DATABASE_NOT_FOUND: "DATABASE_NOT_FOUND",
105
+ DATABASE_NOT_RUNNING: "DATABASE_NOT_RUNNING",
106
+ DATABASE_ALREADY_IN_WORKSPACE: "DATABASE_ALREADY_IN_WORKSPACE",
107
+ DATABASE_NOT_FOUND_IN_WORKSPACE: "DATABASE_NOT_FOUND_IN_WORKSPACE",
108
+ DATABASE_PERSISTENCE_FAILED: "DATABASE_PERSISTENCE_FAILED",
109
+ DEPLOY_FAILED: "DEPLOY_FAILED",
110
+ DEPLOYMENT_NOT_FOUND: "DEPLOYMENT_NOT_FOUND",
111
+ DEPLOY_RATE_LIMITED: "DEPLOY_RATE_LIMITED",
112
+ DOMAIN_ALREADY_IN_USE: "DOMAIN_ALREADY_IN_USE",
113
+ ENV_LIMIT_EXCEEDED: "ENV_LIMIT_EXCEEDED",
114
+ ENV_DUPLICATE_KEY: "ENV_DUPLICATE_KEY",
115
+ ENV_NOT_FOUND: "ENV_NOT_FOUND",
116
+ FILE_TOO_LARGE: "FILE_TOO_LARGE",
117
+ FILE_MODIFIED: "FILE_MODIFIED",
118
+ FILE_NOT_FOUND: "FILE_NOT_FOUND",
119
+ FILE_OR_FOLDER_NOT_FOUND: "FILE_OR_FOLDER_NOT_FOUND",
120
+ FORBIDDEN: "FORBIDDEN",
121
+ FORBIDDEN_DOMAIN: "FORBIDDEN_DOMAIN",
122
+ FORBIDDEN_PATH: "FORBIDDEN_PATH",
123
+ FORBIDDEN_KEY: "FORBIDDEN_KEY",
124
+ FORCED_SNAPSHOT_RATE_LIMIT: "FORCED_SNAPSHOT_RATE_LIMIT",
125
+ FREE_PLAN_NO_WEB_PUBLISH: "FREE_PLAN_NO_WEB_PUBLISH",
126
+ INSTALLATION_NOT_FOUND: "INSTALLATION_NOT_FOUND",
127
+ INSTALL_SHIELD_BLOCKED: "INSTALL_SHIELD_BLOCKED",
128
+ INSTALL_TIMEOUT: "INSTALL_TIMEOUT",
129
+ INSTALL_FAILED: "INSTALL_FAILED",
130
+ INSTALL_CANCELLED: "INSTALL_CANCELLED",
131
+ INSTALL_OUT_OF_MEMORY: "INSTALL_OUT_OF_MEMORY",
132
+ INSTALL_QUEUE_FULL: "INSTALL_QUEUE_FULL",
133
+ INSUFFICIENT_MEMORY: "INSUFFICIENT_MEMORY",
134
+ INTERNAL_SERVER_ERROR: "INTERNAL_SERVER_ERROR",
135
+ INVALID_CONFIG: "INVALID_CONFIG",
136
+ INVALID_CUSTOM_DOMAIN_FORMAT: "INVALID_CUSTOM_DOMAIN_FORMAT",
137
+ INVALID_HOSTNAME_FOR_APP: "INVALID_HOSTNAME_FOR_APP",
138
+ INVALID_LANGUAGE: "INVALID_LANGUAGE",
139
+ INVALID_MEMORY_FORMAT: "INVALID_MEMORY_FORMAT",
140
+ INVALID_MONTHS: "INVALID_MONTHS",
141
+ INVALID_OR_EXPIRED_CODE: "INVALID_OR_EXPIRED_CODE",
142
+ INVALID_PARAMS: "INVALID_PARAMS",
143
+ INVALID_PAYLOAD: "INVALID_PAYLOAD",
144
+ INVALID_PATH: "INVALID_PATH",
145
+ INVALID_PLAN: "INVALID_PLAN",
146
+ INVALID_PLAN_NAME: "INVALID_PLAN_NAME",
147
+ INVALID_RAM_LIMIT: "INVALID_RAM_LIMIT",
148
+ INVALID_RANGE: "INVALID_RANGE",
149
+ INVALID_SUBDOMAIN_FORMAT: "INVALID_SUBDOMAIN_FORMAT",
150
+ INVALID_ZIP: "INVALID_ZIP",
151
+ INVALID_ZIP_STRUCTURE: "INVALID_ZIP_STRUCTURE",
152
+ MAIN_FILE_NOT_FOUND: "MAIN_FILE_NOT_FOUND",
153
+ MAX_APPS_REACHED: "MAX_APPS_REACHED",
154
+ MAX_DATABASES_REACHED: "MAX_DATABASES_REACHED",
155
+ MEMORY_BELOW_MINIMUM: "MEMORY_BELOW_MINIMUM",
156
+ MEMORY_LIMIT_EXCEEDED: "MEMORY_LIMIT_EXCEEDED",
157
+ MEMORY_MUST_BE_INTEGER: "MEMORY_MUST_BE_INTEGER",
158
+ MEMORY_REQUIRED: "MEMORY_REQUIRED",
159
+ MISSING_HEADERS: "MISSING_HEADERS",
160
+ MISSING_PLAN_OR_MONTHS: "MISSING_PLAN_OR_MONTHS",
161
+ MISSING_CONTENT: "MISSING_CONTENT",
162
+ NOT_AN_UPGRADE: "NOT_AN_UPGRADE",
163
+ NO_AUTHORIZED_PATHS: "NO_AUTHORIZED_PATHS",
164
+ NO_CHANGES_PROVIDED: "NO_CHANGES_PROVIDED",
165
+ NO_CUSTOM_DOMAIN: "NO_CUSTOM_DOMAIN",
166
+ NO_FIELDS_TO_UPDATE: "NO_FIELDS_TO_UPDATE",
167
+ NO_FILE_UPLOADED: "NO_FILE_UPLOADED",
168
+ OPERATION_IN_PROGRESS: "OPERATION_IN_PROGRESS",
169
+ ORDER_NOT_FOUND: "ORDER_NOT_FOUND",
170
+ ORDER_NOT_PAID: "ORDER_NOT_PAID",
171
+ ORDER_NOT_PAYABLE: "ORDER_NOT_PAYABLE",
172
+ ORDER_NOT_REFUNDED: "ORDER_NOT_REFUNDED",
173
+ OWNER_APP_WITHOUT_LIMITS: "OWNER_APP_WITHOUT_LIMITS",
174
+ PAYLOAD_TOO_LARGE: "PAYLOAD_TOO_LARGE",
175
+ PENDING_ORDER_LIMIT_REACHED: "PENDING_ORDER_LIMIT_REACHED",
176
+ PLAN_DOES_NOT_SUPPORT_CUSTOM_DOMAIN: "PLAN_DOES_NOT_SUPPORT_CUSTOM_DOMAIN",
177
+ PLAN_DOES_NOT_SUPPORT_CUSTOM_SUBDOMAIN: "PLAN_DOES_NOT_SUPPORT_CUSTOM_SUBDOMAIN",
178
+ PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH: "PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH",
179
+ PLAN_MISMATCH_FOR_RENEWAL: "PLAN_MISMATCH_FOR_RENEWAL",
180
+ PLAN_NOT_ALLOWED: "PLAN_NOT_ALLOWED",
181
+ RATE_LIMIT_EXCEEDED: "RATE_LIMIT_EXCEEDED",
182
+ REFUND_AMOUNT_EXCEEDS_PRICE: "REFUND_AMOUNT_EXCEEDS_PRICE",
183
+ REPO_ALREADY_LINKED: "REPO_ALREADY_LINKED",
184
+ RESTORE_COOLDOWN: "RESTORE_COOLDOWN",
185
+ SNAPSHOT_ENGINE_MISMATCH: "SNAPSHOT_ENGINE_MISMATCH",
186
+ SNAPSHOT_IMPORT_FAILED: "SNAPSHOT_IMPORT_FAILED",
187
+ SNAPSHOT_NOT_FOUND: "SNAPSHOT_NOT_FOUND",
188
+ SNAPSHOT_RATE_LIMITED: "SNAPSHOT_RATE_LIMITED",
189
+ SNAPSHOT_TYPE_MISMATCH: "SNAPSHOT_TYPE_MISMATCH",
190
+ SNAPSHOT_TOO_LARGE: "SNAPSHOT_TOO_LARGE",
191
+ SOURCE_CONFLICT: "SOURCE_CONFLICT",
192
+ SOURCE_REQUIRED: "SOURCE_REQUIRED",
193
+ STORAGE_ABOVE_NEW_LIMIT: "STORAGE_ABOVE_NEW_LIMIT",
194
+ SUBDOMAIN_ALREADY_IN_USE: "SUBDOMAIN_ALREADY_IN_USE",
195
+ SUBDOMAIN_CHANGE_RATE_LIMITED: "SUBDOMAIN_CHANGE_RATE_LIMITED",
196
+ SUBDOMAIN_FORBIDDEN: "SUBDOMAIN_FORBIDDEN",
197
+ SUBDOMAIN_TAKEN: "SUBDOMAIN_TAKEN",
198
+ TYPE_MISMATCH: "TYPE_MISMATCH",
199
+ USER_LIMITS_NOT_FOUND: "USER_LIMITS_NOT_FOUND",
200
+ USER_NOT_FOUND: "USER_NOT_FOUND",
201
+ USER_NOT_IN_WORKSPACE: "USER_NOT_IN_WORKSPACE",
202
+ DATABASE_BANNED: "DATABASE_BANNED",
203
+ VALIDATION_ERROR: "VALIDATION_ERROR",
204
+ ZIP_TOO_LARGE: "ZIP_TOO_LARGE",
205
+ ZIP_TOO_SMALL: "ZIP_TOO_SMALL",
206
+ STORAGE_FULL: "STORAGE_FULL",
207
+ TARGET_IS_DIRECTORY: "TARGET_IS_DIRECTORY",
208
+ ...WORKSPACE_ERROR_CODES
209
+ };
210
+ var APIErrorCode = API_ERROR_CODES;
211
+ // Annotate the CommonJS export names for ESM import in node:
212
+ 0 && (module.exports = {
213
+ APIErrorCode,
214
+ API_ERROR_CODES
215
+ });
216
+ //# sourceMappingURL=api-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["api-error.ts","workspace.ts"],"sourcesContent":["import { WORKSPACE_ERROR_CODES } from \"./workspace\";\n\n/** Stable error sentinels returned by routes available to API keys. */\nexport const API_ERROR_CODES = {\n\tACCESS_DENIED: \"ACCESS_DENIED\",\n\tAPI_KEY_INVALID: \"API_KEY_INVALID\",\n\tAPI_KEY_IP_DENIED: \"API_KEY_IP_DENIED\",\n\tAPI_KEY_SCOPE_DENIED: \"API_KEY_SCOPE_DENIED\",\n\tAUTH_TOKEN_MISSING: \"AUTH_TOKEN_MISSING\",\n\tACCOUNT_BANNED: \"ACCOUNT_BANNED\",\n\tAPP_SHIELD_COOLDOWN: \"APP_SHIELD_COOLDOWN\",\n\tAPP_BANNED: \"APP_BANNED\",\n\tAPP_ALREADY_PUBLISHED: \"APP_ALREADY_PUBLISHED\",\n\tAPP_HAS_NO_SUBDOMAIN: \"APP_HAS_NO_SUBDOMAIN\",\n\tAPP_NOT_FOUND: \"APP_NOT_FOUND\",\n\tAPP_NOT_PUBLISHED: \"APP_NOT_PUBLISHED\",\n\tAPP_ALREADY_IN_WORKSPACE: \"APP_ALREADY_IN_WORKSPACE\",\n\tAPP_NOT_FOUND_IN_WORKSPACE: \"APP_NOT_FOUND_IN_WORKSPACE\",\n\tBUILD_FAILED: \"BUILD_FAILED\",\n\tBUILD_TIMEOUT: \"BUILD_TIMEOUT\",\n\tCERTIFICATE_NOT_FOUND: \"CERTIFICATE_NOT_FOUND\",\n\tCLEANUP_LANGUAGE_SAME_AS_CURRENT: \"CLEANUP_LANGUAGE_SAME_AS_CURRENT\",\n\tCONTAINER_ALREADY_RUNNING: \"CONTAINER_ALREADY_RUNNING\",\n\tCUSTOM_DOMAIN_RECORD_NOT_FOUND: \"CUSTOM_DOMAIN_RECORD_NOT_FOUND\",\n\tCUSTOM_DOMAIN_REGISTRATION_FAILED: \"CUSTOM_DOMAIN_REGISTRATION_FAILED\",\n\tDAILY_QUOTA_EXCEEDED: \"DAILY_QUOTA_EXCEEDED\",\n\tDATABASE_NOT_FOUND: \"DATABASE_NOT_FOUND\",\n\tDATABASE_NOT_RUNNING: \"DATABASE_NOT_RUNNING\",\n\tDATABASE_ALREADY_IN_WORKSPACE: \"DATABASE_ALREADY_IN_WORKSPACE\",\n\tDATABASE_NOT_FOUND_IN_WORKSPACE: \"DATABASE_NOT_FOUND_IN_WORKSPACE\",\n\tDATABASE_PERSISTENCE_FAILED: \"DATABASE_PERSISTENCE_FAILED\",\n\tDEPLOY_FAILED: \"DEPLOY_FAILED\",\n\tDEPLOYMENT_NOT_FOUND: \"DEPLOYMENT_NOT_FOUND\",\n\tDEPLOY_RATE_LIMITED: \"DEPLOY_RATE_LIMITED\",\n\tDOMAIN_ALREADY_IN_USE: \"DOMAIN_ALREADY_IN_USE\",\n\tENV_LIMIT_EXCEEDED: \"ENV_LIMIT_EXCEEDED\",\n\tENV_DUPLICATE_KEY: \"ENV_DUPLICATE_KEY\",\n\tENV_NOT_FOUND: \"ENV_NOT_FOUND\",\n\tFILE_TOO_LARGE: \"FILE_TOO_LARGE\",\n\tFILE_MODIFIED: \"FILE_MODIFIED\",\n\tFILE_NOT_FOUND: \"FILE_NOT_FOUND\",\n\tFILE_OR_FOLDER_NOT_FOUND: \"FILE_OR_FOLDER_NOT_FOUND\",\n\tFORBIDDEN: \"FORBIDDEN\",\n\tFORBIDDEN_DOMAIN: \"FORBIDDEN_DOMAIN\",\n\tFORBIDDEN_PATH: \"FORBIDDEN_PATH\",\n\tFORBIDDEN_KEY: \"FORBIDDEN_KEY\",\n\tFORCED_SNAPSHOT_RATE_LIMIT: \"FORCED_SNAPSHOT_RATE_LIMIT\",\n\tFREE_PLAN_NO_WEB_PUBLISH: \"FREE_PLAN_NO_WEB_PUBLISH\",\n\tINSTALLATION_NOT_FOUND: \"INSTALLATION_NOT_FOUND\",\n\tINSTALL_SHIELD_BLOCKED: \"INSTALL_SHIELD_BLOCKED\",\n\tINSTALL_TIMEOUT: \"INSTALL_TIMEOUT\",\n\tINSTALL_FAILED: \"INSTALL_FAILED\",\n\tINSTALL_CANCELLED: \"INSTALL_CANCELLED\",\n\tINSTALL_OUT_OF_MEMORY: \"INSTALL_OUT_OF_MEMORY\",\n\tINSTALL_QUEUE_FULL: \"INSTALL_QUEUE_FULL\",\n\tINSUFFICIENT_MEMORY: \"INSUFFICIENT_MEMORY\",\n\tINTERNAL_SERVER_ERROR: \"INTERNAL_SERVER_ERROR\",\n\tINVALID_CONFIG: \"INVALID_CONFIG\",\n\tINVALID_CUSTOM_DOMAIN_FORMAT: \"INVALID_CUSTOM_DOMAIN_FORMAT\",\n\tINVALID_HOSTNAME_FOR_APP: \"INVALID_HOSTNAME_FOR_APP\",\n\tINVALID_LANGUAGE: \"INVALID_LANGUAGE\",\n\tINVALID_MEMORY_FORMAT: \"INVALID_MEMORY_FORMAT\",\n\tINVALID_MONTHS: \"INVALID_MONTHS\",\n\tINVALID_OR_EXPIRED_CODE: \"INVALID_OR_EXPIRED_CODE\",\n\tINVALID_PARAMS: \"INVALID_PARAMS\",\n\tINVALID_PAYLOAD: \"INVALID_PAYLOAD\",\n\tINVALID_PATH: \"INVALID_PATH\",\n\tINVALID_PLAN: \"INVALID_PLAN\",\n\tINVALID_PLAN_NAME: \"INVALID_PLAN_NAME\",\n\tINVALID_RAM_LIMIT: \"INVALID_RAM_LIMIT\",\n\tINVALID_RANGE: \"INVALID_RANGE\",\n\tINVALID_SUBDOMAIN_FORMAT: \"INVALID_SUBDOMAIN_FORMAT\",\n\tINVALID_ZIP: \"INVALID_ZIP\",\n\tINVALID_ZIP_STRUCTURE: \"INVALID_ZIP_STRUCTURE\",\n\tMAIN_FILE_NOT_FOUND: \"MAIN_FILE_NOT_FOUND\",\n\tMAX_APPS_REACHED: \"MAX_APPS_REACHED\",\n\tMAX_DATABASES_REACHED: \"MAX_DATABASES_REACHED\",\n\tMEMORY_BELOW_MINIMUM: \"MEMORY_BELOW_MINIMUM\",\n\tMEMORY_LIMIT_EXCEEDED: \"MEMORY_LIMIT_EXCEEDED\",\n\tMEMORY_MUST_BE_INTEGER: \"MEMORY_MUST_BE_INTEGER\",\n\tMEMORY_REQUIRED: \"MEMORY_REQUIRED\",\n\tMISSING_HEADERS: \"MISSING_HEADERS\",\n\tMISSING_PLAN_OR_MONTHS: \"MISSING_PLAN_OR_MONTHS\",\n\tMISSING_CONTENT: \"MISSING_CONTENT\",\n\tNOT_AN_UPGRADE: \"NOT_AN_UPGRADE\",\n\tNO_AUTHORIZED_PATHS: \"NO_AUTHORIZED_PATHS\",\n\tNO_CHANGES_PROVIDED: \"NO_CHANGES_PROVIDED\",\n\tNO_CUSTOM_DOMAIN: \"NO_CUSTOM_DOMAIN\",\n\tNO_FIELDS_TO_UPDATE: \"NO_FIELDS_TO_UPDATE\",\n\tNO_FILE_UPLOADED: \"NO_FILE_UPLOADED\",\n\tOPERATION_IN_PROGRESS: \"OPERATION_IN_PROGRESS\",\n\tORDER_NOT_FOUND: \"ORDER_NOT_FOUND\",\n\tORDER_NOT_PAID: \"ORDER_NOT_PAID\",\n\tORDER_NOT_PAYABLE: \"ORDER_NOT_PAYABLE\",\n\tORDER_NOT_REFUNDED: \"ORDER_NOT_REFUNDED\",\n\tOWNER_APP_WITHOUT_LIMITS: \"OWNER_APP_WITHOUT_LIMITS\",\n\tPAYLOAD_TOO_LARGE: \"PAYLOAD_TOO_LARGE\",\n\tPENDING_ORDER_LIMIT_REACHED: \"PENDING_ORDER_LIMIT_REACHED\",\n\tPLAN_DOES_NOT_SUPPORT_CUSTOM_DOMAIN: \"PLAN_DOES_NOT_SUPPORT_CUSTOM_DOMAIN\",\n\tPLAN_DOES_NOT_SUPPORT_CUSTOM_SUBDOMAIN: \"PLAN_DOES_NOT_SUPPORT_CUSTOM_SUBDOMAIN\",\n\tPLAN_DOES_NOT_SUPPORT_WEB_PUBLISH: \"PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH\",\n\tPLAN_MISMATCH_FOR_RENEWAL: \"PLAN_MISMATCH_FOR_RENEWAL\",\n\tPLAN_NOT_ALLOWED: \"PLAN_NOT_ALLOWED\",\n\tRATE_LIMIT_EXCEEDED: \"RATE_LIMIT_EXCEEDED\",\n\tREFUND_AMOUNT_EXCEEDS_PRICE: \"REFUND_AMOUNT_EXCEEDS_PRICE\",\n\tREPO_ALREADY_LINKED: \"REPO_ALREADY_LINKED\",\n\tRESTORE_COOLDOWN: \"RESTORE_COOLDOWN\",\n\tSNAPSHOT_ENGINE_MISMATCH: \"SNAPSHOT_ENGINE_MISMATCH\",\n\tSNAPSHOT_IMPORT_FAILED: \"SNAPSHOT_IMPORT_FAILED\",\n\tSNAPSHOT_NOT_FOUND: \"SNAPSHOT_NOT_FOUND\",\n\tSNAPSHOT_RATE_LIMITED: \"SNAPSHOT_RATE_LIMITED\",\n\tSNAPSHOT_TYPE_MISMATCH: \"SNAPSHOT_TYPE_MISMATCH\",\n\tSNAPSHOT_TOO_LARGE: \"SNAPSHOT_TOO_LARGE\",\n\tSOURCE_CONFLICT: \"SOURCE_CONFLICT\",\n\tSOURCE_REQUIRED: \"SOURCE_REQUIRED\",\n\tSTORAGE_ABOVE_NEW_LIMIT: \"STORAGE_ABOVE_NEW_LIMIT\",\n\tSUBDOMAIN_ALREADY_IN_USE: \"SUBDOMAIN_ALREADY_IN_USE\",\n\tSUBDOMAIN_CHANGE_RATE_LIMITED: \"SUBDOMAIN_CHANGE_RATE_LIMITED\",\n\tSUBDOMAIN_FORBIDDEN: \"SUBDOMAIN_FORBIDDEN\",\n\tSUBDOMAIN_TAKEN: \"SUBDOMAIN_TAKEN\",\n\tTYPE_MISMATCH: \"TYPE_MISMATCH\",\n\tUSER_LIMITS_NOT_FOUND: \"USER_LIMITS_NOT_FOUND\",\n\tUSER_NOT_FOUND: \"USER_NOT_FOUND\",\n\tUSER_NOT_IN_WORKSPACE: \"USER_NOT_IN_WORKSPACE\",\n\tDATABASE_BANNED: \"DATABASE_BANNED\",\n\tVALIDATION_ERROR: \"VALIDATION_ERROR\",\n\tZIP_TOO_LARGE: \"ZIP_TOO_LARGE\",\n\tZIP_TOO_SMALL: \"ZIP_TOO_SMALL\",\n\tSTORAGE_FULL: \"STORAGE_FULL\",\n\tTARGET_IS_DIRECTORY: \"TARGET_IS_DIRECTORY\",\n\t...WORKSPACE_ERROR_CODES,\n} as const;\n\nexport const APIErrorCode = API_ERROR_CODES;\n\nexport type APIErrorCode = (typeof API_ERROR_CODES)[keyof typeof API_ERROR_CODES];\n","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\tWORKSPACE_OWNER_ONLY: \"WORKSPACE_OWNER_ONLY\",\n\tWORKSPACE_ACTION_REQUEST_NOT_FOUND: \"WORKSPACE_ACTION_REQUEST_NOT_FOUND\",\n\t/** 409 — the request was already approved or rejected. */\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":[]}
@@ -0,0 +1,188 @@
1
+ // payloads/v1/workspace.ts
2
+ var WORKSPACE_PERMISSIONS = {
3
+ "apps:read": { group: "apps" },
4
+ "apps:manage": { group: "apps" },
5
+ "apps:lifecycle": { group: "apps" },
6
+ "apps:envs": { group: "apps" },
7
+ "apps:files": { group: "apps" },
8
+ "apps:delete": { group: "apps" },
9
+ "databases:read": { group: "databases" },
10
+ "databases:manage": { group: "databases" },
11
+ "databases:lifecycle": { group: "databases" },
12
+ "databases:credentials": { group: "databases" },
13
+ "databases:data": { group: "databases" },
14
+ "databases:delete": { group: "databases" },
15
+ "snapshots:read": { group: "snapshots" },
16
+ "snapshots:manage": { group: "snapshots" },
17
+ "members:read": { group: "members" },
18
+ "members:manage": { group: "members" },
19
+ "roles:manage": { group: "roles" },
20
+ "activities:read": { group: "activities" }
21
+ };
22
+ var WORKSPACE_PERMISSION_LIST = Object.keys(WORKSPACE_PERMISSIONS);
23
+ var WorkspaceFolderColor = { Neutral: "neutral", Red: "red", Orange: "orange", Yellow: "yellow", Green: "green", Blue: "blue", Purple: "purple" };
24
+ var WORKSPACE_FOLDER_COLORS = Object.values(WorkspaceFolderColor);
25
+ var WORKSPACE_ERROR_CODES = {
26
+ WORKSPACE_NOT_FOUND: "WORKSPACE_NOT_FOUND",
27
+ WORKSPACE_NAME_ALREADY_EXISTS: "WORKSPACE_NAME_ALREADY_EXISTS",
28
+ WORKSPACE_MEMBER_LIMIT_REACHED: "WORKSPACE_MEMBER_LIMIT_REACHED",
29
+ WORKSPACE_ROLE_LIMIT_REACHED: "WORKSPACE_ROLE_LIMIT_REACHED",
30
+ WORKSPACE_ROLE_IN_USE: "WORKSPACE_ROLE_IN_USE",
31
+ WORKSPACE_ROLE_NOT_FOUND: "WORKSPACE_ROLE_NOT_FOUND",
32
+ WORKSPACE_ROLE_NAME_ALREADY_EXISTS: "WORKSPACE_ROLE_NAME_ALREADY_EXISTS",
33
+ WORKSPACE_PERMISSION_DENIED: "WORKSPACE_PERMISSION_DENIED",
34
+ WORKSPACE_PERMISSION_ESCALATION: "WORKSPACE_PERMISSION_ESCALATION",
35
+ WORKSPACE_INVITE_NOT_FOUND: "WORKSPACE_INVITE_NOT_FOUND",
36
+ WORKSPACE_INVITE_EXPIRED: "WORKSPACE_INVITE_EXPIRED",
37
+ WORKSPACE_INVITE_EMAIL_MISMATCH: "WORKSPACE_INVITE_EMAIL_MISMATCH",
38
+ WORKSPACE_OWNER_ONLY: "WORKSPACE_OWNER_ONLY",
39
+ WORKSPACE_ACTION_REQUEST_NOT_FOUND: "WORKSPACE_ACTION_REQUEST_NOT_FOUND",
40
+ /** 409 — the request was already approved or rejected. */
41
+ /** 400 — the requester already has the permission; perform the action directly. */
42
+ WORKSPACE_ACTION_NOT_NEEDED: "WORKSPACE_ACTION_NOT_NEEDED",
43
+ /** 400 — the request `params` failed the action's validation (e.g. a snapshot of another resource). */
44
+ WORKSPACE_ACTION_INVALID_PARAMS: "WORKSPACE_ACTION_INVALID_PARAMS",
45
+ /** 409 — a pending request already exists for the same action on the same resource. */
46
+ WORKSPACE_ACTION_REQUEST_PENDING: "WORKSPACE_ACTION_REQUEST_PENDING",
47
+ WORKSPACE_RESOURCE_FOLDER_NOT_FOUND: "WORKSPACE_RESOURCE_FOLDER_NOT_FOUND",
48
+ WORKSPACE_RESOURCE_FOLDER_NAME_CONFLICT: "WORKSPACE_RESOURCE_FOLDER_NAME_CONFLICT",
49
+ WORKSPACE_RESOURCE_NOT_FOUND: "WORKSPACE_RESOURCE_NOT_FOUND",
50
+ PLAN_RESTRICTED_FEATURE: "PLAN_RESTRICTED_FEATURE"
51
+ };
52
+
53
+ // payloads/v1/api-error.ts
54
+ var API_ERROR_CODES = {
55
+ ACCESS_DENIED: "ACCESS_DENIED",
56
+ API_KEY_INVALID: "API_KEY_INVALID",
57
+ API_KEY_IP_DENIED: "API_KEY_IP_DENIED",
58
+ API_KEY_SCOPE_DENIED: "API_KEY_SCOPE_DENIED",
59
+ AUTH_TOKEN_MISSING: "AUTH_TOKEN_MISSING",
60
+ ACCOUNT_BANNED: "ACCOUNT_BANNED",
61
+ APP_SHIELD_COOLDOWN: "APP_SHIELD_COOLDOWN",
62
+ APP_BANNED: "APP_BANNED",
63
+ APP_ALREADY_PUBLISHED: "APP_ALREADY_PUBLISHED",
64
+ APP_HAS_NO_SUBDOMAIN: "APP_HAS_NO_SUBDOMAIN",
65
+ APP_NOT_FOUND: "APP_NOT_FOUND",
66
+ APP_NOT_PUBLISHED: "APP_NOT_PUBLISHED",
67
+ APP_ALREADY_IN_WORKSPACE: "APP_ALREADY_IN_WORKSPACE",
68
+ APP_NOT_FOUND_IN_WORKSPACE: "APP_NOT_FOUND_IN_WORKSPACE",
69
+ BUILD_FAILED: "BUILD_FAILED",
70
+ BUILD_TIMEOUT: "BUILD_TIMEOUT",
71
+ CERTIFICATE_NOT_FOUND: "CERTIFICATE_NOT_FOUND",
72
+ CLEANUP_LANGUAGE_SAME_AS_CURRENT: "CLEANUP_LANGUAGE_SAME_AS_CURRENT",
73
+ CONTAINER_ALREADY_RUNNING: "CONTAINER_ALREADY_RUNNING",
74
+ CUSTOM_DOMAIN_RECORD_NOT_FOUND: "CUSTOM_DOMAIN_RECORD_NOT_FOUND",
75
+ CUSTOM_DOMAIN_REGISTRATION_FAILED: "CUSTOM_DOMAIN_REGISTRATION_FAILED",
76
+ DAILY_QUOTA_EXCEEDED: "DAILY_QUOTA_EXCEEDED",
77
+ DATABASE_NOT_FOUND: "DATABASE_NOT_FOUND",
78
+ DATABASE_NOT_RUNNING: "DATABASE_NOT_RUNNING",
79
+ DATABASE_ALREADY_IN_WORKSPACE: "DATABASE_ALREADY_IN_WORKSPACE",
80
+ DATABASE_NOT_FOUND_IN_WORKSPACE: "DATABASE_NOT_FOUND_IN_WORKSPACE",
81
+ DATABASE_PERSISTENCE_FAILED: "DATABASE_PERSISTENCE_FAILED",
82
+ DEPLOY_FAILED: "DEPLOY_FAILED",
83
+ DEPLOYMENT_NOT_FOUND: "DEPLOYMENT_NOT_FOUND",
84
+ DEPLOY_RATE_LIMITED: "DEPLOY_RATE_LIMITED",
85
+ DOMAIN_ALREADY_IN_USE: "DOMAIN_ALREADY_IN_USE",
86
+ ENV_LIMIT_EXCEEDED: "ENV_LIMIT_EXCEEDED",
87
+ ENV_DUPLICATE_KEY: "ENV_DUPLICATE_KEY",
88
+ ENV_NOT_FOUND: "ENV_NOT_FOUND",
89
+ FILE_TOO_LARGE: "FILE_TOO_LARGE",
90
+ FILE_MODIFIED: "FILE_MODIFIED",
91
+ FILE_NOT_FOUND: "FILE_NOT_FOUND",
92
+ FILE_OR_FOLDER_NOT_FOUND: "FILE_OR_FOLDER_NOT_FOUND",
93
+ FORBIDDEN: "FORBIDDEN",
94
+ FORBIDDEN_DOMAIN: "FORBIDDEN_DOMAIN",
95
+ FORBIDDEN_PATH: "FORBIDDEN_PATH",
96
+ FORBIDDEN_KEY: "FORBIDDEN_KEY",
97
+ FORCED_SNAPSHOT_RATE_LIMIT: "FORCED_SNAPSHOT_RATE_LIMIT",
98
+ FREE_PLAN_NO_WEB_PUBLISH: "FREE_PLAN_NO_WEB_PUBLISH",
99
+ INSTALLATION_NOT_FOUND: "INSTALLATION_NOT_FOUND",
100
+ INSTALL_SHIELD_BLOCKED: "INSTALL_SHIELD_BLOCKED",
101
+ INSTALL_TIMEOUT: "INSTALL_TIMEOUT",
102
+ INSTALL_FAILED: "INSTALL_FAILED",
103
+ INSTALL_CANCELLED: "INSTALL_CANCELLED",
104
+ INSTALL_OUT_OF_MEMORY: "INSTALL_OUT_OF_MEMORY",
105
+ INSTALL_QUEUE_FULL: "INSTALL_QUEUE_FULL",
106
+ INSUFFICIENT_MEMORY: "INSUFFICIENT_MEMORY",
107
+ INTERNAL_SERVER_ERROR: "INTERNAL_SERVER_ERROR",
108
+ INVALID_CONFIG: "INVALID_CONFIG",
109
+ INVALID_CUSTOM_DOMAIN_FORMAT: "INVALID_CUSTOM_DOMAIN_FORMAT",
110
+ INVALID_HOSTNAME_FOR_APP: "INVALID_HOSTNAME_FOR_APP",
111
+ INVALID_LANGUAGE: "INVALID_LANGUAGE",
112
+ INVALID_MEMORY_FORMAT: "INVALID_MEMORY_FORMAT",
113
+ INVALID_MONTHS: "INVALID_MONTHS",
114
+ INVALID_OR_EXPIRED_CODE: "INVALID_OR_EXPIRED_CODE",
115
+ INVALID_PARAMS: "INVALID_PARAMS",
116
+ INVALID_PAYLOAD: "INVALID_PAYLOAD",
117
+ INVALID_PATH: "INVALID_PATH",
118
+ INVALID_PLAN: "INVALID_PLAN",
119
+ INVALID_PLAN_NAME: "INVALID_PLAN_NAME",
120
+ INVALID_RAM_LIMIT: "INVALID_RAM_LIMIT",
121
+ INVALID_RANGE: "INVALID_RANGE",
122
+ INVALID_SUBDOMAIN_FORMAT: "INVALID_SUBDOMAIN_FORMAT",
123
+ INVALID_ZIP: "INVALID_ZIP",
124
+ INVALID_ZIP_STRUCTURE: "INVALID_ZIP_STRUCTURE",
125
+ MAIN_FILE_NOT_FOUND: "MAIN_FILE_NOT_FOUND",
126
+ MAX_APPS_REACHED: "MAX_APPS_REACHED",
127
+ MAX_DATABASES_REACHED: "MAX_DATABASES_REACHED",
128
+ MEMORY_BELOW_MINIMUM: "MEMORY_BELOW_MINIMUM",
129
+ MEMORY_LIMIT_EXCEEDED: "MEMORY_LIMIT_EXCEEDED",
130
+ MEMORY_MUST_BE_INTEGER: "MEMORY_MUST_BE_INTEGER",
131
+ MEMORY_REQUIRED: "MEMORY_REQUIRED",
132
+ MISSING_HEADERS: "MISSING_HEADERS",
133
+ MISSING_PLAN_OR_MONTHS: "MISSING_PLAN_OR_MONTHS",
134
+ MISSING_CONTENT: "MISSING_CONTENT",
135
+ NOT_AN_UPGRADE: "NOT_AN_UPGRADE",
136
+ NO_AUTHORIZED_PATHS: "NO_AUTHORIZED_PATHS",
137
+ NO_CHANGES_PROVIDED: "NO_CHANGES_PROVIDED",
138
+ NO_CUSTOM_DOMAIN: "NO_CUSTOM_DOMAIN",
139
+ NO_FIELDS_TO_UPDATE: "NO_FIELDS_TO_UPDATE",
140
+ NO_FILE_UPLOADED: "NO_FILE_UPLOADED",
141
+ OPERATION_IN_PROGRESS: "OPERATION_IN_PROGRESS",
142
+ ORDER_NOT_FOUND: "ORDER_NOT_FOUND",
143
+ ORDER_NOT_PAID: "ORDER_NOT_PAID",
144
+ ORDER_NOT_PAYABLE: "ORDER_NOT_PAYABLE",
145
+ ORDER_NOT_REFUNDED: "ORDER_NOT_REFUNDED",
146
+ OWNER_APP_WITHOUT_LIMITS: "OWNER_APP_WITHOUT_LIMITS",
147
+ PAYLOAD_TOO_LARGE: "PAYLOAD_TOO_LARGE",
148
+ PENDING_ORDER_LIMIT_REACHED: "PENDING_ORDER_LIMIT_REACHED",
149
+ PLAN_DOES_NOT_SUPPORT_CUSTOM_DOMAIN: "PLAN_DOES_NOT_SUPPORT_CUSTOM_DOMAIN",
150
+ PLAN_DOES_NOT_SUPPORT_CUSTOM_SUBDOMAIN: "PLAN_DOES_NOT_SUPPORT_CUSTOM_SUBDOMAIN",
151
+ PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH: "PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH",
152
+ PLAN_MISMATCH_FOR_RENEWAL: "PLAN_MISMATCH_FOR_RENEWAL",
153
+ PLAN_NOT_ALLOWED: "PLAN_NOT_ALLOWED",
154
+ RATE_LIMIT_EXCEEDED: "RATE_LIMIT_EXCEEDED",
155
+ REFUND_AMOUNT_EXCEEDS_PRICE: "REFUND_AMOUNT_EXCEEDS_PRICE",
156
+ REPO_ALREADY_LINKED: "REPO_ALREADY_LINKED",
157
+ RESTORE_COOLDOWN: "RESTORE_COOLDOWN",
158
+ SNAPSHOT_ENGINE_MISMATCH: "SNAPSHOT_ENGINE_MISMATCH",
159
+ SNAPSHOT_IMPORT_FAILED: "SNAPSHOT_IMPORT_FAILED",
160
+ SNAPSHOT_NOT_FOUND: "SNAPSHOT_NOT_FOUND",
161
+ SNAPSHOT_RATE_LIMITED: "SNAPSHOT_RATE_LIMITED",
162
+ SNAPSHOT_TYPE_MISMATCH: "SNAPSHOT_TYPE_MISMATCH",
163
+ SNAPSHOT_TOO_LARGE: "SNAPSHOT_TOO_LARGE",
164
+ SOURCE_CONFLICT: "SOURCE_CONFLICT",
165
+ SOURCE_REQUIRED: "SOURCE_REQUIRED",
166
+ STORAGE_ABOVE_NEW_LIMIT: "STORAGE_ABOVE_NEW_LIMIT",
167
+ SUBDOMAIN_ALREADY_IN_USE: "SUBDOMAIN_ALREADY_IN_USE",
168
+ SUBDOMAIN_CHANGE_RATE_LIMITED: "SUBDOMAIN_CHANGE_RATE_LIMITED",
169
+ SUBDOMAIN_FORBIDDEN: "SUBDOMAIN_FORBIDDEN",
170
+ SUBDOMAIN_TAKEN: "SUBDOMAIN_TAKEN",
171
+ TYPE_MISMATCH: "TYPE_MISMATCH",
172
+ USER_LIMITS_NOT_FOUND: "USER_LIMITS_NOT_FOUND",
173
+ USER_NOT_FOUND: "USER_NOT_FOUND",
174
+ USER_NOT_IN_WORKSPACE: "USER_NOT_IN_WORKSPACE",
175
+ DATABASE_BANNED: "DATABASE_BANNED",
176
+ VALIDATION_ERROR: "VALIDATION_ERROR",
177
+ ZIP_TOO_LARGE: "ZIP_TOO_LARGE",
178
+ ZIP_TOO_SMALL: "ZIP_TOO_SMALL",
179
+ STORAGE_FULL: "STORAGE_FULL",
180
+ TARGET_IS_DIRECTORY: "TARGET_IS_DIRECTORY",
181
+ ...WORKSPACE_ERROR_CODES
182
+ };
183
+ var APIErrorCode = API_ERROR_CODES;
184
+ export {
185
+ APIErrorCode,
186
+ API_ERROR_CODES
187
+ };
188
+ //# sourceMappingURL=api-error.mjs.map
@@ -0,0 +1,88 @@
1
+ import { ISODateString } from '../../common/v1.js';
2
+ import './api-error.js';
3
+
4
+ /**
5
+ * API key scope, in the form `<resource>:<action>`. Presets: `read` = every `*:read`;
6
+ * `write` = `read` + every `*:write`; `full` = all of them, including the ones without a
7
+ * `read`/`write` suffix (delete, envs, files, credentials).
8
+ * @see https://docs.vertracloud.app/api-reference/introduction#scopes
9
+ */
10
+ type APIApiKeyScope = "apps:read" | "apps:write" | "apps:delete" | "apps:envs" | "apps:files" | "databases:read" | "databases:write" | "databases:delete" | "databases:credentials" | "snapshots:read" | "snapshots:write" | "account:read" | "account:write" | "workspaces:read" | "workspaces:write" | "workspaces:delete" | "workspaces:invites" | "billing:read" | "billing:write" | "redeem:write";
11
+ declare const APIApiKeyScope: {
12
+ readonly APPS_READ: "apps:read";
13
+ readonly APPS_WRITE: "apps:write";
14
+ readonly APPS_DELETE: "apps:delete";
15
+ readonly APPS_ENVS: "apps:envs";
16
+ readonly APPS_FILES: "apps:files";
17
+ readonly DATABASES_READ: "databases:read";
18
+ readonly DATABASES_WRITE: "databases:write";
19
+ readonly DATABASES_DELETE: "databases:delete";
20
+ readonly DATABASES_CREDENTIALS: "databases:credentials";
21
+ readonly SNAPSHOTS_READ: "snapshots:read";
22
+ readonly SNAPSHOTS_WRITE: "snapshots:write";
23
+ readonly ACCOUNT_READ: "account:read";
24
+ readonly ACCOUNT_WRITE: "account:write";
25
+ readonly WORKSPACES_READ: "workspaces:read";
26
+ readonly WORKSPACES_WRITE: "workspaces:write";
27
+ readonly WORKSPACES_DELETE: "workspaces:delete";
28
+ readonly WORKSPACES_INVITES: "workspaces:invites";
29
+ readonly BILLING_READ: "billing:read";
30
+ readonly BILLING_WRITE: "billing:write";
31
+ readonly REDEEM_WRITE: "redeem:write";
32
+ };
33
+ type APIApiKeyPreset = "read" | "write" | "full";
34
+ declare const APIApiKeyPreset: {
35
+ readonly Read: "read";
36
+ readonly Write: "write";
37
+ readonly Full: "full";
38
+ };
39
+ type APIApiKeyRouteMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
40
+ interface APIApiKeyRoute {
41
+ method: APIApiKeyRouteMethod;
42
+ /** Full route pattern with `:param` placeholders (`/v1/apps/:id/files`). Matched exactly, no regex. */
43
+ path: string;
44
+ }
45
+ interface APIApiKeyScopeEntry {
46
+ /** Display group the scope belongs to. */
47
+ group: "apps" | "databases" | "snapshots" | "account" | "workspaces" | "billing";
48
+ routes: APIApiKeyRoute[];
49
+ }
50
+ /**
51
+ * Closed catalog of the routes an API key can reach, per scope. A key without the route's scope
52
+ * gets 403 `API_KEY_SCOPE_DENIED`; a route that is not listed here always returns 403 to an API key.
53
+ *
54
+ * Intentionally left out (dashboard session only): key management, creating workspace invites
55
+ * (an invite would outlive the key's revocation), revoking sessions, plan downgrade, and the
56
+ * database **Data** tab (`/v1/databases/:id/data/*`).
57
+ */
58
+ declare const API_KEY_SCOPES: Record<APIApiKeyScope, APIApiKeyScopeEntry>;
59
+ declare const API_KEY_SCOPE_LIST: APIApiKeyScope[];
60
+ /** Scopes selected by a preset. `full` is the whole catalog. */
61
+ declare function apiKeyPresetScopes(preset: APIApiKeyPreset): APIApiKeyScope[];
62
+ /** Maximum keys per account, entries in `allowed_ips`, and key name length. */
63
+ declare const API_KEY_MAX_PER_USER = 10;
64
+ declare const API_KEY_MAX_ALLOWED_IPS = 20;
65
+ declare const API_KEY_NAME_MAX_LENGTH = 40;
66
+ /**
67
+ * An API key as listed. The secret is returned only ONCE, in `APIApiKeyCreated`.
68
+ * @see https://docs.vertracloud.app/api-reference/endpoint/users/api-keys/list
69
+ */
70
+ interface APIApiKey {
71
+ id: string;
72
+ name: string;
73
+ /** Public start of the key (`vc_live_a1b2c3d4`; older keys: 8 hex characters). */
74
+ prefix: string;
75
+ /** Last 4 characters; `null` for keys generated before the `vc_live_` format. */
76
+ last4: string | null;
77
+ scopes: APIApiKeyScope[];
78
+ /** Allowed IPs/CIDRs. Empty list = any IP. */
79
+ allowed_ips: string[];
80
+ created_at: ISODateString;
81
+ last_used_at: ISODateString | null;
82
+ }
83
+ interface APIApiKeyCreated extends APIApiKey {
84
+ /** The full secret. Shown once; it cannot be recovered. */
85
+ api_key: string;
86
+ }
87
+
88
+ export { type APIApiKey, type APIApiKeyCreated, APIApiKeyPreset, type APIApiKeyRoute, type APIApiKeyRouteMethod, APIApiKeyScope, type APIApiKeyScopeEntry, API_KEY_MAX_ALLOWED_IPS, API_KEY_MAX_PER_USER, API_KEY_NAME_MAX_LENGTH, API_KEY_SCOPES, API_KEY_SCOPE_LIST, apiKeyPresetScopes };