@marinoscar/platform-contract 0.1.0-next.3 → 0.1.0-next.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.
Files changed (673) hide show
  1. package/CHANGELOG.md +173 -0
  2. package/README.md +23 -1
  3. package/dist/cjs/ai/capabilities.d.ts +85 -0
  4. package/dist/cjs/ai/capabilities.d.ts.map +1 -0
  5. package/dist/cjs/ai/capabilities.js +93 -0
  6. package/dist/cjs/ai/capabilities.js.map +1 -0
  7. package/dist/cjs/ai/constants.d.ts +239 -0
  8. package/dist/cjs/ai/constants.d.ts.map +1 -0
  9. package/dist/cjs/ai/constants.js +233 -0
  10. package/dist/cjs/ai/constants.js.map +1 -0
  11. package/dist/cjs/ai/features.d.ts +24 -0
  12. package/dist/cjs/ai/features.d.ts.map +1 -0
  13. package/dist/cjs/ai/features.js +33 -0
  14. package/dist/cjs/ai/features.js.map +1 -0
  15. package/dist/cjs/ai/index.d.ts +11 -0
  16. package/dist/cjs/ai/index.d.ts.map +1 -0
  17. package/dist/cjs/ai/index.js +81 -0
  18. package/dist/cjs/ai/index.js.map +1 -0
  19. package/dist/cjs/ai/org-keys.d.ts +50 -0
  20. package/dist/cjs/ai/org-keys.d.ts.map +1 -0
  21. package/dist/cjs/ai/org-keys.js +43 -0
  22. package/dist/cjs/ai/org-keys.js.map +1 -0
  23. package/dist/cjs/ai/schemas.d.ts +642 -0
  24. package/dist/cjs/ai/schemas.d.ts.map +1 -0
  25. package/dist/cjs/ai/schemas.js +894 -0
  26. package/dist/cjs/ai/schemas.js.map +1 -0
  27. package/dist/cjs/android-app/constants.d.ts +337 -0
  28. package/dist/cjs/android-app/constants.d.ts.map +1 -0
  29. package/dist/cjs/android-app/constants.js +312 -0
  30. package/dist/cjs/android-app/constants.js.map +1 -0
  31. package/dist/cjs/android-app/index.d.ts +5 -0
  32. package/dist/cjs/android-app/index.d.ts.map +1 -0
  33. package/dist/cjs/android-app/index.js +57 -0
  34. package/dist/cjs/android-app/index.js.map +1 -0
  35. package/dist/cjs/android-app/schemas.d.ts +358 -0
  36. package/dist/cjs/android-app/schemas.d.ts.map +1 -0
  37. package/dist/cjs/android-app/schemas.js +310 -0
  38. package/dist/cjs/android-app/schemas.js.map +1 -0
  39. package/dist/cjs/credentials/constants.d.ts +35 -0
  40. package/dist/cjs/credentials/constants.d.ts.map +1 -0
  41. package/dist/cjs/credentials/constants.js +39 -0
  42. package/dist/cjs/credentials/constants.js.map +1 -0
  43. package/dist/cjs/credentials/index.d.ts +5 -0
  44. package/dist/cjs/credentials/index.d.ts.map +1 -0
  45. package/dist/cjs/credentials/index.js +17 -0
  46. package/dist/cjs/credentials/index.js.map +1 -0
  47. package/dist/cjs/credentials/schemas.d.ts +64 -0
  48. package/dist/cjs/credentials/schemas.d.ts.map +1 -0
  49. package/dist/cjs/credentials/schemas.js +82 -0
  50. package/dist/cjs/credentials/schemas.js.map +1 -0
  51. package/dist/cjs/db-backup/config.d.ts +76 -0
  52. package/dist/cjs/db-backup/config.d.ts.map +1 -0
  53. package/dist/cjs/db-backup/config.js +115 -0
  54. package/dist/cjs/db-backup/config.js.map +1 -0
  55. package/dist/cjs/db-backup/constants.d.ts +314 -0
  56. package/dist/cjs/db-backup/constants.d.ts.map +1 -0
  57. package/dist/cjs/db-backup/constants.js +243 -0
  58. package/dist/cjs/db-backup/constants.js.map +1 -0
  59. package/dist/cjs/db-backup/index.d.ts +19 -0
  60. package/dist/cjs/db-backup/index.d.ts.map +1 -0
  61. package/dist/cjs/db-backup/index.js +81 -0
  62. package/dist/cjs/db-backup/index.js.map +1 -0
  63. package/dist/cjs/db-backup/node-credential.d.ts +37 -0
  64. package/dist/cjs/db-backup/node-credential.d.ts.map +1 -0
  65. package/dist/cjs/db-backup/node-credential.js +107 -0
  66. package/dist/cjs/db-backup/node-credential.js.map +1 -0
  67. package/dist/cjs/db-backup/node-result.d.ts +34 -0
  68. package/dist/cjs/db-backup/node-result.d.ts.map +1 -0
  69. package/dist/cjs/db-backup/node-result.js +168 -0
  70. package/dist/cjs/db-backup/node-result.js.map +1 -0
  71. package/dist/cjs/db-backup/restore.d.ts +405 -0
  72. package/dist/cjs/db-backup/restore.d.ts.map +1 -0
  73. package/dist/cjs/db-backup/restore.js +497 -0
  74. package/dist/cjs/db-backup/restore.js.map +1 -0
  75. package/dist/cjs/db-backup/run-actions.d.ts +49 -0
  76. package/dist/cjs/db-backup/run-actions.d.ts.map +1 -0
  77. package/dist/cjs/db-backup/run-actions.js +121 -0
  78. package/dist/cjs/db-backup/run-actions.js.map +1 -0
  79. package/dist/cjs/db-backup/runs-list-query.d.ts +20 -0
  80. package/dist/cjs/db-backup/runs-list-query.d.ts.map +1 -0
  81. package/dist/cjs/db-backup/runs-list-query.js +53 -0
  82. package/dist/cjs/db-backup/runs-list-query.js.map +1 -0
  83. package/dist/cjs/db-backup/runs.d.ts +46 -0
  84. package/dist/cjs/db-backup/runs.d.ts.map +1 -0
  85. package/dist/cjs/db-backup/runs.js +232 -0
  86. package/dist/cjs/db-backup/runs.js.map +1 -0
  87. package/dist/cjs/db-backup/schemas.d.ts +9 -0
  88. package/dist/cjs/db-backup/schemas.d.ts.map +1 -0
  89. package/dist/cjs/db-backup/schemas.js +31 -0
  90. package/dist/cjs/db-backup/schemas.js.map +1 -0
  91. package/dist/cjs/db-backup/settings-schemas.d.ts +217 -0
  92. package/dist/cjs/db-backup/settings-schemas.d.ts.map +1 -0
  93. package/dist/cjs/db-backup/settings-schemas.js +319 -0
  94. package/dist/cjs/db-backup/settings-schemas.js.map +1 -0
  95. package/dist/cjs/email/constants.d.ts +82 -0
  96. package/dist/cjs/email/constants.d.ts.map +1 -0
  97. package/dist/cjs/email/constants.js +82 -0
  98. package/dist/cjs/email/constants.js.map +1 -0
  99. package/dist/cjs/email/index.d.ts +5 -0
  100. package/dist/cjs/email/index.d.ts.map +1 -0
  101. package/dist/cjs/email/index.js +30 -0
  102. package/dist/cjs/email/index.js.map +1 -0
  103. package/dist/cjs/email/schemas.d.ts +276 -0
  104. package/dist/cjs/email/schemas.d.ts.map +1 -0
  105. package/dist/cjs/email/schemas.js +280 -0
  106. package/dist/cjs/email/schemas.js.map +1 -0
  107. package/dist/cjs/exports/constants.d.ts +123 -0
  108. package/dist/cjs/exports/constants.d.ts.map +1 -0
  109. package/dist/cjs/exports/constants.js +109 -0
  110. package/dist/cjs/exports/constants.js.map +1 -0
  111. package/dist/cjs/exports/index.d.ts +5 -0
  112. package/dist/cjs/exports/index.d.ts.map +1 -0
  113. package/dist/cjs/exports/index.js +42 -0
  114. package/dist/cjs/exports/index.js.map +1 -0
  115. package/dist/cjs/exports/schemas.d.ts +386 -0
  116. package/dist/cjs/exports/schemas.d.ts.map +1 -0
  117. package/dist/cjs/exports/schemas.js +288 -0
  118. package/dist/cjs/exports/schemas.js.map +1 -0
  119. package/dist/cjs/identity/constants.d.ts +273 -0
  120. package/dist/cjs/identity/constants.d.ts.map +1 -0
  121. package/dist/cjs/identity/constants.js +248 -0
  122. package/dist/cjs/identity/constants.js.map +1 -0
  123. package/dist/cjs/identity/index.d.ts +5 -0
  124. package/dist/cjs/identity/index.d.ts.map +1 -0
  125. package/dist/cjs/identity/index.js +73 -0
  126. package/dist/cjs/identity/index.js.map +1 -0
  127. package/dist/cjs/identity/schemas.d.ts +784 -0
  128. package/dist/cjs/identity/schemas.d.ts.map +1 -0
  129. package/dist/cjs/identity/schemas.js +684 -0
  130. package/dist/cjs/identity/schemas.js.map +1 -0
  131. package/dist/cjs/jobs/constants.d.ts +135 -0
  132. package/dist/cjs/jobs/constants.d.ts.map +1 -0
  133. package/dist/cjs/jobs/constants.js +130 -0
  134. package/dist/cjs/jobs/constants.js.map +1 -0
  135. package/dist/cjs/jobs/index.d.ts +9 -0
  136. package/dist/cjs/jobs/index.d.ts.map +1 -0
  137. package/dist/cjs/jobs/index.js +59 -0
  138. package/dist/cjs/jobs/index.js.map +1 -0
  139. package/dist/cjs/jobs/retention-schemas.d.ts +252 -0
  140. package/dist/cjs/jobs/retention-schemas.d.ts.map +1 -0
  141. package/dist/cjs/jobs/retention-schemas.js +233 -0
  142. package/dist/cjs/jobs/retention-schemas.js.map +1 -0
  143. package/dist/cjs/jobs/schemas.d.ts +361 -0
  144. package/dist/cjs/jobs/schemas.d.ts.map +1 -0
  145. package/dist/cjs/jobs/schemas.js +706 -0
  146. package/dist/cjs/jobs/schemas.js.map +1 -0
  147. package/dist/cjs/jobs/settings-schemas.d.ts +84 -0
  148. package/dist/cjs/jobs/settings-schemas.d.ts.map +1 -0
  149. package/dist/cjs/jobs/settings-schemas.js +116 -0
  150. package/dist/cjs/jobs/settings-schemas.js.map +1 -0
  151. package/dist/cjs/nodes/admin-schemas.d.ts +204 -0
  152. package/dist/cjs/nodes/admin-schemas.d.ts.map +1 -0
  153. package/dist/cjs/nodes/admin-schemas.js +153 -0
  154. package/dist/cjs/nodes/admin-schemas.js.map +1 -0
  155. package/dist/cjs/nodes/constants.d.ts +86 -0
  156. package/dist/cjs/nodes/constants.d.ts.map +1 -0
  157. package/dist/cjs/nodes/constants.js +102 -0
  158. package/dist/cjs/nodes/constants.js.map +1 -0
  159. package/dist/cjs/nodes/index.d.ts +8 -0
  160. package/dist/cjs/nodes/index.d.ts.map +1 -0
  161. package/dist/cjs/nodes/index.js +50 -0
  162. package/dist/cjs/nodes/index.js.map +1 -0
  163. package/dist/cjs/nodes/schemas.d.ts +332 -0
  164. package/dist/cjs/nodes/schemas.d.ts.map +1 -0
  165. package/dist/cjs/nodes/schemas.js +937 -0
  166. package/dist/cjs/nodes/schemas.js.map +1 -0
  167. package/dist/cjs/nodes/settings-schemas.d.ts +82 -0
  168. package/dist/cjs/nodes/settings-schemas.d.ts.map +1 -0
  169. package/dist/cjs/nodes/settings-schemas.js +106 -0
  170. package/dist/cjs/nodes/settings-schemas.js.map +1 -0
  171. package/dist/cjs/notifications/constants.d.ts +197 -0
  172. package/dist/cjs/notifications/constants.d.ts.map +1 -0
  173. package/dist/cjs/notifications/constants.js +181 -0
  174. package/dist/cjs/notifications/constants.js.map +1 -0
  175. package/dist/cjs/notifications/index.d.ts +5 -0
  176. package/dist/cjs/notifications/index.d.ts.map +1 -0
  177. package/dist/cjs/notifications/index.js +86 -0
  178. package/dist/cjs/notifications/index.js.map +1 -0
  179. package/dist/cjs/notifications/schemas.d.ts +1016 -0
  180. package/dist/cjs/notifications/schemas.d.ts.map +1 -0
  181. package/dist/cjs/notifications/schemas.js +851 -0
  182. package/dist/cjs/notifications/schemas.js.map +1 -0
  183. package/dist/cjs/onboarding/constants.d.ts +138 -0
  184. package/dist/cjs/onboarding/constants.d.ts.map +1 -0
  185. package/dist/cjs/onboarding/constants.js +123 -0
  186. package/dist/cjs/onboarding/constants.js.map +1 -0
  187. package/dist/cjs/onboarding/index.d.ts +5 -0
  188. package/dist/cjs/onboarding/index.d.ts.map +1 -0
  189. package/dist/cjs/onboarding/index.js +42 -0
  190. package/dist/cjs/onboarding/index.js.map +1 -0
  191. package/dist/cjs/onboarding/schemas.d.ts +360 -0
  192. package/dist/cjs/onboarding/schemas.d.ts.map +1 -0
  193. package/dist/cjs/onboarding/schemas.js +260 -0
  194. package/dist/cjs/onboarding/schemas.js.map +1 -0
  195. package/dist/cjs/settings/constants.d.ts +206 -0
  196. package/dist/cjs/settings/constants.d.ts.map +1 -0
  197. package/dist/cjs/settings/constants.js +200 -0
  198. package/dist/cjs/settings/constants.js.map +1 -0
  199. package/dist/cjs/settings/index.d.ts +6 -0
  200. package/dist/cjs/settings/index.d.ts.map +1 -0
  201. package/dist/cjs/settings/index.js +62 -0
  202. package/dist/cjs/settings/index.js.map +1 -0
  203. package/dist/cjs/settings/schemas.d.ts +574 -0
  204. package/dist/cjs/settings/schemas.d.ts.map +1 -0
  205. package/dist/cjs/settings/schemas.js +437 -0
  206. package/dist/cjs/settings/schemas.js.map +1 -0
  207. package/dist/cjs/settings/types.d.ts +79 -0
  208. package/dist/cjs/settings/types.d.ts.map +1 -0
  209. package/dist/cjs/settings/types.js +6 -0
  210. package/dist/cjs/settings/types.js.map +1 -0
  211. package/dist/cjs/sharing/constants.d.ts +216 -0
  212. package/dist/cjs/sharing/constants.d.ts.map +1 -0
  213. package/dist/cjs/sharing/constants.js +163 -0
  214. package/dist/cjs/sharing/constants.js.map +1 -0
  215. package/dist/cjs/sharing/enum.d.ts +5 -0
  216. package/dist/cjs/sharing/enum.d.ts.map +1 -0
  217. package/dist/cjs/sharing/enum.js +9 -0
  218. package/dist/cjs/sharing/enum.js.map +1 -0
  219. package/dist/cjs/sharing/grants.d.ts +490 -0
  220. package/dist/cjs/sharing/grants.d.ts.map +1 -0
  221. package/dist/cjs/sharing/grants.js +447 -0
  222. package/dist/cjs/sharing/grants.js.map +1 -0
  223. package/dist/cjs/sharing/groups.d.ts +410 -0
  224. package/dist/cjs/sharing/groups.d.ts.map +1 -0
  225. package/dist/cjs/sharing/groups.js +375 -0
  226. package/dist/cjs/sharing/groups.js.map +1 -0
  227. package/dist/cjs/sharing/index.d.ts +5 -0
  228. package/dist/cjs/sharing/index.d.ts.map +1 -0
  229. package/dist/cjs/sharing/index.js +77 -0
  230. package/dist/cjs/sharing/index.js.map +1 -0
  231. package/dist/cjs/sharing/schemas.d.ts +3 -0
  232. package/dist/cjs/sharing/schemas.d.ts.map +1 -0
  233. package/dist/cjs/sharing/schemas.js +21 -0
  234. package/dist/cjs/sharing/schemas.js.map +1 -0
  235. package/dist/cjs/storage/constants.d.ts +111 -0
  236. package/dist/cjs/storage/constants.d.ts.map +1 -0
  237. package/dist/cjs/storage/constants.js +107 -0
  238. package/dist/cjs/storage/constants.js.map +1 -0
  239. package/dist/cjs/storage/index.d.ts +27 -0
  240. package/dist/cjs/storage/index.d.ts.map +1 -0
  241. package/dist/cjs/storage/index.js +69 -0
  242. package/dist/cjs/storage/index.js.map +1 -0
  243. package/dist/cjs/storage/objects-complete-upload.d.ts +19 -0
  244. package/dist/cjs/storage/objects-complete-upload.d.ts.map +1 -0
  245. package/dist/cjs/storage/objects-complete-upload.js +19 -0
  246. package/dist/cjs/storage/objects-complete-upload.js.map +1 -0
  247. package/dist/cjs/storage/objects-download-url.d.ts +17 -0
  248. package/dist/cjs/storage/objects-download-url.d.ts.map +1 -0
  249. package/dist/cjs/storage/objects-download-url.js +16 -0
  250. package/dist/cjs/storage/objects-download-url.js.map +1 -0
  251. package/dist/cjs/storage/objects-init-upload.d.ts +39 -0
  252. package/dist/cjs/storage/objects-init-upload.d.ts.map +1 -0
  253. package/dist/cjs/storage/objects-init-upload.js +40 -0
  254. package/dist/cjs/storage/objects-init-upload.js.map +1 -0
  255. package/dist/cjs/storage/objects-list-query.d.ts +50 -0
  256. package/dist/cjs/storage/objects-list-query.d.ts.map +1 -0
  257. package/dist/cjs/storage/objects-list-query.js +23 -0
  258. package/dist/cjs/storage/objects-list-query.js.map +1 -0
  259. package/dist/cjs/storage/objects-object-response.d.ts +49 -0
  260. package/dist/cjs/storage/objects-object-response.d.ts.map +1 -0
  261. package/dist/cjs/storage/objects-object-response.js +54 -0
  262. package/dist/cjs/storage/objects-object-response.js.map +1 -0
  263. package/dist/cjs/storage/objects-update-metadata.d.ts +16 -0
  264. package/dist/cjs/storage/objects-update-metadata.d.ts.map +1 -0
  265. package/dist/cjs/storage/objects-update-metadata.js +14 -0
  266. package/dist/cjs/storage/objects-update-metadata.js.map +1 -0
  267. package/dist/cjs/storage/schemas.d.ts +13 -0
  268. package/dist/cjs/storage/schemas.d.ts.map +1 -0
  269. package/dist/cjs/storage/schemas.js +35 -0
  270. package/dist/cjs/storage/schemas.js.map +1 -0
  271. package/dist/cjs/storage/settings-schemas.d.ts +188 -0
  272. package/dist/cjs/storage/settings-schemas.d.ts.map +1 -0
  273. package/dist/cjs/storage/settings-schemas.js +223 -0
  274. package/dist/cjs/storage/settings-schemas.js.map +1 -0
  275. package/dist/cjs/storage/storage-bucket-provision.d.ts +152 -0
  276. package/dist/cjs/storage/storage-bucket-provision.d.ts.map +1 -0
  277. package/dist/cjs/storage/storage-bucket-provision.js +216 -0
  278. package/dist/cjs/storage/storage-bucket-provision.js.map +1 -0
  279. package/dist/cjs/storage/storage-config-response.d.ts +99 -0
  280. package/dist/cjs/storage/storage-config-response.d.ts.map +1 -0
  281. package/dist/cjs/storage/storage-config-response.js +173 -0
  282. package/dist/cjs/storage/storage-config-response.js.map +1 -0
  283. package/dist/cjs/storage/storage-config-update.d.ts +46 -0
  284. package/dist/cjs/storage/storage-config-update.d.ts.map +1 -0
  285. package/dist/cjs/storage/storage-config-update.js +133 -0
  286. package/dist/cjs/storage/storage-config-update.js.map +1 -0
  287. package/dist/cjs/storage/storage-connection-test.d.ts +129 -0
  288. package/dist/cjs/storage/storage-connection-test.d.ts.map +1 -0
  289. package/dist/cjs/storage/storage-connection-test.js +244 -0
  290. package/dist/cjs/storage/storage-connection-test.js.map +1 -0
  291. package/dist/cjs/storage/storage-status.d.ts +16 -0
  292. package/dist/cjs/storage/storage-status.d.ts.map +1 -0
  293. package/dist/cjs/storage/storage-status.js +23 -0
  294. package/dist/cjs/storage/storage-status.js.map +1 -0
  295. package/dist/cjs/telemetry/config.d.ts +4 -0
  296. package/dist/cjs/telemetry/config.d.ts.map +1 -1
  297. package/dist/cjs/telemetry/config.js +16 -2
  298. package/dist/cjs/telemetry/config.js.map +1 -1
  299. package/dist/cjs/telemetry/connection.d.ts +1 -1
  300. package/dist/cjs/telemetry/constants.d.ts +378 -6
  301. package/dist/cjs/telemetry/constants.d.ts.map +1 -1
  302. package/dist/cjs/telemetry/constants.js +290 -5
  303. package/dist/cjs/telemetry/constants.js.map +1 -1
  304. package/dist/cjs/telemetry/dashboard.d.ts +188 -17
  305. package/dist/cjs/telemetry/dashboard.d.ts.map +1 -1
  306. package/dist/cjs/telemetry/dashboard.js +61 -3
  307. package/dist/cjs/telemetry/dashboard.js.map +1 -1
  308. package/dist/cjs/telemetry/index.d.ts +4 -4
  309. package/dist/cjs/telemetry/index.d.ts.map +1 -1
  310. package/dist/cjs/telemetry/index.js +35 -3
  311. package/dist/cjs/telemetry/index.js.map +1 -1
  312. package/dist/cjs/telemetry/presentation.d.ts +243 -0
  313. package/dist/cjs/telemetry/presentation.d.ts.map +1 -0
  314. package/dist/cjs/telemetry/presentation.js +300 -0
  315. package/dist/cjs/telemetry/presentation.js.map +1 -0
  316. package/dist/cjs/telemetry/query.d.ts +2 -2
  317. package/dist/cjs/telemetry/schemas.d.ts +5 -2
  318. package/dist/cjs/telemetry/schemas.d.ts.map +1 -1
  319. package/dist/cjs/telemetry/schemas.js +21 -1
  320. package/dist/cjs/telemetry/schemas.js.map +1 -1
  321. package/dist/cjs/telemetry/stack.d.ts +5 -5
  322. package/dist/cjs/telemetry/store.d.ts +111 -0
  323. package/dist/cjs/telemetry/store.d.ts.map +1 -0
  324. package/dist/cjs/telemetry/store.js +83 -0
  325. package/dist/cjs/telemetry/store.js.map +1 -0
  326. package/dist/cjs/user-data/constants.d.ts +157 -0
  327. package/dist/cjs/user-data/constants.d.ts.map +1 -0
  328. package/dist/cjs/user-data/constants.js +137 -0
  329. package/dist/cjs/user-data/constants.js.map +1 -0
  330. package/dist/cjs/user-data/index.d.ts +5 -0
  331. package/dist/cjs/user-data/index.d.ts.map +1 -0
  332. package/dist/cjs/user-data/index.js +46 -0
  333. package/dist/cjs/user-data/index.js.map +1 -0
  334. package/dist/cjs/user-data/schemas.d.ts +306 -0
  335. package/dist/cjs/user-data/schemas.d.ts.map +1 -0
  336. package/dist/cjs/user-data/schemas.js +333 -0
  337. package/dist/cjs/user-data/schemas.js.map +1 -0
  338. package/dist/esm/ai/capabilities.d.ts +85 -0
  339. package/dist/esm/ai/capabilities.d.ts.map +1 -0
  340. package/dist/esm/ai/capabilities.js +90 -0
  341. package/dist/esm/ai/capabilities.js.map +1 -0
  342. package/dist/esm/ai/constants.d.ts +239 -0
  343. package/dist/esm/ai/constants.d.ts.map +1 -0
  344. package/dist/esm/ai/constants.js +229 -0
  345. package/dist/esm/ai/constants.js.map +1 -0
  346. package/dist/esm/ai/features.d.ts +24 -0
  347. package/dist/esm/ai/features.d.ts.map +1 -0
  348. package/dist/esm/ai/features.js +30 -0
  349. package/dist/esm/ai/features.js.map +1 -0
  350. package/dist/esm/ai/index.d.ts +11 -0
  351. package/dist/esm/ai/index.d.ts.map +1 -0
  352. package/dist/esm/ai/index.js +16 -0
  353. package/dist/esm/ai/index.js.map +1 -0
  354. package/dist/esm/ai/org-keys.d.ts +50 -0
  355. package/dist/esm/ai/org-keys.d.ts.map +1 -0
  356. package/dist/esm/ai/org-keys.js +40 -0
  357. package/dist/esm/ai/org-keys.js.map +1 -0
  358. package/dist/esm/ai/schemas.d.ts +642 -0
  359. package/dist/esm/ai/schemas.d.ts.map +1 -0
  360. package/dist/esm/ai/schemas.js +889 -0
  361. package/dist/esm/ai/schemas.js.map +1 -0
  362. package/dist/esm/android-app/constants.d.ts +337 -0
  363. package/dist/esm/android-app/constants.d.ts.map +1 -0
  364. package/dist/esm/android-app/constants.js +306 -0
  365. package/dist/esm/android-app/constants.js.map +1 -0
  366. package/dist/esm/android-app/index.d.ts +5 -0
  367. package/dist/esm/android-app/index.d.ts.map +1 -0
  368. package/dist/esm/android-app/index.js +8 -0
  369. package/dist/esm/android-app/index.js.map +1 -0
  370. package/dist/esm/android-app/schemas.d.ts +358 -0
  371. package/dist/esm/android-app/schemas.d.ts.map +1 -0
  372. package/dist/esm/android-app/schemas.js +306 -0
  373. package/dist/esm/android-app/schemas.js.map +1 -0
  374. package/dist/esm/credentials/constants.d.ts +35 -0
  375. package/dist/esm/credentials/constants.d.ts.map +1 -0
  376. package/dist/esm/credentials/constants.js +36 -0
  377. package/dist/esm/credentials/constants.js.map +1 -0
  378. package/dist/esm/credentials/index.d.ts +5 -0
  379. package/dist/esm/credentials/index.d.ts.map +1 -0
  380. package/dist/esm/credentials/index.js +8 -0
  381. package/dist/esm/credentials/index.js.map +1 -0
  382. package/dist/esm/credentials/schemas.d.ts +64 -0
  383. package/dist/esm/credentials/schemas.d.ts.map +1 -0
  384. package/dist/esm/credentials/schemas.js +79 -0
  385. package/dist/esm/credentials/schemas.js.map +1 -0
  386. package/dist/esm/db-backup/config.d.ts +76 -0
  387. package/dist/esm/db-backup/config.d.ts.map +1 -0
  388. package/dist/esm/db-backup/config.js +112 -0
  389. package/dist/esm/db-backup/config.js.map +1 -0
  390. package/dist/esm/db-backup/constants.d.ts +314 -0
  391. package/dist/esm/db-backup/constants.d.ts.map +1 -0
  392. package/dist/esm/db-backup/constants.js +240 -0
  393. package/dist/esm/db-backup/constants.js.map +1 -0
  394. package/dist/esm/db-backup/index.d.ts +19 -0
  395. package/dist/esm/db-backup/index.d.ts.map +1 -0
  396. package/dist/esm/db-backup/index.js +25 -0
  397. package/dist/esm/db-backup/index.js.map +1 -0
  398. package/dist/esm/db-backup/node-credential.d.ts +37 -0
  399. package/dist/esm/db-backup/node-credential.d.ts.map +1 -0
  400. package/dist/esm/db-backup/node-credential.js +104 -0
  401. package/dist/esm/db-backup/node-credential.js.map +1 -0
  402. package/dist/esm/db-backup/node-result.d.ts +34 -0
  403. package/dist/esm/db-backup/node-result.d.ts.map +1 -0
  404. package/dist/esm/db-backup/node-result.js +165 -0
  405. package/dist/esm/db-backup/node-result.js.map +1 -0
  406. package/dist/esm/db-backup/restore.d.ts +405 -0
  407. package/dist/esm/db-backup/restore.d.ts.map +1 -0
  408. package/dist/esm/db-backup/restore.js +494 -0
  409. package/dist/esm/db-backup/restore.js.map +1 -0
  410. package/dist/esm/db-backup/run-actions.d.ts +49 -0
  411. package/dist/esm/db-backup/run-actions.d.ts.map +1 -0
  412. package/dist/esm/db-backup/run-actions.js +118 -0
  413. package/dist/esm/db-backup/run-actions.js.map +1 -0
  414. package/dist/esm/db-backup/runs-list-query.d.ts +20 -0
  415. package/dist/esm/db-backup/runs-list-query.d.ts.map +1 -0
  416. package/dist/esm/db-backup/runs-list-query.js +50 -0
  417. package/dist/esm/db-backup/runs-list-query.js.map +1 -0
  418. package/dist/esm/db-backup/runs.d.ts +46 -0
  419. package/dist/esm/db-backup/runs.d.ts.map +1 -0
  420. package/dist/esm/db-backup/runs.js +229 -0
  421. package/dist/esm/db-backup/runs.js.map +1 -0
  422. package/dist/esm/db-backup/schemas.d.ts +9 -0
  423. package/dist/esm/db-backup/schemas.d.ts.map +1 -0
  424. package/dist/esm/db-backup/schemas.js +15 -0
  425. package/dist/esm/db-backup/schemas.js.map +1 -0
  426. package/dist/esm/db-backup/settings-schemas.d.ts +217 -0
  427. package/dist/esm/db-backup/settings-schemas.d.ts.map +1 -0
  428. package/dist/esm/db-backup/settings-schemas.js +316 -0
  429. package/dist/esm/db-backup/settings-schemas.js.map +1 -0
  430. package/dist/esm/email/constants.d.ts +82 -0
  431. package/dist/esm/email/constants.d.ts.map +1 -0
  432. package/dist/esm/email/constants.js +79 -0
  433. package/dist/esm/email/constants.js.map +1 -0
  434. package/dist/esm/email/index.d.ts +5 -0
  435. package/dist/esm/email/index.d.ts.map +1 -0
  436. package/dist/esm/email/index.js +8 -0
  437. package/dist/esm/email/index.js.map +1 -0
  438. package/dist/esm/email/schemas.d.ts +276 -0
  439. package/dist/esm/email/schemas.d.ts.map +1 -0
  440. package/dist/esm/email/schemas.js +277 -0
  441. package/dist/esm/email/schemas.js.map +1 -0
  442. package/dist/esm/exports/constants.d.ts +123 -0
  443. package/dist/esm/exports/constants.d.ts.map +1 -0
  444. package/dist/esm/exports/constants.js +106 -0
  445. package/dist/esm/exports/constants.js.map +1 -0
  446. package/dist/esm/exports/index.d.ts +5 -0
  447. package/dist/esm/exports/index.d.ts.map +1 -0
  448. package/dist/esm/exports/index.js +7 -0
  449. package/dist/esm/exports/index.js.map +1 -0
  450. package/dist/esm/exports/schemas.d.ts +386 -0
  451. package/dist/esm/exports/schemas.d.ts.map +1 -0
  452. package/dist/esm/exports/schemas.js +285 -0
  453. package/dist/esm/exports/schemas.js.map +1 -0
  454. package/dist/esm/identity/constants.d.ts +273 -0
  455. package/dist/esm/identity/constants.d.ts.map +1 -0
  456. package/dist/esm/identity/constants.js +244 -0
  457. package/dist/esm/identity/constants.js.map +1 -0
  458. package/dist/esm/identity/index.d.ts +5 -0
  459. package/dist/esm/identity/index.d.ts.map +1 -0
  460. package/dist/esm/identity/index.js +10 -0
  461. package/dist/esm/identity/index.js.map +1 -0
  462. package/dist/esm/identity/schemas.d.ts +784 -0
  463. package/dist/esm/identity/schemas.d.ts.map +1 -0
  464. package/dist/esm/identity/schemas.js +681 -0
  465. package/dist/esm/identity/schemas.js.map +1 -0
  466. package/dist/esm/jobs/constants.d.ts +135 -0
  467. package/dist/esm/jobs/constants.d.ts.map +1 -0
  468. package/dist/esm/jobs/constants.js +127 -0
  469. package/dist/esm/jobs/constants.js.map +1 -0
  470. package/dist/esm/jobs/index.d.ts +9 -0
  471. package/dist/esm/jobs/index.d.ts.map +1 -0
  472. package/dist/esm/jobs/index.js +11 -0
  473. package/dist/esm/jobs/index.js.map +1 -0
  474. package/dist/esm/jobs/retention-schemas.d.ts +252 -0
  475. package/dist/esm/jobs/retention-schemas.d.ts.map +1 -0
  476. package/dist/esm/jobs/retention-schemas.js +229 -0
  477. package/dist/esm/jobs/retention-schemas.js.map +1 -0
  478. package/dist/esm/jobs/schemas.d.ts +361 -0
  479. package/dist/esm/jobs/schemas.d.ts.map +1 -0
  480. package/dist/esm/jobs/schemas.js +703 -0
  481. package/dist/esm/jobs/schemas.js.map +1 -0
  482. package/dist/esm/jobs/settings-schemas.d.ts +84 -0
  483. package/dist/esm/jobs/settings-schemas.d.ts.map +1 -0
  484. package/dist/esm/jobs/settings-schemas.js +113 -0
  485. package/dist/esm/jobs/settings-schemas.js.map +1 -0
  486. package/dist/esm/nodes/admin-schemas.d.ts +204 -0
  487. package/dist/esm/nodes/admin-schemas.d.ts.map +1 -0
  488. package/dist/esm/nodes/admin-schemas.js +150 -0
  489. package/dist/esm/nodes/admin-schemas.js.map +1 -0
  490. package/dist/esm/nodes/constants.d.ts +86 -0
  491. package/dist/esm/nodes/constants.d.ts.map +1 -0
  492. package/dist/esm/nodes/constants.js +99 -0
  493. package/dist/esm/nodes/constants.js.map +1 -0
  494. package/dist/esm/nodes/index.d.ts +8 -0
  495. package/dist/esm/nodes/index.d.ts.map +1 -0
  496. package/dist/esm/nodes/index.js +11 -0
  497. package/dist/esm/nodes/index.js.map +1 -0
  498. package/dist/esm/nodes/schemas.d.ts +332 -0
  499. package/dist/esm/nodes/schemas.d.ts.map +1 -0
  500. package/dist/esm/nodes/schemas.js +934 -0
  501. package/dist/esm/nodes/schemas.js.map +1 -0
  502. package/dist/esm/nodes/settings-schemas.d.ts +82 -0
  503. package/dist/esm/nodes/settings-schemas.d.ts.map +1 -0
  504. package/dist/esm/nodes/settings-schemas.js +103 -0
  505. package/dist/esm/nodes/settings-schemas.js.map +1 -0
  506. package/dist/esm/notifications/constants.d.ts +197 -0
  507. package/dist/esm/notifications/constants.d.ts.map +1 -0
  508. package/dist/esm/notifications/constants.js +178 -0
  509. package/dist/esm/notifications/constants.js.map +1 -0
  510. package/dist/esm/notifications/index.d.ts +5 -0
  511. package/dist/esm/notifications/index.d.ts.map +1 -0
  512. package/dist/esm/notifications/index.js +9 -0
  513. package/dist/esm/notifications/index.js.map +1 -0
  514. package/dist/esm/notifications/schemas.d.ts +1016 -0
  515. package/dist/esm/notifications/schemas.d.ts.map +1 -0
  516. package/dist/esm/notifications/schemas.js +848 -0
  517. package/dist/esm/notifications/schemas.js.map +1 -0
  518. package/dist/esm/onboarding/constants.d.ts +138 -0
  519. package/dist/esm/onboarding/constants.d.ts.map +1 -0
  520. package/dist/esm/onboarding/constants.js +120 -0
  521. package/dist/esm/onboarding/constants.js.map +1 -0
  522. package/dist/esm/onboarding/index.d.ts +5 -0
  523. package/dist/esm/onboarding/index.d.ts.map +1 -0
  524. package/dist/esm/onboarding/index.js +7 -0
  525. package/dist/esm/onboarding/index.js.map +1 -0
  526. package/dist/esm/onboarding/schemas.d.ts +360 -0
  527. package/dist/esm/onboarding/schemas.d.ts.map +1 -0
  528. package/dist/esm/onboarding/schemas.js +257 -0
  529. package/dist/esm/onboarding/schemas.js.map +1 -0
  530. package/dist/esm/settings/constants.d.ts +206 -0
  531. package/dist/esm/settings/constants.d.ts.map +1 -0
  532. package/dist/esm/settings/constants.js +197 -0
  533. package/dist/esm/settings/constants.js.map +1 -0
  534. package/dist/esm/settings/index.d.ts +6 -0
  535. package/dist/esm/settings/index.d.ts.map +1 -0
  536. package/dist/esm/settings/index.js +11 -0
  537. package/dist/esm/settings/index.js.map +1 -0
  538. package/dist/esm/settings/schemas.d.ts +574 -0
  539. package/dist/esm/settings/schemas.d.ts.map +1 -0
  540. package/dist/esm/settings/schemas.js +434 -0
  541. package/dist/esm/settings/schemas.js.map +1 -0
  542. package/dist/esm/settings/types.d.ts +79 -0
  543. package/dist/esm/settings/types.d.ts.map +1 -0
  544. package/dist/esm/settings/types.js +5 -0
  545. package/dist/esm/settings/types.js.map +1 -0
  546. package/dist/esm/sharing/constants.d.ts +216 -0
  547. package/dist/esm/sharing/constants.d.ts.map +1 -0
  548. package/dist/esm/sharing/constants.js +159 -0
  549. package/dist/esm/sharing/constants.js.map +1 -0
  550. package/dist/esm/sharing/enum.d.ts +5 -0
  551. package/dist/esm/sharing/enum.d.ts.map +1 -0
  552. package/dist/esm/sharing/enum.js +6 -0
  553. package/dist/esm/sharing/enum.js.map +1 -0
  554. package/dist/esm/sharing/grants.d.ts +490 -0
  555. package/dist/esm/sharing/grants.d.ts.map +1 -0
  556. package/dist/esm/sharing/grants.js +444 -0
  557. package/dist/esm/sharing/grants.js.map +1 -0
  558. package/dist/esm/sharing/groups.d.ts +410 -0
  559. package/dist/esm/sharing/groups.d.ts.map +1 -0
  560. package/dist/esm/sharing/groups.js +372 -0
  561. package/dist/esm/sharing/groups.js.map +1 -0
  562. package/dist/esm/sharing/index.d.ts +5 -0
  563. package/dist/esm/sharing/index.d.ts.map +1 -0
  564. package/dist/esm/sharing/index.js +11 -0
  565. package/dist/esm/sharing/index.js.map +1 -0
  566. package/dist/esm/sharing/schemas.d.ts +3 -0
  567. package/dist/esm/sharing/schemas.d.ts.map +1 -0
  568. package/dist/esm/sharing/schemas.js +5 -0
  569. package/dist/esm/sharing/schemas.js.map +1 -0
  570. package/dist/esm/storage/constants.d.ts +111 -0
  571. package/dist/esm/storage/constants.d.ts.map +1 -0
  572. package/dist/esm/storage/constants.js +104 -0
  573. package/dist/esm/storage/constants.js.map +1 -0
  574. package/dist/esm/storage/index.d.ts +27 -0
  575. package/dist/esm/storage/index.d.ts.map +1 -0
  576. package/dist/esm/storage/index.js +23 -0
  577. package/dist/esm/storage/index.js.map +1 -0
  578. package/dist/esm/storage/objects-complete-upload.d.ts +19 -0
  579. package/dist/esm/storage/objects-complete-upload.d.ts.map +1 -0
  580. package/dist/esm/storage/objects-complete-upload.js +16 -0
  581. package/dist/esm/storage/objects-complete-upload.js.map +1 -0
  582. package/dist/esm/storage/objects-download-url.d.ts +17 -0
  583. package/dist/esm/storage/objects-download-url.d.ts.map +1 -0
  584. package/dist/esm/storage/objects-download-url.js +13 -0
  585. package/dist/esm/storage/objects-download-url.js.map +1 -0
  586. package/dist/esm/storage/objects-init-upload.d.ts +39 -0
  587. package/dist/esm/storage/objects-init-upload.d.ts.map +1 -0
  588. package/dist/esm/storage/objects-init-upload.js +37 -0
  589. package/dist/esm/storage/objects-init-upload.js.map +1 -0
  590. package/dist/esm/storage/objects-list-query.d.ts +50 -0
  591. package/dist/esm/storage/objects-list-query.d.ts.map +1 -0
  592. package/dist/esm/storage/objects-list-query.js +20 -0
  593. package/dist/esm/storage/objects-list-query.js.map +1 -0
  594. package/dist/esm/storage/objects-object-response.d.ts +49 -0
  595. package/dist/esm/storage/objects-object-response.d.ts.map +1 -0
  596. package/dist/esm/storage/objects-object-response.js +51 -0
  597. package/dist/esm/storage/objects-object-response.js.map +1 -0
  598. package/dist/esm/storage/objects-update-metadata.d.ts +16 -0
  599. package/dist/esm/storage/objects-update-metadata.d.ts.map +1 -0
  600. package/dist/esm/storage/objects-update-metadata.js +11 -0
  601. package/dist/esm/storage/objects-update-metadata.js.map +1 -0
  602. package/dist/esm/storage/schemas.d.ts +13 -0
  603. package/dist/esm/storage/schemas.d.ts.map +1 -0
  604. package/dist/esm/storage/schemas.js +19 -0
  605. package/dist/esm/storage/schemas.js.map +1 -0
  606. package/dist/esm/storage/settings-schemas.d.ts +188 -0
  607. package/dist/esm/storage/settings-schemas.d.ts.map +1 -0
  608. package/dist/esm/storage/settings-schemas.js +220 -0
  609. package/dist/esm/storage/settings-schemas.js.map +1 -0
  610. package/dist/esm/storage/storage-bucket-provision.d.ts +152 -0
  611. package/dist/esm/storage/storage-bucket-provision.d.ts.map +1 -0
  612. package/dist/esm/storage/storage-bucket-provision.js +213 -0
  613. package/dist/esm/storage/storage-bucket-provision.js.map +1 -0
  614. package/dist/esm/storage/storage-config-response.d.ts +99 -0
  615. package/dist/esm/storage/storage-config-response.d.ts.map +1 -0
  616. package/dist/esm/storage/storage-config-response.js +170 -0
  617. package/dist/esm/storage/storage-config-response.js.map +1 -0
  618. package/dist/esm/storage/storage-config-update.d.ts +46 -0
  619. package/dist/esm/storage/storage-config-update.d.ts.map +1 -0
  620. package/dist/esm/storage/storage-config-update.js +130 -0
  621. package/dist/esm/storage/storage-config-update.js.map +1 -0
  622. package/dist/esm/storage/storage-connection-test.d.ts +129 -0
  623. package/dist/esm/storage/storage-connection-test.d.ts.map +1 -0
  624. package/dist/esm/storage/storage-connection-test.js +241 -0
  625. package/dist/esm/storage/storage-connection-test.js.map +1 -0
  626. package/dist/esm/storage/storage-status.d.ts +16 -0
  627. package/dist/esm/storage/storage-status.d.ts.map +1 -0
  628. package/dist/esm/storage/storage-status.js +20 -0
  629. package/dist/esm/storage/storage-status.js.map +1 -0
  630. package/dist/esm/telemetry/config.d.ts +4 -0
  631. package/dist/esm/telemetry/config.d.ts.map +1 -1
  632. package/dist/esm/telemetry/config.js +16 -2
  633. package/dist/esm/telemetry/config.js.map +1 -1
  634. package/dist/esm/telemetry/connection.d.ts +1 -1
  635. package/dist/esm/telemetry/constants.d.ts +378 -6
  636. package/dist/esm/telemetry/constants.d.ts.map +1 -1
  637. package/dist/esm/telemetry/constants.js +288 -4
  638. package/dist/esm/telemetry/constants.js.map +1 -1
  639. package/dist/esm/telemetry/dashboard.d.ts +188 -17
  640. package/dist/esm/telemetry/dashboard.d.ts.map +1 -1
  641. package/dist/esm/telemetry/dashboard.js +61 -3
  642. package/dist/esm/telemetry/dashboard.js.map +1 -1
  643. package/dist/esm/telemetry/index.d.ts +4 -4
  644. package/dist/esm/telemetry/index.d.ts.map +1 -1
  645. package/dist/esm/telemetry/index.js +2 -2
  646. package/dist/esm/telemetry/index.js.map +1 -1
  647. package/dist/esm/telemetry/presentation.d.ts +243 -0
  648. package/dist/esm/telemetry/presentation.d.ts.map +1 -0
  649. package/dist/esm/telemetry/presentation.js +297 -0
  650. package/dist/esm/telemetry/presentation.js.map +1 -0
  651. package/dist/esm/telemetry/query.d.ts +2 -2
  652. package/dist/esm/telemetry/schemas.d.ts +5 -2
  653. package/dist/esm/telemetry/schemas.d.ts.map +1 -1
  654. package/dist/esm/telemetry/schemas.js +3 -1
  655. package/dist/esm/telemetry/schemas.js.map +1 -1
  656. package/dist/esm/telemetry/stack.d.ts +5 -5
  657. package/dist/esm/telemetry/store.d.ts +111 -0
  658. package/dist/esm/telemetry/store.d.ts.map +1 -0
  659. package/dist/esm/telemetry/store.js +80 -0
  660. package/dist/esm/telemetry/store.js.map +1 -0
  661. package/dist/esm/user-data/constants.d.ts +157 -0
  662. package/dist/esm/user-data/constants.d.ts.map +1 -0
  663. package/dist/esm/user-data/constants.js +134 -0
  664. package/dist/esm/user-data/constants.js.map +1 -0
  665. package/dist/esm/user-data/index.d.ts +5 -0
  666. package/dist/esm/user-data/index.d.ts.map +1 -0
  667. package/dist/esm/user-data/index.js +7 -0
  668. package/dist/esm/user-data/index.js.map +1 -0
  669. package/dist/esm/user-data/schemas.d.ts +306 -0
  670. package/dist/esm/user-data/schemas.d.ts.map +1 -0
  671. package/dist/esm/user-data/schemas.js +330 -0
  672. package/dist/esm/user-data/schemas.js.map +1 -0
  673. package/package.json +151 -1
@@ -0,0 +1,494 @@
1
+ // =============================================================================
2
+ // The restore and rollback wire contract (issue #286, epic #254)
3
+ // =============================================================================
4
+ //
5
+ // ⚠ THIS IS THE ONE PLACE IN THIS APPLICATION WHERE A MIS-FIRED OR RETRIED
6
+ // REQUEST IS AN OUTAGE RATHER THAN A DUPLICATE ROW. Every other POST in this
7
+ // API, sent twice, costs at worst a wasted row: a second backup is refused by
8
+ // the single-active index, a second job is a second job, a second broadcast is
9
+ // embarrassing. A second restore replaces the production database. So the
10
+ // request body is shaped to be IMPOSSIBLE TO RECONSTRUCT BY ACCIDENT, and that
11
+ // is what the two `confirmation` literals below are for.
12
+ //
13
+ // -----------------------------------------------------------------------------
14
+ // WHY A TYPED LITERAL AND NOT `confirm: true`
15
+ // -----------------------------------------------------------------------------
16
+ //
17
+ // ⚠ REJECTED: `{ "confirm": true }`. It is the obvious shape and it is worth
18
+ // naming so it is not proposed again. A boolean is reproduced by:
19
+ //
20
+ // - a browser or proxy replaying a POST it believes idempotent;
21
+ // - a `curl` line copied out of a runbook, a terminal history or a chat;
22
+ // - a client library retrying on a socket timeout — which is exactly when a
23
+ // restore is in flight and answering slowly;
24
+ // - a double-click on a button whose first response has not arrived.
25
+ //
26
+ // In all four the body is `{"confirm":true}` and the server cannot tell the
27
+ // second request from the first. `{"confirmation":"RESTORE"}` is reproduced by
28
+ // none of them ACCIDENTALLY — it can still be replayed deliberately, which is
29
+ // the point: a replay of this body is a decision somebody made, and a request
30
+ // that carries the wrong word (or no word) is refused with a 400 having started
31
+ // NOTHING. Not a 409, not a queued attempt, not a partially-run pre-flight.
32
+ //
33
+ // The two words differ (`RESTORE` and `ROLLBACK`) so that a body copied from
34
+ // one route to the other is refused too. They are UPPERCASE and matched
35
+ // exactly: a case-insensitive compare would accept `restore`, which is a word
36
+ // somebody types by habit.
37
+ //
38
+ // -----------------------------------------------------------------------------
39
+ // THREE NORMAL OUTCOMES PER ROUTE, KEYED BY `mode` — AND `mode` IS THE ANSWER,
40
+ // NOT THE STATUS CODE
41
+ // -----------------------------------------------------------------------------
42
+ //
43
+ // Both routes answer `200` on every one of their three outcomes, and the
44
+ // discriminator is the `mode` field. This is the same contract
45
+ // `CancelBackupResultDto` states for its `outcome`, and it is forced by the
46
+ // same fact: THE HONEST ANSWER HAS MORE THAN ONE SHAPE AND A STATUS CODE CANNOT
47
+ // CARRY THE DIFFERENCE.
48
+ //
49
+ // ⚠ `guided` IS NOT AN ERROR STATUS, and this is the single most important
50
+ // decision in this file. A `guided` result means a CAPABILITY gate failed —
51
+ // nearly always `CREATEDB`, which managed PostgreSQL routinely denies — and the
52
+ // body carries a complete, paste-ready command block plus a runbook link so the
53
+ // operator can perform the same restore by hand with a superuser. Answering
54
+ // `4xx` would tell them, in the middle of an incident, that their platform is
55
+ // unsupported. It is not: it is a platform this design PLANNED for. See
56
+ // `docs/specs/database-restore.md`, "Outcomes and precedence".
57
+ //
58
+ // `blocked` is likewise a 200: the schema gate found a migration mismatch, and
59
+ // the caller's next move is to re-send with `overrideSchemaCheck: true`. That
60
+ // is an answer, not a failure.
61
+ //
62
+ // What IS an error is anything that means the request could not be answered at
63
+ // all: no such run (404), a run that is not a restorable archive (400), a
64
+ // missing or wrong confirmation (400), and another restore already in flight
65
+ // (409). See the controller for that mapping and why it lives there.
66
+ //
67
+ // -----------------------------------------------------------------------------
68
+ // ⚠ `overrideSchemaCheck` UNBLOCKS EXACTLY ONE GATE
69
+ // -----------------------------------------------------------------------------
70
+ //
71
+ // It clears the SCHEMA COMPATIBILITY gate and nothing else. It can never
72
+ // unblock a capability gate, and the difference is not a policy choice:
73
+ //
74
+ // - A schema mismatch is a JUDGEMENT. "This archive predates two migrations;
75
+ // I accept that and will run `prisma migrate deploy` afterwards" is a
76
+ // sentence an operator is entitled to say.
77
+ // - A capability failure is a STATEMENT OF FACT. No amount of accepting makes
78
+ // a role without `CREATEDB` able to create a database. An override that
79
+ // silenced it would not enable a restore; it would start one that fails at
80
+ // `CREATE DATABASE`, having already downloaded the archive.
81
+ //
82
+ // There is an explicit negative test for that, in both the colocated service
83
+ // spec and the integration spec.
84
+ //
85
+ // -----------------------------------------------------------------------------
86
+ // THE FIELD NAME IS PUBLISHED BY THE PRE-FLIGHT, NOT INVENTED HERE
87
+ // -----------------------------------------------------------------------------
88
+ //
89
+ // A `blocked` body carries `block.overrideParameter`, whose whole purpose is to
90
+ // tell the client WHICH REQUEST FIELD to set. It must therefore be this DTO's
91
+ // field name, so `restore-preflight.service.ts` exports
92
+ // {@link RESTORE_SCHEMA_OVERRIDE_FIELD} and this file ties its schema to it —
93
+ // once at compile time ({@link RestoreOverrideFieldIsReal}) and once at run time
94
+ // in the spec. The two cannot drift into naming different things.
95
+ // =============================================================================
96
+ import { z } from 'zod';
97
+ import { RESTORE_CONFIRMATION, RESTORE_GATE_ID_PATTERN, ROLLBACK_CONFIRMATION } from './constants.js';
98
+ /**
99
+ * A restore gate id on the wire: any id matching {@link RESTORE_GATE_ID_PATTERN}
100
+ * (the eight built-ins and the ids an app registered with `registerRestoreGate`).
101
+ * An open vocabulary: it was a closed enum of the eight.
102
+ *
103
+ * @extensionPoint schema
104
+ * @stability experimental
105
+ */
106
+ export const restoreGateIdSchema = z.string().regex(RESTORE_GATE_ID_PATTERN);
107
+ // ---------------------------------------------------------------------------
108
+ // Requests
109
+ // ---------------------------------------------------------------------------
110
+ /**
111
+ * `POST /api/admin/db-backup/runs/:id/restore` body.
112
+ *
113
+ * @stability stable
114
+ */
115
+ export const startRestoreRequestSchema = z.object({
116
+ /**
117
+ * The literal string `RESTORE`.
118
+ *
119
+ * ⚠ THE SAFETY FEATURE OF THIS ENDPOINT. A missing, empty, misspelt or
120
+ * lower-case value is a `400` and STARTS NOTHING — not the pre-flight, not a
121
+ * download, not a row. See this file's header for why a boolean was rejected.
122
+ */
123
+ confirmation: z.literal(RESTORE_CONFIRMATION),
124
+ /**
125
+ * Accepts a schema-compatibility mismatch and proceeds anyway.
126
+ *
127
+ * ⚠ IT UNBLOCKS THE SCHEMA GATE AND NOTHING ELSE. It is not a force flag and
128
+ * must never become one — see this file's header. Set it only after reading
129
+ * the `blocked` body that asked for it: that body names the archive's
130
+ * migration and the live one, which is the comparison the decision rests on.
131
+ *
132
+ * Optional, defaulting to `false`, so an ordinary restore body is exactly
133
+ * `{ "confirmation": "RESTORE" }`.
134
+ */
135
+ overrideSchemaCheck: z.boolean().optional().default(false),
136
+ });
137
+ /**
138
+ * `POST /api/admin/db-backup/runs/:id/rollback` body.
139
+ *
140
+ * @stability stable
141
+ */
142
+ export const rollbackRestoreRequestSchema = z.object({
143
+ /**
144
+ * The literal string `ROLLBACK`.
145
+ *
146
+ * A DIFFERENT WORD FROM THE RESTORE ROUTE'S, on purpose: a body copied from
147
+ * one route to the other is refused rather than silently accepted. In
148
+ * `pre_restore_dump` mode a rollback IS a multi-hour restore, so confusing
149
+ * the two is not a harmless mistake.
150
+ */
151
+ confirmation: z.literal(ROLLBACK_CONFIRMATION),
152
+ });
153
+ // ---------------------------------------------------------------------------
154
+ // The pre-flight verdict, on the wire
155
+ // ---------------------------------------------------------------------------
156
+ /**
157
+ * One gate's finding.
158
+ *
159
+ * ⚠ EVERY GATE APPEARS, INCLUDING THE ONES THAT PASSED. An operator about to
160
+ * replace their production database is entitled to see WHAT WAS CHECKED, not
161
+ * only what failed — a list containing only failures gives no way to tell
162
+ * "checked, fine" from "never ran". #287's dialog renders the whole list.
163
+ *
164
+ * @stability stable
165
+ */
166
+ export const restoreGateSchema = z.object({
167
+ /** Id. */
168
+ id: restoreGateIdSchema,
169
+ /**
170
+ * What kind of problem this gate reports, which is what decides how a failure
171
+ * is handled — and therefore whether `overrideSchemaCheck` can do anything
172
+ * about it. Only `overridable` can.
173
+ */
174
+ kind: z.enum(['capability', 'disk', 'replicas', 'overridable', 'app']),
175
+ /** `warning` is a pass that says something; it does not stop a restore. */
176
+ verdict: z.enum(['pass', 'warning', 'block']),
177
+ /** Short label, safe to render as a row heading. */
178
+ title: z.string(),
179
+ /** What was found, in one or two sentences an operator can act on. */
180
+ detail: z.string(),
181
+ /**
182
+ * What to DO about it, or `null` when there is nothing to do.
183
+ *
184
+ * Per-gate rather than one message on the result: a `guided` outcome
185
+ * routinely has two or three findings with different remedies, and flattening
186
+ * them into one string is how an operator fixes the first and is surprised by
187
+ * the second.
188
+ */
189
+ action: z.string().nullable(),
190
+ });
191
+ /**
192
+ * What the restore's rollback story will be, after pre-flight has had its say.
193
+ *
194
+ * @stability stable
195
+ */
196
+ export const restoreRollbackPlanSchema = z.object({
197
+ /** What `databaseBackup.restoreRollbackMode` stores. */
198
+ configured: z.enum(['retain_database', 'drop_database']),
199
+ /**
200
+ * What will actually happen, which is what the rollback route's `mode` will
201
+ * report.
202
+ *
203
+ * `pre_restore_dump` is what `drop_database` MEANS once you ask what the way
204
+ * back is. Naming the effective mode after the thing that RECOVERS you rather
205
+ * than the thing that is destroyed is what makes the downgrade message
206
+ * honest.
207
+ */
208
+ effective: z.enum(['retain_database', 'pre_restore_dump']),
209
+ /** `true` when disk pressure changed the answer. */
210
+ downgraded: z.boolean(),
211
+ /** Why it changed, in the operator's terms. `null` when it did not. */
212
+ reason: z.string().nullable(),
213
+ });
214
+ /**
215
+ * The pre-flight verdict, minus its outcome-specific member.
216
+ *
217
+ * `guidance` and `block` are NOT repeated in here: they are hoisted to the top
218
+ * level of the response next to the `mode` that selects them, so a client
219
+ * narrows once rather than twice and a multi-line command block is never sent
220
+ * twice in one body.
221
+ *
222
+ * @stability stable
223
+ */
224
+ export const restorePreflightSchema = z.object({
225
+ /**
226
+ * What the gates decided, which mirrors the response's own `mode` exactly:
227
+ * `ok`→`running`, `guided`→`guided`, `blocked`→`blocked`.
228
+ *
229
+ * Published even though it is redundant with `mode`, because this object is
230
+ * also the thing a future read-only pre-flight route would return on its own,
231
+ * and a verdict that does not say what it decided is not a verdict.
232
+ */
233
+ outcome: z.enum(['ok', 'guided', 'blocked']),
234
+ /** The backup this verdict is about. */
235
+ runId: z.uuid(),
236
+ /** The application's database — the one a restore would displace. */
237
+ targetDatabase: z.string(),
238
+ /** The database the archive is replayed into, before the swap. */
239
+ scratchDatabase: z.string(),
240
+ /** The name the live database is renamed to during the swap. */
241
+ oldDatabase: z.string(),
242
+ /** Gates. */
243
+ gates: z.array(restoreGateSchema),
244
+ /** Rollback. */
245
+ rollback: restoreRollbackPlanSchema,
246
+ /** The migration recorded on the archive, and the one live right now. */
247
+ archiveMigration: z.string().nullable(),
248
+ /** Live migration. */
249
+ liveMigration: z.string().nullable(),
250
+ /**
251
+ * The live database's on-disk size, as a DECIMAL STRING.
252
+ *
253
+ * A string for the reason `db-backup-run.dto.ts` gives at length:
254
+ * `pg_database_size` returns `int8`, `JSON.stringify` refuses a `bigint`
255
+ * outright, and `Number()` rounds above 2^53. `null` when the cluster could
256
+ * not be read.
257
+ */
258
+ databaseSizeBytes: z.string().regex(/^\d+$/).nullable(),
259
+ /**
260
+ * Free bytes where the server keeps its data, as a decimal string.
261
+ *
262
+ * `null` IS THE COMMON CASE and not a failure: the database is usually
263
+ * external to this container, so its data directory is on a filesystem this
264
+ * process has never seen. The disk gate turns that into a warning and never
265
+ * into a refusal.
266
+ */
267
+ freeDiskBytes: z.string().regex(/^\d+$/).nullable(),
268
+ });
269
+ // ---------------------------------------------------------------------------
270
+ // POST runs/:id/restore
271
+ // ---------------------------------------------------------------------------
272
+ /**
273
+ * `mode: "running"`: the gates passed and the restore is under way.
274
+ *
275
+ * @stability stable
276
+ */
277
+ export const startRestoreRunningSchema = z.object({
278
+ /**
279
+ * The gates passed and the restore is UNDER WAY, in the background.
280
+ *
281
+ * ⚠ NOT "FINISHED". The response returns as soon as the cheap pre-flight
282
+ * gates have run, because a restore rebuilds every index in the database
283
+ * from scratch and takes HOURS, while every proxy in front of this API has
284
+ * a response timeout measured in seconds. Poll `GET runs/{id}` and watch
285
+ * `restoreStatus`: `restoring` → `verifying` → `swapping` →
286
+ * `completed`/`failed`.
287
+ */
288
+ mode: z.literal('running'),
289
+ /** The backup being replayed. The same id you poll. */
290
+ runId: z.uuid(),
291
+ /** Where the archive is being replayed. Exists from now until the swap. */
292
+ scratchDatabase: z.string(),
293
+ /**
294
+ * What the live database will be renamed to at the swap.
295
+ *
296
+ * Worth reading before the swap lands: in `retain_database` mode this is
297
+ * the database a rollback renames back, and it is the name a human needs if
298
+ * they ever have to finish a swap by hand.
299
+ */
300
+ oldDatabase: z.string(),
301
+ /** Preflight. */
302
+ preflight: restorePreflightSchema,
303
+ });
304
+ /**
305
+ * `mode: "guided"`: this deployment cannot restore automatically; here is how a human can.
306
+ *
307
+ * @stability stable
308
+ */
309
+ export const startRestoreGuidedSchema = z.object({
310
+ /**
311
+ * A CAPABILITY gate failed. NOTHING WAS STARTED and nothing was created.
312
+ *
313
+ * ⚠ NOT AN ERROR. This is the EXPECTED path on managed PostgreSQL that
314
+ * denies `CREATEDB`, and the body below is the deliverable: the same
315
+ * restore, performed by hand, with a superuser, from the same archive.
316
+ */
317
+ mode: z.literal('guided'),
318
+ /** Run id. */
319
+ runId: z.uuid(),
320
+ /** Guidance. */
321
+ guidance: z.object({
322
+ /** Which gate(s) sent the operator here, in one sentence. */
323
+ reason: z.string(),
324
+ /**
325
+ * A COMPLETE shell block — real database names, real user, real host and
326
+ * port, real run id. No placeholders: a command block with a
327
+ * `<your-host>` in it is not a deliverable, it is homework, and it is
328
+ * being read during an incident. Render it in a monospace block and let
329
+ * it be copied whole.
330
+ */
331
+ commands: z.string(),
332
+ /** Repository-relative path to the runbook that explains the block. */
333
+ runbook: z.string(),
334
+ }),
335
+ /** Preflight. */
336
+ preflight: restorePreflightSchema,
337
+ });
338
+ /**
339
+ * `mode: "blocked"`: a gate refused the restore.
340
+ *
341
+ * @stability stable
342
+ */
343
+ export const startRestoreBlockedSchema = z.object({
344
+ /**
345
+ * The schema-compatibility gate refused. NOTHING WAS STARTED.
346
+ *
347
+ * Re-send with `overrideSchemaCheck: true` to proceed anyway — after
348
+ * comparing `preflight.archiveMigration` against `preflight.liveMigration`,
349
+ * which is the comparison the decision actually rests on.
350
+ */
351
+ mode: z.literal('blocked'),
352
+ /** Run id. */
353
+ runId: z.uuid(),
354
+ /** Block. */
355
+ block: z.object({
356
+ /** Which gate refused. */
357
+ gateId: restoreGateIdSchema,
358
+ /** What it found, in one or two sentences. */
359
+ message: z.string(),
360
+ /**
361
+ * Whether a human may override this block at all.
362
+ *
363
+ * `false` means the answer is no and re-sending will not help — the
364
+ * client/server version pair is the live example. Do not offer an
365
+ * override button for a block that says `false`.
366
+ */
367
+ overridable: z.boolean(),
368
+ /**
369
+ * The REQUEST FIELD that unblocks it, or `null` when nothing does.
370
+ *
371
+ * Published so a client never has to hard-code which flag clears which
372
+ * gate. Today the only value is `overrideSchemaCheck`.
373
+ */
374
+ overrideParameter: z.string().nullable(),
375
+ }),
376
+ /** Preflight. */
377
+ preflight: restorePreflightSchema,
378
+ });
379
+ /**
380
+ * The three variants as one discriminated union — the RUNTIME contract and the
381
+ * TypeScript type.
382
+ *
383
+ * ⚠ `createZodDto` IS APPLIED TO EACH VARIANT, NOT TO THIS UNION, and it is not
384
+ * a stylistic choice: `createZodDto` builds a CLASS whose instance type is the
385
+ * schema's output, and a class cannot have a union instance type — TypeScript
386
+ * rejects it outright ("Base constructor return type is not an object type").
387
+ * So the union stays a schema and a type, and the OpenAPI document composes the
388
+ * three variant classes with `oneOf`. `openapi/data-envelope.ts` still wraps the
389
+ * result correctly because `ApiDataResponse` emits the `{ data: … }` envelope
390
+ * itself rather than relying on the later pass to recognise a composed schema.
391
+ *
392
+ * @stability stable
393
+ */
394
+ export const startRestoreResponseSchema = z.discriminatedUnion('mode', [
395
+ startRestoreRunningSchema,
396
+ startRestoreGuidedSchema,
397
+ startRestoreBlockedSchema,
398
+ ]);
399
+ // ---------------------------------------------------------------------------
400
+ // POST runs/:id/rollback
401
+ // ---------------------------------------------------------------------------
402
+ /**
403
+ * `mode: "renamed"`: the displaced database was renamed back into place.
404
+ *
405
+ * @stability stable
406
+ */
407
+ export const rollbackRenamedSchema = z.object({
408
+ /**
409
+ * `retain_database` mode: the retained pre-swap database was renamed back
410
+ * into place and the process is exiting. SECONDS.
411
+ *
412
+ * This is the entire justification for paying roughly double the PostgreSQL
413
+ * volume for `databaseBackup.oldDatabaseRetentionHours`.
414
+ *
415
+ * ⚠ THE PROCESS EXITS moments after this response is flushed, because its
416
+ * connection pool is bound to a database that has just been renamed out
417
+ * from under it. Expect the very next request to fail until the supervisor
418
+ * restarts the process.
419
+ */
420
+ mode: z.literal('renamed'),
421
+ /** Run id. */
422
+ runId: z.uuid(),
423
+ /** The database that is now live — the one the restore had displaced. */
424
+ promoted: z.string(),
425
+ /** Where the restored database was parked. Dropped by the retention sweep. */
426
+ parked: z.string(),
427
+ /** One sentence an operator can act on, matched to `mode`. */
428
+ detail: z.string(),
429
+ });
430
+ /**
431
+ * `mode: "restore_started"`: the pre-restore safety dump is being restored instead.
432
+ *
433
+ * @stability stable
434
+ */
435
+ export const rollbackRestoreStartedSchema = z.object({
436
+ /**
437
+ * `pre_restore_dump` mode: there was no database to rename, so this
438
+ * delegated into the RESTORE path against the safety archive taken
439
+ * immediately before the swap. HOURS, not seconds.
440
+ *
441
+ * ⚠ THE DELEGATED RESTORE RUNS WITH THE SCHEMA CHECK OVERRIDDEN, and it has
442
+ * to. That dump came from the schema this code was running moments before
443
+ * the restore, so the migration it would be compared against is the
444
+ * ARCHIVE's — the gate would block on a mismatch that exists only because
445
+ * the thing being undone happened. A spurious block, fired at the exact
446
+ * moment an operator needs the way back.
447
+ *
448
+ * Poll `GET runs/{preRestoreRunId}` — NOT `runId` — for progress: the
449
+ * restore's state lives on the row of the backup being replayed.
450
+ */
451
+ mode: z.literal('restore_started'),
452
+ /** Run id. */
453
+ runId: z.uuid(),
454
+ /** The `pre_restore` backup now being restored. The row to poll. */
455
+ preRestoreRunId: z.uuid(),
456
+ /** Detail. */
457
+ detail: z.string(),
458
+ });
459
+ /**
460
+ * `mode: "unavailable"`: there is nothing to roll back to.
461
+ *
462
+ * @stability stable
463
+ */
464
+ export const rollbackUnavailableSchema = z.object({
465
+ /**
466
+ * There is nothing left to roll back to.
467
+ *
468
+ * ⚠ REPORTED HONESTLY RATHER THAN AS A FAILURE, and it is a `200` for that
469
+ * reason. Nothing went wrong just now: the retained database passed its
470
+ * retention window and was dropped, or the deployment never had one and no
471
+ * completed pre-restore backup exists. An operator needs that as a FACT,
472
+ * not as an error to retry — retrying changes nothing, and restoring some
473
+ * other archive is a new restore, not a rollback.
474
+ */
475
+ mode: z.literal('unavailable'),
476
+ /** Run id. */
477
+ runId: z.uuid(),
478
+ /**
479
+ * Why, in the operator's terms — verbatim from the service, which is the
480
+ * only thing that knows which of the two ways in it arrived by.
481
+ */
482
+ detail: z.string(),
483
+ });
484
+ /**
485
+ * The three variants as one discriminated union. Split into classes for the same reason.
486
+ *
487
+ * @stability stable
488
+ */
489
+ export const rollbackRestoreResponseSchema = z.discriminatedUnion('mode', [
490
+ rollbackRenamedSchema,
491
+ rollbackRestoreStartedSchema,
492
+ rollbackUnavailableSchema,
493
+ ]);
494
+ //# sourceMappingURL=restore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../../src/db-backup/restore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ import { type DbBackupEnum } from './constants.js';
3
+ /**
4
+ * `DELETE /api/admin/db-backup/runs/:id` response.
5
+ *
6
+ * @stability stable
7
+ */
8
+ export declare const deleteBackupResultSchema: z.ZodObject<{
9
+ id: z.ZodUUID;
10
+ objectDeleted: z.ZodBoolean;
11
+ }, z.core.$strip>;
12
+ /**
13
+ * The parsed {@link deleteBackupResultSchema}.
14
+ *
15
+ * @stability stable
16
+ */
17
+ export type DeleteBackupResult = z.infer<typeof deleteBackupResultSchema>;
18
+ /**
19
+ * `POST /api/admin/db-backup/runs/:id/cancel` response.
20
+ *
21
+ * @stability stable
22
+ */
23
+ export declare const cancelBackupResultSchema: z.ZodObject<{
24
+ runId: z.ZodUUID;
25
+ outcome: z.ZodEnum<DbBackupEnum<readonly ["signalled", "not_running_here"]>>;
26
+ detail: z.ZodString;
27
+ }, z.core.$strip>;
28
+ /**
29
+ * The parsed {@link cancelBackupResultSchema}.
30
+ *
31
+ * @stability stable
32
+ */
33
+ export type CancelBackupResult = z.infer<typeof cancelBackupResultSchema>;
34
+ /**
35
+ * `GET /api/admin/db-backup/runs/:id/download-url` response.
36
+ *
37
+ * @stability stable
38
+ */
39
+ export declare const backupDownloadUrlSchema: z.ZodObject<{
40
+ url: z.ZodURL;
41
+ expiresIn: z.ZodNumber;
42
+ }, z.core.$strip>;
43
+ /**
44
+ * The parsed {@link backupDownloadUrlSchema}.
45
+ *
46
+ * @stability stable
47
+ */
48
+ export type BackupDownloadUrl = z.infer<typeof backupDownloadUrlSchema>;
49
+ //# sourceMappingURL=run-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-actions.d.ts","sourceRoot":"","sources":["../../../src/db-backup/run-actions.ts"],"names":[],"mappings":"AA0CA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMpE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;iBAanC,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAM1E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;iBAyBnC,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAM1E;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;iBAalC,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,118 @@
1
+ // =============================================================================
2
+ // What the three action routes answer with (issue #283, epic #254)
3
+ // =============================================================================
4
+ //
5
+ // Delete, cancel and download. Each returns a body rather than a bare `204`,
6
+ // and in each case the reason is the same: THE HONEST ANSWER HAS MORE THAN ONE
7
+ // SHAPE, and a status code cannot carry the difference.
8
+ //
9
+ // -----------------------------------------------------------------------------
10
+ // DELETE RETURNS `objectDeleted`, SO A MISSING OBJECT CANNOT STRAND A ROW
11
+ // -----------------------------------------------------------------------------
12
+ //
13
+ // The archive is deleted first and the row second — the reverse order would
14
+ // leave a multi-gigabyte object in the bucket that nothing points at, billed
15
+ // forever, because the row is the only index of what exists there. The same
16
+ // ordering, for the same reason, is in `db-backup-retention.service.ts`.
17
+ //
18
+ // But the object delete is BEST-EFFORT, and that is what this field reports. An
19
+ // object that is already gone — pruned by a bucket lifecycle rule, removed by
20
+ // hand, deleted by a previous attempt that failed after the object and before
21
+ // the row — must not make the row undeletable. Failing the request would leave
22
+ // an administrator staring at a row they cannot remove for a reason that is not
23
+ // their fault and that no retry will change. So the row goes, and
24
+ // `objectDeleted: false` says plainly that there was nothing in storage to
25
+ // remove (or that removing it did not work), which is exactly the fact an
26
+ // operator needs if they are reconciling a bucket against this table.
27
+ //
28
+ // -----------------------------------------------------------------------------
29
+ // CANCEL RETURNS AN OUTCOME, BECAUSE CANCELLATION IS PROCESS-LOCAL
30
+ // -----------------------------------------------------------------------------
31
+ //
32
+ // A dump is stopped by signalling a CHILD PROCESS, and only the API replica
33
+ // that spawned it holds that handle. A run started on another replica genuinely
34
+ // cannot be stopped from here. `DatabaseBackupRunnerService.cancel` already
35
+ // says so — it returns a discriminated result rather than a `boolean` — and
36
+ // this DTO's whole job is to carry that distinction to the client instead of
37
+ // flattening it into a 200 that means "cancelled" when it does not.
38
+ //
39
+ // See `DatabaseBackupAdminService.cancelRun` for why `not_running_here` is a
40
+ // 200 with an honest body rather than a 409 or a 500.
41
+ // =============================================================================
42
+ import { z } from 'zod';
43
+ import { CANCEL_OUTCOMES } from './constants.js';
44
+ // ---------------------------------------------------------------------------
45
+ // DELETE runs/:id
46
+ // ---------------------------------------------------------------------------
47
+ /**
48
+ * `DELETE /api/admin/db-backup/runs/:id` response.
49
+ *
50
+ * @stability stable
51
+ */
52
+ export const deleteBackupResultSchema = z.object({
53
+ /** The run that was removed. Echoed so a client need not remember what it asked. */
54
+ id: z.uuid(),
55
+ /**
56
+ * Whether the archive was removed from object storage.
57
+ *
58
+ * `false` is NOT an error and NOT a partial failure the caller should retry:
59
+ * the row is gone either way. It means storage had nothing to remove, or
60
+ * refused — see this file's header. An operator reconciling a bucket against
61
+ * this table is the reader this field exists for.
62
+ */
63
+ objectDeleted: z.boolean(),
64
+ });
65
+ // ---------------------------------------------------------------------------
66
+ // POST runs/:id/cancel
67
+ // ---------------------------------------------------------------------------
68
+ /**
69
+ * `POST /api/admin/db-backup/runs/:id/cancel` response.
70
+ *
71
+ * @stability stable
72
+ */
73
+ export const cancelBackupResultSchema = z.object({
74
+ /** The run the cancel was aimed at. */
75
+ runId: z.uuid(),
76
+ /**
77
+ * What actually happened.
78
+ *
79
+ * - `signalled` — the dump process was killed and its upload torn down. The
80
+ * run travels the ORDINARY failure path from there (partial object
81
+ * deleted, row marked `failed`), so poll the run to watch it settle;
82
+ * cancellation is deliberately not a second teardown mechanism.
83
+ * - `not_running_here` — this replica holds no handle for that run. Either
84
+ * another replica is executing it, or it settled between the read and the
85
+ * cancel. Nothing was stopped, and the response says so.
86
+ */
87
+ outcome: z.enum(CANCEL_OUTCOMES),
88
+ /**
89
+ * One sentence an operator can act on, matched to `outcome`.
90
+ *
91
+ * Present so a UI can render the `not_running_here` case without hard-coding
92
+ * an explanation of process-local cancellation — the explanation belongs with
93
+ * the code that knows why, not in every client.
94
+ */
95
+ detail: z.string(),
96
+ });
97
+ // ---------------------------------------------------------------------------
98
+ // GET runs/:id/download
99
+ // ---------------------------------------------------------------------------
100
+ /**
101
+ * `GET /api/admin/db-backup/runs/:id/download-url` response.
102
+ *
103
+ * @stability stable
104
+ */
105
+ export const backupDownloadUrlSchema = z.object({
106
+ /**
107
+ * A pre-signed URL that downloads the archive DIRECTLY FROM OBJECT STORAGE.
108
+ *
109
+ * Treat it as a credential: anyone holding it can fetch a complete copy of
110
+ * this deployment's database until it expires, with no bearer token of any
111
+ * kind. That is why `expiresIn` below is short — see
112
+ * `BACKUP_DOWNLOAD_URL_EXPIRY_SECONDS` in `db-backup-admin.service.ts`.
113
+ */
114
+ url: z.url(),
115
+ /** Seconds the URL stays valid, counted from when it was issued. */
116
+ expiresIn: z.number().int().positive(),
117
+ });
118
+ //# sourceMappingURL=run-actions.js.map