@vibesdotdev/integrations-digitalocean 0.0.0-stage → 1.0.0-rc.1

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 (323) hide show
  1. package/LICENSE +126 -0
  2. package/README.md +78 -2
  3. package/dist/ai/index.d.ts +4 -0
  4. package/dist/ai/index.d.ts.map +1 -0
  5. package/dist/ai/index.js +4 -0
  6. package/dist/ai/index.js.map +1 -0
  7. package/dist/ai/inference.transport.impl.d.ts +5 -0
  8. package/dist/ai/inference.transport.impl.d.ts.map +1 -0
  9. package/dist/ai/inference.transport.impl.js +54 -0
  10. package/dist/ai/inference.transport.impl.js.map +1 -0
  11. package/dist/ai/provider.plugin.d.ts +6 -0
  12. package/dist/ai/provider.plugin.d.ts.map +1 -0
  13. package/dist/ai/provider.plugin.js +126 -0
  14. package/dist/ai/provider.plugin.js.map +1 -0
  15. package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.d.ts +62 -0
  16. package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.d.ts.map +1 -0
  17. package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.js +73 -0
  18. package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.js.map +1 -0
  19. package/dist/ai/providers/cloud/frontier/digitalocean/index.d.ts +2 -0
  20. package/dist/ai/providers/cloud/frontier/digitalocean/index.d.ts.map +1 -0
  21. package/dist/ai/providers/cloud/frontier/digitalocean/index.js +2 -0
  22. package/dist/ai/providers/cloud/frontier/digitalocean/index.js.map +1 -0
  23. package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.d.ts +183 -0
  24. package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.d.ts.map +1 -0
  25. package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.js +66 -0
  26. package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.js.map +1 -0
  27. package/dist/apps/api-client.d.ts +45 -0
  28. package/dist/apps/api-client.d.ts.map +1 -0
  29. package/dist/apps/api-client.js +47 -0
  30. package/dist/apps/api-client.js.map +1 -0
  31. package/dist/apps/build-spec.d.ts +44 -0
  32. package/dist/apps/build-spec.d.ts.map +1 -0
  33. package/dist/apps/build-spec.js +463 -0
  34. package/dist/apps/build-spec.js.map +1 -0
  35. package/dist/apps/deploy-client.d.ts +42 -0
  36. package/dist/apps/deploy-client.d.ts.map +1 -0
  37. package/dist/apps/deploy-client.js +300 -0
  38. package/dist/apps/deploy-client.js.map +1 -0
  39. package/dist/apps/index.d.ts +5 -0
  40. package/dist/apps/index.d.ts.map +1 -0
  41. package/dist/apps/index.js +4 -0
  42. package/dist/apps/index.js.map +1 -0
  43. package/dist/apps/types.d.ts +204 -0
  44. package/dist/apps/types.d.ts.map +1 -0
  45. package/dist/apps/types.js +13 -0
  46. package/dist/apps/types.js.map +1 -0
  47. package/dist/client/control-plane.d.ts +49 -0
  48. package/dist/client/control-plane.d.ts.map +1 -0
  49. package/dist/client/control-plane.js +85 -0
  50. package/dist/client/control-plane.js.map +1 -0
  51. package/dist/client/do-fetch.d.ts +41 -0
  52. package/dist/client/do-fetch.d.ts.map +1 -0
  53. package/dist/client/do-fetch.js +199 -0
  54. package/dist/client/do-fetch.js.map +1 -0
  55. package/dist/client/errors.d.ts +6 -0
  56. package/dist/client/errors.d.ts.map +1 -0
  57. package/dist/client/errors.js +34 -0
  58. package/dist/client/errors.js.map +1 -0
  59. package/dist/client/factory.d.ts +53 -0
  60. package/dist/client/factory.d.ts.map +1 -0
  61. package/dist/client/factory.js +220 -0
  62. package/dist/client/factory.js.map +1 -0
  63. package/dist/client/helpers.d.ts +5 -0
  64. package/dist/client/helpers.d.ts.map +1 -0
  65. package/dist/client/helpers.js +8 -0
  66. package/dist/client/helpers.js.map +1 -0
  67. package/dist/client/index.d.ts +12 -0
  68. package/dist/client/index.d.ts.map +1 -0
  69. package/dist/client/index.js +10 -0
  70. package/dist/client/index.js.map +1 -0
  71. package/dist/client/paginated.d.ts +19 -0
  72. package/dist/client/paginated.d.ts.map +1 -0
  73. package/dist/client/paginated.js +56 -0
  74. package/dist/client/paginated.js.map +1 -0
  75. package/dist/client/retry.d.ts +34 -0
  76. package/dist/client/retry.d.ts.map +1 -0
  77. package/dist/client/retry.js +53 -0
  78. package/dist/client/retry.js.map +1 -0
  79. package/dist/config/digitalocean.config.descriptor.d.ts +197 -0
  80. package/dist/config/digitalocean.config.descriptor.d.ts.map +1 -0
  81. package/dist/config/digitalocean.config.descriptor.js +59 -0
  82. package/dist/config/digitalocean.config.descriptor.js.map +1 -0
  83. package/dist/credentials/index.d.ts +38 -0
  84. package/dist/credentials/index.d.ts.map +1 -0
  85. package/dist/credentials/index.js +56 -0
  86. package/dist/credentials/index.js.map +1 -0
  87. package/dist/databases/index.d.ts +82 -0
  88. package/dist/databases/index.d.ts.map +1 -0
  89. package/dist/databases/index.js +57 -0
  90. package/dist/databases/index.js.map +1 -0
  91. package/dist/digitalocean-friction.policy.d.ts +29 -0
  92. package/dist/digitalocean-friction.policy.d.ts.map +1 -0
  93. package/dist/digitalocean-friction.policy.js +21 -0
  94. package/dist/digitalocean-friction.policy.js.map +1 -0
  95. package/dist/digitalocean.plugin.d.ts +3 -0
  96. package/dist/digitalocean.plugin.d.ts.map +1 -0
  97. package/dist/digitalocean.plugin.js +27 -0
  98. package/dist/digitalocean.plugin.js.map +1 -0
  99. package/dist/droplets/index.d.ts +106 -0
  100. package/dist/droplets/index.d.ts.map +1 -0
  101. package/dist/droplets/index.js +227 -0
  102. package/dist/droplets/index.js.map +1 -0
  103. package/dist/index.d.ts +35 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +32 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/inference-control-plane/index.d.ts +63 -0
  108. package/dist/inference-control-plane/index.d.ts.map +1 -0
  109. package/dist/inference-control-plane/index.js +93 -0
  110. package/dist/inference-control-plane/index.js.map +1 -0
  111. package/dist/infra/billing.d.ts +26 -0
  112. package/dist/infra/billing.d.ts.map +1 -0
  113. package/dist/infra/billing.js +43 -0
  114. package/dist/infra/billing.js.map +1 -0
  115. package/dist/infra/credentials.d.ts +11 -0
  116. package/dist/infra/credentials.d.ts.map +1 -0
  117. package/dist/infra/credentials.js +15 -0
  118. package/dist/infra/credentials.js.map +1 -0
  119. package/dist/infra/deployment-provider/deploy-secrets.d.ts +10 -0
  120. package/dist/infra/deployment-provider/deploy-secrets.d.ts.map +1 -0
  121. package/dist/infra/deployment-provider/deploy-secrets.js +66 -0
  122. package/dist/infra/deployment-provider/deploy-secrets.js.map +1 -0
  123. package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.d.ts +96 -0
  124. package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.d.ts.map +1 -0
  125. package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.js +242 -0
  126. package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.js.map +1 -0
  127. package/dist/infra/deployment-provider/image-publish.d.ts +39 -0
  128. package/dist/infra/deployment-provider/image-publish.d.ts.map +1 -0
  129. package/dist/infra/deployment-provider/image-publish.js +146 -0
  130. package/dist/infra/deployment-provider/image-publish.js.map +1 -0
  131. package/dist/infra/deployment-provider.descriptor.d.ts +34 -0
  132. package/dist/infra/deployment-provider.descriptor.d.ts.map +1 -0
  133. package/dist/infra/deployment-provider.descriptor.js +9 -0
  134. package/dist/infra/deployment-provider.descriptor.js.map +1 -0
  135. package/dist/infra/digitalocean-infra.plugin.d.ts +101 -0
  136. package/dist/infra/digitalocean-infra.plugin.d.ts.map +1 -0
  137. package/dist/infra/digitalocean-infra.plugin.js +283 -0
  138. package/dist/infra/digitalocean-infra.plugin.js.map +1 -0
  139. package/dist/infra/doks/clients.d.ts +183 -0
  140. package/dist/infra/doks/clients.d.ts.map +1 -0
  141. package/dist/infra/doks/clients.js +172 -0
  142. package/dist/infra/doks/clients.js.map +1 -0
  143. package/dist/infra/doks/digitalocean.d.ts +34 -0
  144. package/dist/infra/doks/digitalocean.d.ts.map +1 -0
  145. package/dist/infra/doks/digitalocean.js +267 -0
  146. package/dist/infra/doks/digitalocean.js.map +1 -0
  147. package/dist/infra/doks/service-release-schemas.d.ts +1037 -0
  148. package/dist/infra/doks/service-release-schemas.d.ts.map +1 -0
  149. package/dist/infra/doks/service-release-schemas.js +51 -0
  150. package/dist/infra/doks/service-release-schemas.js.map +1 -0
  151. package/dist/infra/doks/service-release.d.ts +415 -0
  152. package/dist/infra/doks/service-release.d.ts.map +1 -0
  153. package/dist/infra/doks/service-release.js +3201 -0
  154. package/dist/infra/doks/service-release.js.map +1 -0
  155. package/dist/infra/doks/worker.d.ts +14 -0
  156. package/dist/infra/doks/worker.d.ts.map +1 -0
  157. package/dist/infra/doks/worker.js +343 -0
  158. package/dist/infra/doks/worker.js.map +1 -0
  159. package/dist/infra/droplet.impl.d.ts +172 -0
  160. package/dist/infra/droplet.impl.d.ts.map +1 -0
  161. package/dist/infra/droplet.impl.js +379 -0
  162. package/dist/infra/droplet.impl.js.map +1 -0
  163. package/dist/infra/functions.impl.d.ts +123 -0
  164. package/dist/infra/functions.impl.d.ts.map +1 -0
  165. package/dist/infra/functions.impl.js +202 -0
  166. package/dist/infra/functions.impl.js.map +1 -0
  167. package/dist/infra/index.d.ts +15 -0
  168. package/dist/infra/index.d.ts.map +1 -0
  169. package/dist/infra/index.js +12 -0
  170. package/dist/infra/index.js.map +1 -0
  171. package/dist/infra/inventory.d.ts +7 -0
  172. package/dist/infra/inventory.d.ts.map +1 -0
  173. package/dist/infra/inventory.js +259 -0
  174. package/dist/infra/inventory.js.map +1 -0
  175. package/dist/infra/kubernetes-log-stream.d.ts +5 -0
  176. package/dist/infra/kubernetes-log-stream.d.ts.map +1 -0
  177. package/dist/infra/kubernetes-log-stream.js +186 -0
  178. package/dist/infra/kubernetes-log-stream.js.map +1 -0
  179. package/dist/infra/kubernetes-logs.d.ts +33 -0
  180. package/dist/infra/kubernetes-logs.d.ts.map +1 -0
  181. package/dist/infra/kubernetes-logs.descriptor.d.ts +14 -0
  182. package/dist/infra/kubernetes-logs.descriptor.d.ts.map +1 -0
  183. package/dist/infra/kubernetes-logs.descriptor.js +28 -0
  184. package/dist/infra/kubernetes-logs.descriptor.js.map +1 -0
  185. package/dist/infra/kubernetes-logs.js +196 -0
  186. package/dist/infra/kubernetes-logs.js.map +1 -0
  187. package/dist/infra/utilization.d.ts +44 -0
  188. package/dist/infra/utilization.d.ts.map +1 -0
  189. package/dist/infra/utilization.js +108 -0
  190. package/dist/infra/utilization.js.map +1 -0
  191. package/dist/kubernetes/authority.d.ts +40 -0
  192. package/dist/kubernetes/authority.d.ts.map +1 -0
  193. package/dist/kubernetes/authority.js +90 -0
  194. package/dist/kubernetes/authority.js.map +1 -0
  195. package/dist/kubernetes/encoding.d.ts +4 -0
  196. package/dist/kubernetes/encoding.d.ts.map +1 -0
  197. package/dist/kubernetes/encoding.js +8 -0
  198. package/dist/kubernetes/encoding.js.map +1 -0
  199. package/dist/kubernetes/index.d.ts +105 -0
  200. package/dist/kubernetes/index.d.ts.map +1 -0
  201. package/dist/kubernetes/index.js +99 -0
  202. package/dist/kubernetes/index.js.map +1 -0
  203. package/dist/kubernetes/transport.d.ts +11 -0
  204. package/dist/kubernetes/transport.d.ts.map +1 -0
  205. package/dist/kubernetes/transport.js +27 -0
  206. package/dist/kubernetes/transport.js.map +1 -0
  207. package/dist/network/index.d.ts +24 -0
  208. package/dist/network/index.d.ts.map +1 -0
  209. package/dist/network/index.js +16 -0
  210. package/dist/network/index.js.map +1 -0
  211. package/dist/registry/index.d.ts +39 -0
  212. package/dist/registry/index.d.ts.map +1 -0
  213. package/dist/registry/index.js +20 -0
  214. package/dist/registry/index.js.map +1 -0
  215. package/dist/schemas/app-deployment.d.ts +1472 -0
  216. package/dist/schemas/app-deployment.d.ts.map +1 -0
  217. package/dist/schemas/app-deployment.js +156 -0
  218. package/dist/schemas/app-deployment.js.map +1 -0
  219. package/dist/schemas/app-platform.d.ts +755 -0
  220. package/dist/schemas/app-platform.d.ts.map +1 -0
  221. package/dist/schemas/app-platform.js +253 -0
  222. package/dist/schemas/app-platform.js.map +1 -0
  223. package/dist/schemas/cache-database.d.ts +210 -0
  224. package/dist/schemas/cache-database.d.ts.map +1 -0
  225. package/dist/schemas/cache-database.js +105 -0
  226. package/dist/schemas/cache-database.js.map +1 -0
  227. package/dist/schemas/control-plane.d.ts +456 -0
  228. package/dist/schemas/control-plane.d.ts.map +1 -0
  229. package/dist/schemas/control-plane.js +123 -0
  230. package/dist/schemas/control-plane.js.map +1 -0
  231. package/dist/schemas/credential-use.d.ts +714 -0
  232. package/dist/schemas/credential-use.d.ts.map +1 -0
  233. package/dist/schemas/credential-use.js +73 -0
  234. package/dist/schemas/credential-use.js.map +1 -0
  235. package/dist/schemas/doks-worker.d.ts +4062 -0
  236. package/dist/schemas/doks-worker.d.ts.map +1 -0
  237. package/dist/schemas/doks-worker.js +330 -0
  238. package/dist/schemas/doks-worker.js.map +1 -0
  239. package/dist/schemas/droplet.d.ts +110 -0
  240. package/dist/schemas/droplet.d.ts.map +1 -0
  241. package/dist/schemas/droplet.js +22 -0
  242. package/dist/schemas/droplet.js.map +1 -0
  243. package/dist/schemas/functions.d.ts +22 -0
  244. package/dist/schemas/functions.d.ts.map +1 -0
  245. package/dist/schemas/functions.js +25 -0
  246. package/dist/schemas/functions.js.map +1 -0
  247. package/dist/schemas/gitea-git-hosting.d.ts +20 -0
  248. package/dist/schemas/gitea-git-hosting.d.ts.map +1 -0
  249. package/dist/schemas/gitea-git-hosting.js +26 -0
  250. package/dist/schemas/gitea-git-hosting.js.map +1 -0
  251. package/dist/schemas/http.d.ts +2594 -0
  252. package/dist/schemas/http.d.ts.map +1 -0
  253. package/dist/schemas/http.js +4548 -0
  254. package/dist/schemas/http.js.map +1 -0
  255. package/dist/schemas/infra-kinds.d.ts +113 -0
  256. package/dist/schemas/infra-kinds.d.ts.map +1 -0
  257. package/dist/schemas/infra-kinds.js +93 -0
  258. package/dist/schemas/infra-kinds.js.map +1 -0
  259. package/dist/schemas/kubernetes-responses.d.ts +457 -0
  260. package/dist/schemas/kubernetes-responses.d.ts.map +1 -0
  261. package/dist/schemas/kubernetes-responses.js +681 -0
  262. package/dist/schemas/kubernetes-responses.js.map +1 -0
  263. package/dist/schemas/kubernetes.d.ts +143 -0
  264. package/dist/schemas/kubernetes.d.ts.map +1 -0
  265. package/dist/schemas/kubernetes.js +68 -0
  266. package/dist/schemas/kubernetes.js.map +1 -0
  267. package/dist/schemas/logs.d.ts +15 -0
  268. package/dist/schemas/logs.d.ts.map +1 -0
  269. package/dist/schemas/logs.js +11 -0
  270. package/dist/schemas/logs.js.map +1 -0
  271. package/dist/schemas/object-storage.d.ts +167 -0
  272. package/dist/schemas/object-storage.d.ts.map +1 -0
  273. package/dist/schemas/object-storage.js +124 -0
  274. package/dist/schemas/object-storage.js.map +1 -0
  275. package/dist/schemas/service-settings.d.ts +9 -0
  276. package/dist/schemas/service-settings.d.ts.map +1 -0
  277. package/dist/schemas/service-settings.js +21 -0
  278. package/dist/schemas/service-settings.js.map +1 -0
  279. package/dist/schemas/utilization.d.ts +57 -0
  280. package/dist/schemas/utilization.d.ts.map +1 -0
  281. package/dist/schemas/utilization.js +58 -0
  282. package/dist/schemas/utilization.js.map +1 -0
  283. package/dist/schemas/worker-status.d.ts +22 -0
  284. package/dist/schemas/worker-status.d.ts.map +1 -0
  285. package/dist/schemas/worker-status.js +14 -0
  286. package/dist/schemas/worker-status.js.map +1 -0
  287. package/dist/schemas/worker.d.ts +125 -0
  288. package/dist/schemas/worker.d.ts.map +1 -0
  289. package/dist/schemas/worker.js +129 -0
  290. package/dist/schemas/worker.js.map +1 -0
  291. package/dist/secrets/app-platform/app-credentials.impl.d.ts +14 -0
  292. package/dist/secrets/app-platform/app-credentials.impl.d.ts.map +1 -0
  293. package/dist/secrets/app-platform/app-credentials.impl.js +237 -0
  294. package/dist/secrets/app-platform/app-credentials.impl.js.map +1 -0
  295. package/dist/secrets/container-registry/image-publish-settings.descriptor.d.ts +6 -0
  296. package/dist/secrets/container-registry/image-publish-settings.descriptor.d.ts.map +1 -0
  297. package/dist/secrets/container-registry/image-publish-settings.descriptor.js +14 -0
  298. package/dist/secrets/container-registry/image-publish-settings.descriptor.js.map +1 -0
  299. package/dist/secrets/doks-secret.descriptor.d.ts +18 -0
  300. package/dist/secrets/doks-secret.descriptor.d.ts.map +1 -0
  301. package/dist/secrets/doks-secret.descriptor.js +35 -0
  302. package/dist/secrets/doks-secret.descriptor.js.map +1 -0
  303. package/dist/secrets/doks-secret.impl.d.ts +98 -0
  304. package/dist/secrets/doks-secret.impl.d.ts.map +1 -0
  305. package/dist/secrets/doks-secret.impl.js +451 -0
  306. package/dist/secrets/doks-secret.impl.js.map +1 -0
  307. package/dist/secrets/index.d.ts +4 -0
  308. package/dist/secrets/index.d.ts.map +1 -0
  309. package/dist/secrets/index.js +4 -0
  310. package/dist/secrets/index.js.map +1 -0
  311. package/dist/secrets/secrets-backend-doks.plugin.d.ts +3 -0
  312. package/dist/secrets/secrets-backend-doks.plugin.d.ts.map +1 -0
  313. package/dist/secrets/secrets-backend-doks.plugin.js +35 -0
  314. package/dist/secrets/secrets-backend-doks.plugin.js.map +1 -0
  315. package/dist/storage/index.d.ts +50 -0
  316. package/dist/storage/index.d.ts.map +1 -0
  317. package/dist/storage/index.js +92 -0
  318. package/dist/storage/index.js.map +1 -0
  319. package/dist/storage/spaces-keys.d.ts +25 -0
  320. package/dist/storage/spaces-keys.d.ts.map +1 -0
  321. package/dist/storage/spaces-keys.js +32 -0
  322. package/dist/storage/spaces-keys.js.map +1 -0
  323. package/package.json +172 -4
@@ -0,0 +1,4548 @@
1
+ import * as z from 'zod/v4';
2
+ import { JsonValueSchema } from '@vibesdotdev/kernel/schemas/json';
3
+ export { DigitalOceanResponseSchema } from "./control-plane.js";
4
+ export const StringSchema = z.string();
5
+ export const UtilizationAppsResponseSchema = z
6
+ .object({ apps: z.array(z.record(StringSchema, JsonValueSchema)) })
7
+ .passthrough();
8
+ export const TopicsResponseSchema = z
9
+ .object({ topics: z.array(z.record(StringSchema, JsonValueSchema)) })
10
+ .passthrough();
11
+ export const VpcResponseSchema = z
12
+ .object({ vpc: z.object({ id: StringSchema }).passthrough() })
13
+ .passthrough();
14
+ export const IndexesResponseSchema = z
15
+ .object({ indexes: z.array(z.record(StringSchema, JsonValueSchema)) })
16
+ .passthrough();
17
+ export const UtilizationDropletsResponseSchema = z
18
+ .object({ droplets: z.array(z.record(StringSchema, JsonValueSchema)) })
19
+ .passthrough();
20
+ export const UtilizationClustersResponseSchema = z
21
+ .object({ kubernetes_clusters: z.array(z.record(StringSchema, JsonValueSchema)) })
22
+ .passthrough();
23
+ export const DoSshKeySchema = z
24
+ .object({
25
+ id: z.number(),
26
+ name: StringSchema,
27
+ fingerprint: StringSchema,
28
+ public_key: StringSchema
29
+ })
30
+ .passthrough();
31
+ export const VpcsResponseSchema = z
32
+ .object({
33
+ vpcs: z
34
+ .union([
35
+ z.undefined(),
36
+ z.array(z
37
+ .object({
38
+ id: StringSchema,
39
+ name: StringSchema
40
+ })
41
+ .passthrough())
42
+ ])
43
+ .optional()
44
+ })
45
+ .passthrough();
46
+ export const SshKeyResponseSchema = z.object({ ssh_key: DoSshKeySchema }).passthrough();
47
+ export const ProviderSshKeyResponseSchema = z
48
+ .object({
49
+ ssh_key: z
50
+ .object({
51
+ id: z.number(),
52
+ fingerprint: StringSchema,
53
+ public_key: StringSchema,
54
+ name: StringSchema
55
+ })
56
+ .passthrough()
57
+ })
58
+ .passthrough();
59
+ export const AppUrlsResponseSchema = z
60
+ .object({
61
+ historic_urls: z.union([z.undefined(), z.array(StringSchema)]).optional(),
62
+ live_url: z.union([z.undefined(), StringSchema]).optional()
63
+ })
64
+ .passthrough();
65
+ export const ProviderSshKeysResponseSchema = z
66
+ .object({
67
+ ssh_keys: z.array(z
68
+ .object({
69
+ id: z.number(),
70
+ fingerprint: StringSchema,
71
+ public_key: StringSchema,
72
+ name: StringSchema
73
+ })
74
+ .passthrough())
75
+ })
76
+ .passthrough();
77
+ export const MetricsResponseSchema = z
78
+ .object({
79
+ data: z
80
+ .union([
81
+ z.undefined(),
82
+ z
83
+ .object({
84
+ result: z
85
+ .union([
86
+ z.undefined(),
87
+ z.array(z
88
+ .object({
89
+ values: z
90
+ .union([z.undefined(), z.array(z.tuple([z.number(), StringSchema]))])
91
+ .optional()
92
+ })
93
+ .passthrough())
94
+ ])
95
+ .optional()
96
+ })
97
+ .passthrough()
98
+ ])
99
+ .optional()
100
+ })
101
+ .passthrough();
102
+ export const ProviderVolumeResponseSchema = z
103
+ .object({
104
+ volume: z
105
+ .object({
106
+ id: StringSchema,
107
+ name: StringSchema,
108
+ size_gigabytes: z.number(),
109
+ region: z.object({ slug: StringSchema }).passthrough(),
110
+ droplet_ids: z.array(z.number()),
111
+ created_at: StringSchema,
112
+ tags: z.array(StringSchema)
113
+ })
114
+ .passthrough()
115
+ })
116
+ .passthrough();
117
+ export const DoSnapshotSchema = z
118
+ .object({
119
+ id: StringSchema,
120
+ name: StringSchema,
121
+ size_gigabytes: z.number(),
122
+ created_at: StringSchema,
123
+ regions: z.array(StringSchema),
124
+ resource_type: z.union([z.literal('droplet'), z.literal('volume')]),
125
+ resource_id: z.union([z.undefined(), StringSchema]).optional()
126
+ })
127
+ .passthrough();
128
+ export const ProviderVolumesResponseSchema = z
129
+ .object({
130
+ volumes: z.array(z
131
+ .object({
132
+ id: StringSchema,
133
+ name: StringSchema,
134
+ size_gigabytes: z.number(),
135
+ region: z.object({ slug: StringSchema }).passthrough(),
136
+ droplet_ids: z.array(z.number()),
137
+ created_at: StringSchema,
138
+ tags: z.array(StringSchema)
139
+ })
140
+ .passthrough())
141
+ })
142
+ .passthrough();
143
+ export const DoCdnEndpointSchema = z
144
+ .object({
145
+ id: StringSchema,
146
+ origin: StringSchema,
147
+ endpoint: StringSchema,
148
+ ttl: z.union([z.undefined(), z.number()]).optional(),
149
+ certificate_id: z.union([z.undefined(), StringSchema]).optional(),
150
+ custom_domain: z.union([z.undefined(), StringSchema]).optional(),
151
+ created_at: StringSchema
152
+ })
153
+ .passthrough();
154
+ export const BalanceSchema = z
155
+ .object({
156
+ account_balance: z.union([z.undefined(), StringSchema]).optional(),
157
+ month_to_date_usage: z.union([z.undefined(), StringSchema]).optional(),
158
+ month_to_date_balance: z.union([z.undefined(), StringSchema]).optional(),
159
+ generated_at: z.union([z.undefined(), StringSchema]).optional()
160
+ })
161
+ .passthrough();
162
+ export const PreviewSchema = z
163
+ .object({
164
+ product_charges: z
165
+ .union([
166
+ z.undefined(),
167
+ z.object({ amount: z.union([z.undefined(), StringSchema]).optional() }).passthrough()
168
+ ])
169
+ .optional(),
170
+ credits_and_adjustments: z
171
+ .union([
172
+ z.undefined(),
173
+ z.object({ amount: z.union([z.undefined(), StringSchema]).optional() }).passthrough()
174
+ ])
175
+ .optional()
176
+ })
177
+ .passthrough();
178
+ export const DoSpacesKeySchema = z
179
+ .object({
180
+ name: StringSchema,
181
+ access_key: StringSchema,
182
+ secret_key: z.union([z.undefined(), StringSchema]).optional(),
183
+ grants: z.array(z
184
+ .object({
185
+ bucket: StringSchema,
186
+ permission: z.union([z.literal('read'), z.literal('readwrite'), z.literal('fullaccess')])
187
+ })
188
+ .passthrough()),
189
+ created_at: StringSchema
190
+ })
191
+ .passthrough();
192
+ export const DoVolumeSnapshotSchema = z
193
+ .object({
194
+ id: StringSchema,
195
+ name: StringSchema,
196
+ size_gigabytes: z.number(),
197
+ min_disk_size: z.union([z.undefined(), z.number()]).optional(),
198
+ created_at: StringSchema,
199
+ regions: z.array(StringSchema),
200
+ resource_id: StringSchema,
201
+ resource_type: z.literal('volume'),
202
+ tags: z.union([z.undefined(), z.array(StringSchema)]).optional()
203
+ })
204
+ .passthrough();
205
+ export const DoInferenceModelsListSchema = z
206
+ .object({
207
+ object: z.literal('list'),
208
+ data: z.array(z
209
+ .object({
210
+ id: StringSchema,
211
+ object: z.union([z.undefined(), z.literal('model')]).optional(),
212
+ owned_by: z.union([z.undefined(), StringSchema]).optional(),
213
+ created: z.union([z.undefined(), z.number()]).optional(),
214
+ capabilities: z.union([z.undefined(), z.array(StringSchema)]).optional()
215
+ })
216
+ .passthrough())
217
+ })
218
+ .passthrough();
219
+ export const VolumeSnapshotResponseSchema = z
220
+ .object({ snapshot: DoVolumeSnapshotSchema })
221
+ .passthrough();
222
+ export const SpacesKeyResponseSchema = z
223
+ .object({ key: z.union([z.undefined(), DoSpacesKeySchema]).optional() })
224
+ .passthrough();
225
+ export const DoFirewallSchema = z
226
+ .object({
227
+ id: StringSchema,
228
+ name: StringSchema,
229
+ status: z.union([z.undefined(), StringSchema]).optional(),
230
+ created_at: StringSchema,
231
+ droplet_ids: z.array(z.number()),
232
+ tags: z.array(StringSchema),
233
+ inbound_rules: z.union([z.undefined(), z.array(z.record(StringSchema, JsonValueSchema))]).optional(),
234
+ outbound_rules: z.union([z.undefined(), z.array(z.record(StringSchema, JsonValueSchema))]).optional()
235
+ })
236
+ .passthrough();
237
+ export const ModelAccessKeyMetadataSchema = z
238
+ .object({
239
+ id: StringSchema,
240
+ name: StringSchema,
241
+ fingerprint: z.union([z.undefined(), StringSchema]).optional(),
242
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
243
+ last_used_at: z.union([z.undefined(), StringSchema]).optional(),
244
+ scopes: z.union([z.undefined(), z.array(StringSchema)]).optional(),
245
+ preview: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional()
246
+ })
247
+ .passthrough();
248
+ export const KubernetesOptionsResponseSchema = z
249
+ .object({
250
+ options: z
251
+ .object({
252
+ regions: z.array(z
253
+ .object({
254
+ name: StringSchema,
255
+ slug: StringSchema
256
+ })
257
+ .passthrough()),
258
+ versions: z.array(z
259
+ .object({
260
+ slug: StringSchema,
261
+ kubernetes_version: StringSchema,
262
+ supported_features: z.union([z.undefined(), z.array(StringSchema)]).optional()
263
+ })
264
+ .passthrough()),
265
+ sizes: z.array(z
266
+ .object({
267
+ name: StringSchema,
268
+ slug: StringSchema
269
+ })
270
+ .passthrough())
271
+ })
272
+ .passthrough()
273
+ })
274
+ .passthrough();
275
+ export const CreateAppDeploymentResponseSchema = z
276
+ .object({
277
+ deployment: z
278
+ .union([
279
+ z.undefined(),
280
+ z
281
+ .object({
282
+ id: z.union([z.undefined(), StringSchema]).optional(),
283
+ phase: z
284
+ .union([
285
+ z.undefined(),
286
+ z.literal('PENDING_BUILD'),
287
+ z.literal('BUILDING'),
288
+ z.literal('PENDING_DEPLOY'),
289
+ z.literal('DEPLOYING'),
290
+ z.literal('ACTIVE'),
291
+ z.literal('SUPERSEDED'),
292
+ z.literal('ERROR'),
293
+ z.literal('CANCELED'),
294
+ z.literal('UNKNOWN')
295
+ ])
296
+ .optional()
297
+ })
298
+ .passthrough()
299
+ ])
300
+ .optional()
301
+ })
302
+ .passthrough();
303
+ export const DropletActionResponseSchema = z
304
+ .object({
305
+ action: z
306
+ .object({
307
+ id: z.number(),
308
+ status: z.union([z.literal('in-progress'), z.literal('completed'), z.literal('errored')]),
309
+ type: StringSchema,
310
+ started_at: z.union([z.undefined(), StringSchema]).optional(),
311
+ completed_at: z.union([z.undefined(), z.null(), StringSchema]).optional(),
312
+ resource_id: z.union([z.undefined(), z.number()]).optional(),
313
+ region_slug: z.union([z.undefined(), StringSchema]).optional()
314
+ })
315
+ .passthrough()
316
+ })
317
+ .passthrough();
318
+ export const ProviderDropletResponseSchema = z
319
+ .object({
320
+ droplet: z
321
+ .object({
322
+ id: z.number(),
323
+ name: StringSchema,
324
+ status: StringSchema,
325
+ size: z.object({ slug: StringSchema }).passthrough(),
326
+ region: z.object({ slug: StringSchema }).passthrough(),
327
+ image: z.object({ slug: StringSchema }).passthrough(),
328
+ networks: z
329
+ .object({
330
+ v4: z.array(z
331
+ .object({
332
+ ip_address: StringSchema,
333
+ type: StringSchema
334
+ })
335
+ .passthrough())
336
+ })
337
+ .passthrough(),
338
+ created_at: StringSchema,
339
+ tags: z.array(StringSchema)
340
+ })
341
+ .passthrough()
342
+ })
343
+ .passthrough();
344
+ export const ProviderDropletsResponseSchema = z
345
+ .object({
346
+ droplets: z.array(z
347
+ .object({
348
+ id: z.number(),
349
+ name: StringSchema,
350
+ status: StringSchema,
351
+ size: z.object({ slug: StringSchema }).passthrough(),
352
+ region: z.object({ slug: StringSchema }).passthrough(),
353
+ image: z.object({ slug: StringSchema }).passthrough(),
354
+ networks: z
355
+ .object({
356
+ v4: z.array(z
357
+ .object({
358
+ ip_address: StringSchema,
359
+ type: StringSchema
360
+ })
361
+ .passthrough())
362
+ })
363
+ .passthrough(),
364
+ created_at: StringSchema,
365
+ tags: z.array(StringSchema)
366
+ })
367
+ .passthrough())
368
+ })
369
+ .passthrough();
370
+ export const DoVolumeSchema = z
371
+ .object({
372
+ id: StringSchema,
373
+ name: StringSchema,
374
+ size_gigabytes: z.number(),
375
+ description: z.union([z.undefined(), StringSchema]).optional(),
376
+ region: z
377
+ .object({
378
+ slug: StringSchema,
379
+ name: z.union([z.undefined(), StringSchema]).optional()
380
+ })
381
+ .passthrough(),
382
+ droplet_ids: z.array(z.number()),
383
+ created_at: StringSchema,
384
+ tags: z.array(StringSchema),
385
+ filesystem_type: z.union([z.undefined(), StringSchema]).optional(),
386
+ filesystem_label: z.union([z.undefined(), StringSchema]).optional()
387
+ })
388
+ .passthrough();
389
+ export const VolumeResponseSchema = z.object({ volume: DoVolumeSchema }).passthrough();
390
+ export const DoAppDeploymentSchema = z
391
+ .object({
392
+ id: StringSchema,
393
+ cause: z.union([z.undefined(), StringSchema]).optional(),
394
+ phase: z
395
+ .union([
396
+ z.undefined(),
397
+ z.literal('PENDING_BUILD'),
398
+ z.literal('BUILDING'),
399
+ z.literal('PENDING_DEPLOY'),
400
+ z.literal('DEPLOYING'),
401
+ z.literal('ACTIVE'),
402
+ z.literal('SUPERSEDED'),
403
+ z.literal('ERROR'),
404
+ z.literal('CANCELED')
405
+ ])
406
+ .optional(),
407
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
408
+ updated_at: z.union([z.undefined(), StringSchema]).optional(),
409
+ progress: z.union([z.undefined(), z.record(StringSchema, JsonValueSchema)]).optional()
410
+ })
411
+ .passthrough();
412
+ export const DoInferenceEndpointSchema = z
413
+ .object({
414
+ id: StringSchema,
415
+ name: StringSchema,
416
+ model_id: z.union([z.undefined(), StringSchema]).optional(),
417
+ status: z.union([
418
+ z.literal('creating'),
419
+ z.literal('deleting'),
420
+ z.literal('error'),
421
+ z.literal('ready'),
422
+ z.literal('updating')
423
+ ]),
424
+ url: z.union([z.undefined(), StringSchema]).optional(),
425
+ region: z.union([z.undefined(), StringSchema]).optional(),
426
+ gpu_size_slug: z.union([z.undefined(), StringSchema]).optional(),
427
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
428
+ created_at: z.union([z.undefined(), StringSchema]).optional()
429
+ })
430
+ .passthrough();
431
+ export const DeploymentResponseSchema = z
432
+ .object({ deployment: DoAppDeploymentSchema })
433
+ .passthrough();
434
+ export const EndpointResponseSchema = z
435
+ .object({ endpoint: DoInferenceEndpointSchema })
436
+ .passthrough();
437
+ export const DoContainerRegistryRepositorySchema = z
438
+ .object({
439
+ registry_name: StringSchema,
440
+ name: StringSchema,
441
+ tag_count: z.union([z.undefined(), z.number()]).optional(),
442
+ manifest_count: z.union([z.undefined(), z.number()]).optional(),
443
+ latest_manifest: z
444
+ .union([
445
+ z.undefined(),
446
+ z
447
+ .object({
448
+ digest: z.union([z.undefined(), StringSchema]).optional(),
449
+ compressed_size_bytes: z.union([z.undefined(), z.number()]).optional(),
450
+ size_bytes: z.union([z.undefined(), z.number()]).optional(),
451
+ updated_at: z.union([z.undefined(), StringSchema]).optional(),
452
+ tags: z.union([z.undefined(), z.array(StringSchema)]).optional()
453
+ })
454
+ .passthrough()
455
+ ])
456
+ .optional()
457
+ })
458
+ .passthrough();
459
+ export const DigitalOceanDropletResponseSchema = z
460
+ .object({
461
+ droplet: z
462
+ .union([
463
+ z.undefined(),
464
+ z
465
+ .object({
466
+ id: z.number(),
467
+ name: StringSchema,
468
+ status: StringSchema,
469
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
470
+ region: z
471
+ .union([
472
+ z.undefined(),
473
+ z.object({ slug: z.union([z.undefined(), StringSchema]).optional() }).passthrough()
474
+ ])
475
+ .optional(),
476
+ networks: z
477
+ .union([
478
+ z.undefined(),
479
+ z
480
+ .object({
481
+ v4: z
482
+ .union([
483
+ z.undefined(),
484
+ z.array(z
485
+ .object({
486
+ ip_address: StringSchema,
487
+ type: StringSchema
488
+ })
489
+ .passthrough())
490
+ ])
491
+ .optional()
492
+ })
493
+ .passthrough()
494
+ ])
495
+ .optional(),
496
+ tags: z.union([z.undefined(), z.array(StringSchema)]).optional(),
497
+ size_slug: z.union([z.undefined(), StringSchema]).optional()
498
+ })
499
+ .passthrough()
500
+ ])
501
+ .optional()
502
+ })
503
+ .passthrough();
504
+ export const DigitalOceanDropletListResponseSchema = z
505
+ .object({
506
+ droplets: z
507
+ .union([
508
+ z.undefined(),
509
+ z.array(z
510
+ .object({
511
+ id: z.number(),
512
+ name: StringSchema,
513
+ status: StringSchema,
514
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
515
+ region: z
516
+ .union([
517
+ z.undefined(),
518
+ z
519
+ .object({ slug: z.union([z.undefined(), StringSchema]).optional() })
520
+ .passthrough()
521
+ ])
522
+ .optional(),
523
+ networks: z
524
+ .union([
525
+ z.undefined(),
526
+ z
527
+ .object({
528
+ v4: z
529
+ .union([
530
+ z.undefined(),
531
+ z.array(z
532
+ .object({
533
+ ip_address: StringSchema,
534
+ type: StringSchema
535
+ })
536
+ .passthrough())
537
+ ])
538
+ .optional()
539
+ })
540
+ .passthrough()
541
+ ])
542
+ .optional(),
543
+ tags: z.union([z.undefined(), z.array(StringSchema)]).optional()
544
+ })
545
+ .passthrough())
546
+ ])
547
+ .optional()
548
+ })
549
+ .passthrough();
550
+ export const SshKeysListResponseSchema = z
551
+ .object({
552
+ ssh_keys: z.array(DoSshKeySchema).nullable(),
553
+ links: z
554
+ .union([
555
+ z.undefined(),
556
+ z
557
+ .object({
558
+ pages: z
559
+ .union([
560
+ z.undefined(),
561
+ z
562
+ .object({
563
+ first: z.union([z.undefined(), StringSchema]).optional(),
564
+ prev: z.union([z.undefined(), StringSchema]).optional(),
565
+ next: z.union([z.undefined(), StringSchema]).optional(),
566
+ last: z.union([z.undefined(), StringSchema]).optional()
567
+ })
568
+ .passthrough()
569
+ ])
570
+ .optional()
571
+ })
572
+ .passthrough()
573
+ ])
574
+ .optional(),
575
+ meta: z
576
+ .union([
577
+ z.undefined(),
578
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
579
+ ])
580
+ .optional()
581
+ })
582
+ .passthrough();
583
+ export const DoNfsShareSchema = z
584
+ .object({
585
+ id: StringSchema,
586
+ name: StringSchema,
587
+ region: z
588
+ .object({
589
+ slug: StringSchema,
590
+ name: z.union([z.undefined(), StringSchema]).optional()
591
+ })
592
+ .passthrough(),
593
+ size_gibibytes: z.number(),
594
+ mount_target: StringSchema,
595
+ status: z.union([
596
+ z.literal('available'),
597
+ z.literal('creating'),
598
+ z.literal('deleting'),
599
+ z.literal('error')
600
+ ]),
601
+ access_rules: z
602
+ .union([
603
+ z.undefined(),
604
+ z.array(z
605
+ .object({
606
+ id: z.union([z.undefined(), StringSchema]).optional(),
607
+ client_cidr: StringSchema,
608
+ permission: z.union([z.literal('read-write'), z.literal('read-only')]),
609
+ squash: z.union([z.undefined(), z.literal('none'), z.literal('root')]).optional()
610
+ })
611
+ .passthrough())
612
+ ])
613
+ .optional(),
614
+ created_at: StringSchema
615
+ })
616
+ .passthrough();
617
+ export const NfsShareResponseSchema = z.object({ share: DoNfsShareSchema }).passthrough();
618
+ export const ConnectionPoolResponseSchema = z
619
+ .object({
620
+ pool: z
621
+ .object({
622
+ name: StringSchema,
623
+ mode: z.union([z.literal('transaction'), z.literal('session'), z.literal('statement')]),
624
+ size: z.number(),
625
+ db: StringSchema,
626
+ user: StringSchema,
627
+ connection: z
628
+ .union([
629
+ z.undefined(),
630
+ z
631
+ .object({
632
+ uri: StringSchema,
633
+ database: z.union([z.undefined(), StringSchema]).optional(),
634
+ host: StringSchema,
635
+ port: z.number(),
636
+ user: StringSchema,
637
+ password: z.union([z.undefined(), StringSchema]).optional(),
638
+ ssl: z.boolean()
639
+ })
640
+ .passthrough()
641
+ ])
642
+ .optional(),
643
+ private_connection: z
644
+ .union([
645
+ z.undefined(),
646
+ z
647
+ .object({
648
+ uri: StringSchema,
649
+ database: z.union([z.undefined(), StringSchema]).optional(),
650
+ host: StringSchema,
651
+ port: z.number(),
652
+ user: StringSchema,
653
+ password: z.union([z.undefined(), StringSchema]).optional(),
654
+ ssl: z.boolean()
655
+ })
656
+ .passthrough()
657
+ ])
658
+ .optional()
659
+ })
660
+ .passthrough()
661
+ })
662
+ .passthrough();
663
+ export const NodePoolResponseSchema = z
664
+ .object({
665
+ node_pool: z
666
+ .object({
667
+ id: z.union([z.undefined(), StringSchema]).optional(),
668
+ name: StringSchema,
669
+ size: StringSchema,
670
+ count: z.union([z.undefined(), z.number()]).optional(),
671
+ auto_scale: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
672
+ min_nodes: z.union([z.undefined(), z.number()]).optional(),
673
+ max_nodes: z.union([z.undefined(), z.number()]).optional(),
674
+ tags: z.union([z.undefined(), z.array(StringSchema)]).optional(),
675
+ labels: z.union([z.undefined(), z.record(StringSchema, StringSchema)]).optional(),
676
+ taints: z
677
+ .union([
678
+ z.undefined(),
679
+ z.array(z
680
+ .object({
681
+ key: StringSchema,
682
+ value: z.union([z.undefined(), StringSchema]).optional(),
683
+ effect: z.union([
684
+ z.literal('NoSchedule'),
685
+ z.literal('PreferNoSchedule'),
686
+ z.literal('NoExecute')
687
+ ])
688
+ })
689
+ .passthrough())
690
+ ])
691
+ .optional()
692
+ })
693
+ .passthrough()
694
+ })
695
+ .passthrough();
696
+ export const SnapshotsListResponseSchema = z
697
+ .object({
698
+ snapshots: z.array(DoSnapshotSchema).nullable(),
699
+ links: z
700
+ .union([
701
+ z.undefined(),
702
+ z
703
+ .object({
704
+ pages: z
705
+ .union([
706
+ z.undefined(),
707
+ z
708
+ .object({
709
+ first: z.union([z.undefined(), StringSchema]).optional(),
710
+ prev: z.union([z.undefined(), StringSchema]).optional(),
711
+ next: z.union([z.undefined(), StringSchema]).optional(),
712
+ last: z.union([z.undefined(), StringSchema]).optional()
713
+ })
714
+ .passthrough()
715
+ ])
716
+ .optional()
717
+ })
718
+ .passthrough()
719
+ ])
720
+ .optional(),
721
+ meta: z
722
+ .union([
723
+ z.undefined(),
724
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
725
+ ])
726
+ .optional()
727
+ })
728
+ .passthrough();
729
+ export const ConnectionPoolsResponseSchema = z
730
+ .object({
731
+ pools: z.array(z
732
+ .object({
733
+ name: StringSchema,
734
+ mode: z.union([z.literal('transaction'), z.literal('session'), z.literal('statement')]),
735
+ size: z.number(),
736
+ db: StringSchema,
737
+ user: StringSchema,
738
+ connection: z
739
+ .union([
740
+ z.undefined(),
741
+ z
742
+ .object({
743
+ uri: StringSchema,
744
+ database: z.union([z.undefined(), StringSchema]).optional(),
745
+ host: StringSchema,
746
+ port: z.number(),
747
+ user: StringSchema,
748
+ password: z.union([z.undefined(), StringSchema]).optional(),
749
+ ssl: z.boolean()
750
+ })
751
+ .passthrough()
752
+ ])
753
+ .optional(),
754
+ private_connection: z
755
+ .union([
756
+ z.undefined(),
757
+ z
758
+ .object({
759
+ uri: StringSchema,
760
+ database: z.union([z.undefined(), StringSchema]).optional(),
761
+ host: StringSchema,
762
+ port: z.number(),
763
+ user: StringSchema,
764
+ password: z.union([z.undefined(), StringSchema]).optional(),
765
+ ssl: z.boolean()
766
+ })
767
+ .passthrough()
768
+ ])
769
+ .optional()
770
+ })
771
+ .passthrough())
772
+ })
773
+ .passthrough();
774
+ export const NodePoolsResponseSchema = z
775
+ .object({
776
+ node_pools: z.array(z
777
+ .object({
778
+ id: z.union([z.undefined(), StringSchema]).optional(),
779
+ name: StringSchema,
780
+ size: StringSchema,
781
+ count: z.union([z.undefined(), z.number()]).optional(),
782
+ auto_scale: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
783
+ min_nodes: z.union([z.undefined(), z.number()]).optional(),
784
+ max_nodes: z.union([z.undefined(), z.number()]).optional(),
785
+ tags: z.union([z.undefined(), z.array(StringSchema)]).optional(),
786
+ labels: z.union([z.undefined(), z.record(StringSchema, StringSchema)]).optional(),
787
+ taints: z
788
+ .union([
789
+ z.undefined(),
790
+ z.array(z
791
+ .object({
792
+ key: StringSchema,
793
+ value: z.union([z.undefined(), StringSchema]).optional(),
794
+ effect: z.union([
795
+ z.literal('NoSchedule'),
796
+ z.literal('PreferNoSchedule'),
797
+ z.literal('NoExecute')
798
+ ])
799
+ })
800
+ .passthrough())
801
+ ])
802
+ .optional()
803
+ })
804
+ .passthrough())
805
+ })
806
+ .passthrough();
807
+ export const CdnListResponseSchema = z
808
+ .object({
809
+ endpoints: z.array(DoCdnEndpointSchema).nullable(),
810
+ links: z
811
+ .union([
812
+ z.undefined(),
813
+ z
814
+ .object({
815
+ pages: z
816
+ .union([
817
+ z.undefined(),
818
+ z
819
+ .object({
820
+ first: z.union([z.undefined(), StringSchema]).optional(),
821
+ prev: z.union([z.undefined(), StringSchema]).optional(),
822
+ next: z.union([z.undefined(), StringSchema]).optional(),
823
+ last: z.union([z.undefined(), StringSchema]).optional()
824
+ })
825
+ .passthrough()
826
+ ])
827
+ .optional()
828
+ })
829
+ .passthrough()
830
+ ])
831
+ .optional(),
832
+ meta: z
833
+ .union([
834
+ z.undefined(),
835
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
836
+ ])
837
+ .optional()
838
+ })
839
+ .passthrough();
840
+ export const DoLoadBalancerSchema = z
841
+ .object({
842
+ id: StringSchema,
843
+ name: StringSchema,
844
+ ip: z.union([z.undefined(), StringSchema]).optional(),
845
+ status: StringSchema,
846
+ created_at: StringSchema,
847
+ region: z
848
+ .union([
849
+ z.undefined(),
850
+ z
851
+ .object({
852
+ slug: StringSchema,
853
+ name: z.union([z.undefined(), StringSchema]).optional()
854
+ })
855
+ .passthrough()
856
+ ])
857
+ .optional(),
858
+ size: z.union([z.undefined(), StringSchema]).optional(),
859
+ size_unit: z.union([z.undefined(), z.number()]).optional(),
860
+ droplet_ids: z.union([z.undefined(), z.array(z.number())]).optional(),
861
+ tag: z.union([z.undefined(), StringSchema]).optional(),
862
+ forwarding_rules: z
863
+ .union([
864
+ z.undefined(),
865
+ z.array(z
866
+ .object({
867
+ entry_protocol: StringSchema,
868
+ entry_port: z.number(),
869
+ target_protocol: StringSchema,
870
+ target_port: z.number(),
871
+ tls_passthrough: z
872
+ .union([z.undefined(), z.literal(false), z.literal(true)])
873
+ .optional()
874
+ })
875
+ .passthrough())
876
+ ])
877
+ .optional()
878
+ })
879
+ .passthrough();
880
+ export const DoSpacesKeyListResponseSchema = z
881
+ .object({
882
+ keys: z.array(DoSpacesKeySchema).nullable(),
883
+ links: z
884
+ .union([
885
+ z.undefined(),
886
+ z
887
+ .object({
888
+ pages: z
889
+ .union([
890
+ z.undefined(),
891
+ z
892
+ .object({
893
+ first: z.union([z.undefined(), StringSchema]).optional(),
894
+ prev: z.union([z.undefined(), StringSchema]).optional(),
895
+ next: z.union([z.undefined(), StringSchema]).optional(),
896
+ last: z.union([z.undefined(), StringSchema]).optional()
897
+ })
898
+ .passthrough()
899
+ ])
900
+ .optional()
901
+ })
902
+ .passthrough()
903
+ ])
904
+ .optional(),
905
+ meta: z
906
+ .union([
907
+ z.undefined(),
908
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
909
+ ])
910
+ .optional()
911
+ })
912
+ .passthrough();
913
+ export const RegistryResponseSchema = z
914
+ .object({
915
+ registry: z
916
+ .object({
917
+ name: StringSchema,
918
+ region: z.union([z.undefined(), StringSchema]).optional(),
919
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
920
+ storage_usage_bytes: z.union([z.undefined(), z.number()]).optional(),
921
+ storage_usage_updated_at: z.union([z.undefined(), StringSchema]).optional(),
922
+ read_only: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional()
923
+ })
924
+ .passthrough(),
925
+ subscription: z
926
+ .union([
927
+ z.undefined(),
928
+ z
929
+ .object({
930
+ tier: z
931
+ .union([
932
+ z.undefined(),
933
+ z
934
+ .object({
935
+ name: z.union([z.undefined(), StringSchema]).optional(),
936
+ slug: z.union([z.undefined(), StringSchema]).optional(),
937
+ included_storage_bytes: z.union([z.undefined(), z.number()]).optional(),
938
+ allow_storage_overage: z
939
+ .union([z.undefined(), z.literal(false), z.literal(true)])
940
+ .optional()
941
+ })
942
+ .passthrough()
943
+ ])
944
+ .optional()
945
+ })
946
+ .passthrough()
947
+ ])
948
+ .optional()
949
+ })
950
+ .passthrough();
951
+ export const VolumeSnapshotListResponseSchema = z
952
+ .object({
953
+ snapshots: z.array(DoVolumeSnapshotSchema).nullable(),
954
+ links: z
955
+ .union([
956
+ z.undefined(),
957
+ z
958
+ .object({
959
+ pages: z
960
+ .union([
961
+ z.undefined(),
962
+ z
963
+ .object({
964
+ first: z.union([z.undefined(), StringSchema]).optional(),
965
+ prev: z.union([z.undefined(), StringSchema]).optional(),
966
+ next: z.union([z.undefined(), StringSchema]).optional(),
967
+ last: z.union([z.undefined(), StringSchema]).optional()
968
+ })
969
+ .passthrough()
970
+ ])
971
+ .optional()
972
+ })
973
+ .passthrough()
974
+ ])
975
+ .optional(),
976
+ meta: z
977
+ .union([
978
+ z.undefined(),
979
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
980
+ ])
981
+ .optional()
982
+ })
983
+ .passthrough();
984
+ export const DOResponseDropletsSchema = z.union([
985
+ ProviderDropletResponseSchema,
986
+ ProviderDropletsResponseSchema
987
+ ]);
988
+ export const FirewallsListResponseSchema = z
989
+ .object({
990
+ firewalls: z.array(DoFirewallSchema).nullable(),
991
+ links: z
992
+ .union([
993
+ z.undefined(),
994
+ z
995
+ .object({
996
+ pages: z
997
+ .union([
998
+ z.undefined(),
999
+ z
1000
+ .object({
1001
+ first: z.union([z.undefined(), StringSchema]).optional(),
1002
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1003
+ next: z.union([z.undefined(), StringSchema]).optional(),
1004
+ last: z.union([z.undefined(), StringSchema]).optional()
1005
+ })
1006
+ .passthrough()
1007
+ ])
1008
+ .optional()
1009
+ })
1010
+ .passthrough()
1011
+ ])
1012
+ .optional(),
1013
+ meta: z
1014
+ .union([
1015
+ z.undefined(),
1016
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1017
+ ])
1018
+ .optional()
1019
+ })
1020
+ .passthrough();
1021
+ export const ModelAccessKeysListResponseSchema = z
1022
+ .object({
1023
+ model_access_keys: z.array(ModelAccessKeyMetadataSchema).nullable(),
1024
+ links: z
1025
+ .union([
1026
+ z.undefined(),
1027
+ z
1028
+ .object({
1029
+ pages: z
1030
+ .union([
1031
+ z.undefined(),
1032
+ z
1033
+ .object({
1034
+ first: z.union([z.undefined(), StringSchema]).optional(),
1035
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1036
+ next: z.union([z.undefined(), StringSchema]).optional(),
1037
+ last: z.union([z.undefined(), StringSchema]).optional()
1038
+ })
1039
+ .passthrough()
1040
+ ])
1041
+ .optional()
1042
+ })
1043
+ .passthrough()
1044
+ ])
1045
+ .optional(),
1046
+ meta: z
1047
+ .union([
1048
+ z.undefined(),
1049
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1050
+ ])
1051
+ .optional()
1052
+ })
1053
+ .passthrough();
1054
+ export const DoDropletSchema = z
1055
+ .object({
1056
+ features: z.array(z.string()).optional(),
1057
+ id: z.number(),
1058
+ name: StringSchema,
1059
+ status: z.union([
1060
+ z.literal('new'),
1061
+ z.literal('active'),
1062
+ z.literal('off'),
1063
+ z.literal('archive')
1064
+ ]),
1065
+ size_slug: StringSchema,
1066
+ memory: z.number(),
1067
+ vcpus: z.number(),
1068
+ disk: z.number(),
1069
+ region: z
1070
+ .object({
1071
+ slug: StringSchema,
1072
+ name: z.union([z.undefined(), StringSchema]).optional()
1073
+ })
1074
+ .passthrough(),
1075
+ image: z
1076
+ .union([
1077
+ z.undefined(),
1078
+ z
1079
+ .object({
1080
+ slug: z.union([z.undefined(), StringSchema]).optional(),
1081
+ id: z.union([z.undefined(), z.number()]).optional(),
1082
+ distribution: z.union([z.undefined(), StringSchema]).optional()
1083
+ })
1084
+ .passthrough()
1085
+ ])
1086
+ .optional(),
1087
+ networks: z
1088
+ .object({
1089
+ v4: z.array(z
1090
+ .object({
1091
+ ip_address: StringSchema,
1092
+ type: z.union([z.literal('public'), z.literal('private')])
1093
+ })
1094
+ .passthrough()),
1095
+ v6: z
1096
+ .union([
1097
+ z.undefined(),
1098
+ z.array(z
1099
+ .object({
1100
+ ip_address: StringSchema,
1101
+ type: z.union([z.literal('public'), z.literal('private')])
1102
+ })
1103
+ .passthrough())
1104
+ ])
1105
+ .optional()
1106
+ })
1107
+ .passthrough(),
1108
+ tags: z.array(StringSchema),
1109
+ created_at: StringSchema
1110
+ })
1111
+ .passthrough();
1112
+ export const DropletResponseSchema = z.object({ droplet: DoDropletSchema }).passthrough();
1113
+ export const VolumeListResponseSchema = z
1114
+ .object({
1115
+ volumes: z.array(DoVolumeSchema).nullable(),
1116
+ links: z
1117
+ .union([
1118
+ z.undefined(),
1119
+ z
1120
+ .object({
1121
+ pages: z
1122
+ .union([
1123
+ z.undefined(),
1124
+ z
1125
+ .object({
1126
+ first: z.union([z.undefined(), StringSchema]).optional(),
1127
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1128
+ next: z.union([z.undefined(), StringSchema]).optional(),
1129
+ last: z.union([z.undefined(), StringSchema]).optional()
1130
+ })
1131
+ .passthrough()
1132
+ ])
1133
+ .optional()
1134
+ })
1135
+ .passthrough()
1136
+ ])
1137
+ .optional(),
1138
+ meta: z
1139
+ .union([
1140
+ z.undefined(),
1141
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1142
+ ])
1143
+ .optional()
1144
+ })
1145
+ .passthrough();
1146
+ export const DeploymentsListResponseSchema = z
1147
+ .object({
1148
+ deployments: z.array(DoAppDeploymentSchema).nullable(),
1149
+ links: z
1150
+ .union([
1151
+ z.undefined(),
1152
+ z
1153
+ .object({
1154
+ pages: z
1155
+ .union([
1156
+ z.undefined(),
1157
+ z
1158
+ .object({
1159
+ first: z.union([z.undefined(), StringSchema]).optional(),
1160
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1161
+ next: z.union([z.undefined(), StringSchema]).optional(),
1162
+ last: z.union([z.undefined(), StringSchema]).optional()
1163
+ })
1164
+ .passthrough()
1165
+ ])
1166
+ .optional()
1167
+ })
1168
+ .passthrough()
1169
+ ])
1170
+ .optional(),
1171
+ meta: z
1172
+ .union([
1173
+ z.undefined(),
1174
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1175
+ ])
1176
+ .optional()
1177
+ })
1178
+ .passthrough();
1179
+ export const DedicatedEndpointsListResponseSchema = z
1180
+ .object({
1181
+ endpoints: z.array(DoInferenceEndpointSchema).nullable(),
1182
+ links: z
1183
+ .union([
1184
+ z.undefined(),
1185
+ z
1186
+ .object({
1187
+ pages: z
1188
+ .union([
1189
+ z.undefined(),
1190
+ z
1191
+ .object({
1192
+ first: z.union([z.undefined(), StringSchema]).optional(),
1193
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1194
+ next: z.union([z.undefined(), StringSchema]).optional(),
1195
+ last: z.union([z.undefined(), StringSchema]).optional()
1196
+ })
1197
+ .passthrough()
1198
+ ])
1199
+ .optional()
1200
+ })
1201
+ .passthrough()
1202
+ ])
1203
+ .optional(),
1204
+ meta: z
1205
+ .union([
1206
+ z.undefined(),
1207
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1208
+ ])
1209
+ .optional()
1210
+ })
1211
+ .passthrough();
1212
+ export const RepositoryListResponseSchema = z
1213
+ .object({
1214
+ repositories: z.union([z.undefined(), z.array(DoContainerRegistryRepositorySchema)]).optional(),
1215
+ links: z
1216
+ .union([
1217
+ z.undefined(),
1218
+ z
1219
+ .object({
1220
+ pages: z
1221
+ .union([
1222
+ z.undefined(),
1223
+ z
1224
+ .object({
1225
+ first: z.union([z.undefined(), StringSchema]).optional(),
1226
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1227
+ next: z.union([z.undefined(), StringSchema]).optional(),
1228
+ last: z.union([z.undefined(), StringSchema]).optional()
1229
+ })
1230
+ .passthrough()
1231
+ ])
1232
+ .optional()
1233
+ })
1234
+ .passthrough()
1235
+ ])
1236
+ .optional(),
1237
+ meta: z
1238
+ .union([
1239
+ z.undefined(),
1240
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1241
+ ])
1242
+ .optional()
1243
+ })
1244
+ .passthrough();
1245
+ export const NfsListResponseSchema = z
1246
+ .object({
1247
+ shares: z.array(DoNfsShareSchema).nullable(),
1248
+ links: z
1249
+ .union([
1250
+ z.undefined(),
1251
+ z
1252
+ .object({
1253
+ pages: z
1254
+ .union([
1255
+ z.undefined(),
1256
+ z
1257
+ .object({
1258
+ first: z.union([z.undefined(), StringSchema]).optional(),
1259
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1260
+ next: z.union([z.undefined(), StringSchema]).optional(),
1261
+ last: z.union([z.undefined(), StringSchema]).optional()
1262
+ })
1263
+ .passthrough()
1264
+ ])
1265
+ .optional()
1266
+ })
1267
+ .passthrough()
1268
+ ])
1269
+ .optional(),
1270
+ meta: z
1271
+ .union([
1272
+ z.undefined(),
1273
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1274
+ ])
1275
+ .optional()
1276
+ })
1277
+ .passthrough();
1278
+ export const LoadBalancerListResponseSchema = z
1279
+ .object({
1280
+ load_balancers: z.union([z.undefined(), z.array(DoLoadBalancerSchema)]).optional(),
1281
+ links: z
1282
+ .union([
1283
+ z.undefined(),
1284
+ z
1285
+ .object({
1286
+ pages: z
1287
+ .union([
1288
+ z.undefined(),
1289
+ z
1290
+ .object({
1291
+ first: z.union([z.undefined(), StringSchema]).optional(),
1292
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1293
+ next: z.union([z.undefined(), StringSchema]).optional(),
1294
+ last: z.union([z.undefined(), StringSchema]).optional()
1295
+ })
1296
+ .passthrough()
1297
+ ])
1298
+ .optional()
1299
+ })
1300
+ .passthrough()
1301
+ ])
1302
+ .optional(),
1303
+ meta: z
1304
+ .union([
1305
+ z.undefined(),
1306
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1307
+ ])
1308
+ .optional()
1309
+ })
1310
+ .passthrough();
1311
+ export const DropletsListResponseSchema = z
1312
+ .object({
1313
+ droplets: z.array(DoDropletSchema).nullable(),
1314
+ links: z
1315
+ .union([
1316
+ z.undefined(),
1317
+ z
1318
+ .object({
1319
+ pages: z
1320
+ .union([
1321
+ z.undefined(),
1322
+ z
1323
+ .object({
1324
+ first: z.union([z.undefined(), StringSchema]).optional(),
1325
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1326
+ next: z.union([z.undefined(), StringSchema]).optional(),
1327
+ last: z.union([z.undefined(), StringSchema]).optional()
1328
+ })
1329
+ .passthrough()
1330
+ ])
1331
+ .optional()
1332
+ })
1333
+ .passthrough()
1334
+ ])
1335
+ .optional(),
1336
+ meta: z
1337
+ .union([
1338
+ z.undefined(),
1339
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1340
+ ])
1341
+ .optional()
1342
+ })
1343
+ .passthrough();
1344
+ export const DoDatabaseClusterSchema = z
1345
+ .object({
1346
+ id: StringSchema,
1347
+ name: StringSchema,
1348
+ engine: z.union([
1349
+ z.literal('pg'),
1350
+ z.literal('mysql'),
1351
+ z.literal('redis'),
1352
+ z.literal('valkey'),
1353
+ z.literal('kafka'),
1354
+ z.literal('mongodb'),
1355
+ z.literal('opensearch')
1356
+ ]),
1357
+ version: StringSchema,
1358
+ size: StringSchema,
1359
+ region: StringSchema,
1360
+ status: z.union([
1361
+ z.literal('creating'),
1362
+ z.literal('online'),
1363
+ z.literal('resizing'),
1364
+ z.literal('migrating'),
1365
+ z.literal('forking'),
1366
+ z.literal('failed'),
1367
+ z.literal('restoring')
1368
+ ]),
1369
+ num_nodes: z.number(),
1370
+ standby_nodes: z.union([z.undefined(), z.number()]).optional(),
1371
+ read_only_nodes: z.union([z.undefined(), z.number()]).optional(),
1372
+ storage_size_mib: z.union([z.undefined(), z.number()]).optional(),
1373
+ private_network_uuid: z.union([z.undefined(), StringSchema]).optional(),
1374
+ tags: z.union([z.undefined(), z.array(StringSchema)]).optional(),
1375
+ created_at: StringSchema,
1376
+ maintenance_window: z
1377
+ .union([
1378
+ z.undefined(),
1379
+ z
1380
+ .object({
1381
+ day: StringSchema,
1382
+ hour: StringSchema,
1383
+ pending: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
1384
+ description: z.union([z.undefined(), z.array(StringSchema)]).optional()
1385
+ })
1386
+ .passthrough()
1387
+ ])
1388
+ .optional(),
1389
+ connection: z
1390
+ .union([
1391
+ z.undefined(),
1392
+ z
1393
+ .object({
1394
+ uri: StringSchema,
1395
+ database: z.union([z.undefined(), StringSchema]).optional(),
1396
+ host: StringSchema,
1397
+ port: z.number(),
1398
+ user: StringSchema,
1399
+ password: z.union([z.undefined(), StringSchema]).optional(),
1400
+ ssl: z.boolean()
1401
+ })
1402
+ .passthrough()
1403
+ ])
1404
+ .optional(),
1405
+ private_connection: z
1406
+ .union([
1407
+ z.undefined(),
1408
+ z
1409
+ .object({
1410
+ uri: StringSchema,
1411
+ database: z.union([z.undefined(), StringSchema]).optional(),
1412
+ host: StringSchema,
1413
+ port: z.number(),
1414
+ user: StringSchema,
1415
+ password: z.union([z.undefined(), StringSchema]).optional(),
1416
+ ssl: z.boolean()
1417
+ })
1418
+ .passthrough()
1419
+ ])
1420
+ .optional(),
1421
+ users: z
1422
+ .union([
1423
+ z.undefined(),
1424
+ z.array(z
1425
+ .object({
1426
+ name: StringSchema,
1427
+ role: z.union([z.undefined(), StringSchema]).optional()
1428
+ })
1429
+ .passthrough())
1430
+ ])
1431
+ .optional(),
1432
+ db_names: z.union([z.undefined(), z.array(StringSchema)]).optional(),
1433
+ trusted_sources: z
1434
+ .union([
1435
+ z.undefined(),
1436
+ z.array(z
1437
+ .object({
1438
+ type: StringSchema,
1439
+ value: StringSchema
1440
+ })
1441
+ .passthrough())
1442
+ ])
1443
+ .optional(),
1444
+ storage_autoscaling: z
1445
+ .union([
1446
+ z.undefined(),
1447
+ z
1448
+ .object({
1449
+ enabled: z.boolean(),
1450
+ increase_amount_percent: z.union([z.undefined(), z.number()]).optional()
1451
+ })
1452
+ .passthrough()
1453
+ ])
1454
+ .optional()
1455
+ })
1456
+ .passthrough();
1457
+ export const DatabaseResponseSchema = z.object({ database: DoDatabaseClusterSchema }).passthrough();
1458
+ export const DoKubernetesClusterSchema = z
1459
+ .object({
1460
+ id: StringSchema,
1461
+ name: StringSchema,
1462
+ region: StringSchema,
1463
+ version: StringSchema,
1464
+ cluster_subnet: z.union([z.undefined(), StringSchema]).optional(),
1465
+ service_subnet: z.union([z.undefined(), StringSchema]).optional(),
1466
+ vpc_uuid: z.union([z.undefined(), StringSchema]).optional(),
1467
+ ipv4: z.union([z.undefined(), StringSchema]).optional(),
1468
+ endpoint: StringSchema,
1469
+ tags: z.union([z.undefined(), z.array(StringSchema)]).optional(),
1470
+ node_pools: z.array(z
1471
+ .object({
1472
+ id: z.union([z.undefined(), StringSchema]).optional(),
1473
+ name: StringSchema,
1474
+ size: StringSchema,
1475
+ count: z.union([z.undefined(), z.number()]).optional(),
1476
+ auto_scale: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
1477
+ min_nodes: z.union([z.undefined(), z.number()]).optional(),
1478
+ max_nodes: z.union([z.undefined(), z.number()]).optional(),
1479
+ tags: z.union([z.undefined(), z.array(StringSchema)]).optional(),
1480
+ labels: z.union([z.undefined(), z.record(StringSchema, StringSchema)]).optional(),
1481
+ taints: z
1482
+ .union([
1483
+ z.undefined(),
1484
+ z.array(z
1485
+ .object({
1486
+ key: StringSchema,
1487
+ value: z.union([z.undefined(), StringSchema]).optional(),
1488
+ effect: z.union([
1489
+ z.literal('NoSchedule'),
1490
+ z.literal('PreferNoSchedule'),
1491
+ z.literal('NoExecute')
1492
+ ])
1493
+ })
1494
+ .passthrough())
1495
+ ])
1496
+ .optional()
1497
+ })
1498
+ .passthrough()),
1499
+ status: z
1500
+ .object({
1501
+ state: z.union([
1502
+ z.literal('errored'),
1503
+ z.literal('deleting'),
1504
+ z.literal('running'),
1505
+ z.literal('provisioning'),
1506
+ z.literal('degraded'),
1507
+ z.literal('upgrading'),
1508
+ z.literal('deleted')
1509
+ ]),
1510
+ message: z.union([z.undefined(), StringSchema]).optional()
1511
+ })
1512
+ .passthrough(),
1513
+ maintenance_policy: z
1514
+ .union([
1515
+ z.undefined(),
1516
+ z
1517
+ .object({
1518
+ start_time: z.union([z.undefined(), StringSchema]).optional(),
1519
+ day: z.union([z.undefined(), StringSchema]).optional(),
1520
+ duration: z.union([z.undefined(), StringSchema]).optional()
1521
+ })
1522
+ .passthrough()
1523
+ ])
1524
+ .optional(),
1525
+ auto_upgrade: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
1526
+ surge_upgrade: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
1527
+ ha: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
1528
+ registry_enabled: z.union([z.undefined(), z.literal(false), z.literal(true)]).optional(),
1529
+ created_at: StringSchema,
1530
+ updated_at: z.union([z.undefined(), StringSchema]).optional(),
1531
+ control_plane_firewall: z
1532
+ .union([
1533
+ z.undefined(),
1534
+ z
1535
+ .object({
1536
+ enabled: z.boolean(),
1537
+ allowed_addresses: z.array(StringSchema)
1538
+ })
1539
+ .passthrough()
1540
+ ])
1541
+ .optional()
1542
+ })
1543
+ .passthrough();
1544
+ export const ClusterResponseSchema = z
1545
+ .object({ kubernetes_cluster: DoKubernetesClusterSchema })
1546
+ .passthrough();
1547
+ export const DatabaseListResponseSchema = z
1548
+ .object({
1549
+ databases: z.array(DoDatabaseClusterSchema).nullable(),
1550
+ links: z
1551
+ .union([
1552
+ z.undefined(),
1553
+ z
1554
+ .object({
1555
+ pages: z
1556
+ .union([
1557
+ z.undefined(),
1558
+ z
1559
+ .object({
1560
+ first: z.union([z.undefined(), StringSchema]).optional(),
1561
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1562
+ next: z.union([z.undefined(), StringSchema]).optional(),
1563
+ last: z.union([z.undefined(), StringSchema]).optional()
1564
+ })
1565
+ .passthrough()
1566
+ ])
1567
+ .optional()
1568
+ })
1569
+ .passthrough()
1570
+ ])
1571
+ .optional(),
1572
+ meta: z
1573
+ .union([
1574
+ z.undefined(),
1575
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1576
+ ])
1577
+ .optional()
1578
+ })
1579
+ .passthrough();
1580
+ export const ClusterListResponseSchema = z
1581
+ .object({
1582
+ kubernetes_clusters: z.array(DoKubernetesClusterSchema).nullable(),
1583
+ links: z
1584
+ .union([
1585
+ z.undefined(),
1586
+ z
1587
+ .object({
1588
+ pages: z
1589
+ .union([
1590
+ z.undefined(),
1591
+ z
1592
+ .object({
1593
+ first: z.union([z.undefined(), StringSchema]).optional(),
1594
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1595
+ next: z.union([z.undefined(), StringSchema]).optional(),
1596
+ last: z.union([z.undefined(), StringSchema]).optional()
1597
+ })
1598
+ .passthrough()
1599
+ ])
1600
+ .optional()
1601
+ })
1602
+ .passthrough()
1603
+ ])
1604
+ .optional(),
1605
+ meta: z
1606
+ .union([
1607
+ z.undefined(),
1608
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1609
+ ])
1610
+ .optional()
1611
+ })
1612
+ .passthrough();
1613
+ export const DoAppSchema = z
1614
+ .object({
1615
+ id: StringSchema,
1616
+ spec: z
1617
+ .object({
1618
+ name: StringSchema,
1619
+ region: z.union([z.undefined(), StringSchema]).optional(),
1620
+ services: z
1621
+ .union([
1622
+ z.undefined(),
1623
+ z.array(z
1624
+ .object({
1625
+ name: StringSchema,
1626
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
1627
+ instance_size_slug: z.union([z.undefined(), StringSchema]).optional(),
1628
+ http_port: z.union([z.undefined(), z.number()]).optional(),
1629
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
1630
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
1631
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
1632
+ github: z
1633
+ .union([
1634
+ z.undefined(),
1635
+ z
1636
+ .object({
1637
+ repo: z.union([z.undefined(), StringSchema]).optional(),
1638
+ branch: z.union([z.undefined(), StringSchema]).optional(),
1639
+ deploy_on_push: z
1640
+ .union([z.undefined(), z.literal(false), z.literal(true)])
1641
+ .optional()
1642
+ })
1643
+ .passthrough()
1644
+ ])
1645
+ .optional(),
1646
+ envs: z
1647
+ .union([
1648
+ z.undefined(),
1649
+ z.array(z
1650
+ .object({
1651
+ key: StringSchema,
1652
+ value: z.union([z.undefined(), StringSchema]).optional(),
1653
+ scope: z
1654
+ .union([
1655
+ z.undefined(),
1656
+ z.literal('RUN_TIME'),
1657
+ z.literal('BUILD_TIME'),
1658
+ z.literal('RUN_AND_BUILD_TIME')
1659
+ ])
1660
+ .optional(),
1661
+ type: z
1662
+ .union([z.undefined(), z.literal('GENERAL'), z.literal('SECRET')])
1663
+ .optional()
1664
+ })
1665
+ .passthrough())
1666
+ ])
1667
+ .optional(),
1668
+ health_check: z
1669
+ .union([
1670
+ z.undefined(),
1671
+ z
1672
+ .object({
1673
+ http_path: z.union([z.undefined(), StringSchema]).optional(),
1674
+ initial_delay_seconds: z.union([z.undefined(), z.number()]).optional(),
1675
+ period_seconds: z.union([z.undefined(), z.number()]).optional(),
1676
+ timeout_seconds: z.union([z.undefined(), z.number()]).optional(),
1677
+ success_threshold: z.union([z.undefined(), z.number()]).optional(),
1678
+ failure_threshold: z.union([z.undefined(), z.number()]).optional()
1679
+ })
1680
+ .passthrough()
1681
+ ])
1682
+ .optional()
1683
+ })
1684
+ .passthrough())
1685
+ ])
1686
+ .optional(),
1687
+ static_sites: z
1688
+ .union([
1689
+ z.undefined(),
1690
+ z.array(z
1691
+ .object({
1692
+ name: StringSchema,
1693
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
1694
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
1695
+ output_dir: z.union([z.undefined(), StringSchema]).optional(),
1696
+ github: z
1697
+ .union([
1698
+ z.undefined(),
1699
+ z
1700
+ .object({
1701
+ repo: z.union([z.undefined(), StringSchema]).optional(),
1702
+ branch: z.union([z.undefined(), StringSchema]).optional(),
1703
+ deploy_on_push: z
1704
+ .union([z.undefined(), z.literal(false), z.literal(true)])
1705
+ .optional()
1706
+ })
1707
+ .passthrough()
1708
+ ])
1709
+ .optional(),
1710
+ envs: z
1711
+ .union([
1712
+ z.undefined(),
1713
+ z.array(z
1714
+ .object({
1715
+ key: StringSchema,
1716
+ value: z.union([z.undefined(), StringSchema]).optional(),
1717
+ scope: z
1718
+ .union([
1719
+ z.undefined(),
1720
+ z.literal('RUN_TIME'),
1721
+ z.literal('BUILD_TIME'),
1722
+ z.literal('RUN_AND_BUILD_TIME')
1723
+ ])
1724
+ .optional(),
1725
+ type: z
1726
+ .union([z.undefined(), z.literal('GENERAL'), z.literal('SECRET')])
1727
+ .optional()
1728
+ })
1729
+ .passthrough())
1730
+ ])
1731
+ .optional()
1732
+ })
1733
+ .passthrough())
1734
+ ])
1735
+ .optional(),
1736
+ workers: z.union([z.undefined(), z.array(z.record(StringSchema, JsonValueSchema))]).optional(),
1737
+ jobs: z.union([z.undefined(), z.array(z.record(StringSchema, JsonValueSchema))]).optional(),
1738
+ functions: z.union([z.undefined(), z.array(z.record(StringSchema, JsonValueSchema))]).optional(),
1739
+ envs: z
1740
+ .union([
1741
+ z.undefined(),
1742
+ z.array(z
1743
+ .object({
1744
+ key: StringSchema,
1745
+ value: z.union([z.undefined(), StringSchema]).optional(),
1746
+ scope: z
1747
+ .union([
1748
+ z.undefined(),
1749
+ z.literal('RUN_TIME'),
1750
+ z.literal('BUILD_TIME'),
1751
+ z.literal('RUN_AND_BUILD_TIME')
1752
+ ])
1753
+ .optional(),
1754
+ type: z
1755
+ .union([z.undefined(), z.literal('GENERAL'), z.literal('SECRET')])
1756
+ .optional()
1757
+ })
1758
+ .passthrough())
1759
+ ])
1760
+ .optional(),
1761
+ domains: z.union([z.undefined(), z.array(z.record(StringSchema, JsonValueSchema))]).optional(),
1762
+ alerts: z.union([z.undefined(), z.array(z.record(StringSchema, JsonValueSchema))]).optional()
1763
+ })
1764
+ .passthrough(),
1765
+ live_url: z.union([z.undefined(), StringSchema]).optional(),
1766
+ default_ingress: z.union([z.undefined(), StringSchema]).optional(),
1767
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
1768
+ updated_at: z.union([z.undefined(), StringSchema]).optional(),
1769
+ active_deployment: z
1770
+ .union([
1771
+ z.undefined(),
1772
+ z
1773
+ .object({
1774
+ id: z.union([z.undefined(), StringSchema]).optional(),
1775
+ phase: z.union([z.undefined(), StringSchema]).optional()
1776
+ })
1777
+ .passthrough()
1778
+ ])
1779
+ .optional(),
1780
+ in_progress_deployment: z
1781
+ .union([
1782
+ z.undefined(),
1783
+ z
1784
+ .object({
1785
+ id: z.union([z.undefined(), StringSchema]).optional(),
1786
+ phase: z.union([z.undefined(), StringSchema]).optional()
1787
+ })
1788
+ .passthrough()
1789
+ ])
1790
+ .optional()
1791
+ })
1792
+ .passthrough();
1793
+ export const AppResponseSchema = z.object({ app: DoAppSchema }).passthrough();
1794
+ export const AppsListResponseSchema = z
1795
+ .object({
1796
+ apps: z.array(DoAppSchema).nullable(),
1797
+ links: z
1798
+ .union([
1799
+ z.undefined(),
1800
+ z
1801
+ .object({
1802
+ pages: z
1803
+ .union([
1804
+ z.undefined(),
1805
+ z
1806
+ .object({
1807
+ first: z.union([z.undefined(), StringSchema]).optional(),
1808
+ prev: z.union([z.undefined(), StringSchema]).optional(),
1809
+ next: z.union([z.undefined(), StringSchema]).optional(),
1810
+ last: z.union([z.undefined(), StringSchema]).optional()
1811
+ })
1812
+ .passthrough()
1813
+ ])
1814
+ .optional()
1815
+ })
1816
+ .passthrough()
1817
+ ])
1818
+ .optional(),
1819
+ meta: z
1820
+ .union([
1821
+ z.undefined(),
1822
+ z.object({ total: z.union([z.undefined(), z.number()]).optional() }).passthrough()
1823
+ ])
1824
+ .optional()
1825
+ })
1826
+ .passthrough();
1827
+ export const AppDeploymentResponseSchema = z
1828
+ .object({
1829
+ deployment: z
1830
+ .object({
1831
+ id: StringSchema,
1832
+ spec: z
1833
+ .union([
1834
+ z.undefined(),
1835
+ z
1836
+ .object({
1837
+ name: StringSchema,
1838
+ region: z.union([z.undefined(), StringSchema]).optional(),
1839
+ envs: z
1840
+ .union([
1841
+ z.undefined(),
1842
+ z.array(z
1843
+ .object({
1844
+ key: StringSchema,
1845
+ value: z.union([z.undefined(), StringSchema]).optional(),
1846
+ scope: z
1847
+ .union([
1848
+ z.undefined(),
1849
+ z.literal('RUN_TIME'),
1850
+ z.literal('BUILD_TIME'),
1851
+ z.literal('RUN_AND_BUILD_TIME')
1852
+ ])
1853
+ .optional(),
1854
+ type: z
1855
+ .union([z.undefined(), z.literal('GENERAL'), z.literal('SECRET')])
1856
+ .optional()
1857
+ })
1858
+ .passthrough())
1859
+ ])
1860
+ .optional(),
1861
+ services: z
1862
+ .union([
1863
+ z.undefined(),
1864
+ z.array(z
1865
+ .object({
1866
+ http_port: z.union([z.undefined(), z.number()]).optional(),
1867
+ internal_ports: z.union([z.undefined(), z.array(z.number())]).optional(),
1868
+ health_check: z
1869
+ .union([
1870
+ z.undefined(),
1871
+ z
1872
+ .object({
1873
+ http_path: z.union([z.undefined(), StringSchema]).optional(),
1874
+ initial_delay_seconds: z
1875
+ .union([z.undefined(), z.number()])
1876
+ .optional(),
1877
+ period_seconds: z.union([z.undefined(), z.number()]).optional(),
1878
+ timeout_seconds: z.union([z.undefined(), z.number()]).optional(),
1879
+ success_threshold: z
1880
+ .union([z.undefined(), z.number()])
1881
+ .optional(),
1882
+ failure_threshold: z
1883
+ .union([z.undefined(), z.number()])
1884
+ .optional(),
1885
+ port: z.union([z.undefined(), z.number()]).optional()
1886
+ })
1887
+ .passthrough()
1888
+ ])
1889
+ .optional(),
1890
+ autoscaling: z
1891
+ .union([
1892
+ z.undefined(),
1893
+ z
1894
+ .object({
1895
+ min_instance_count: z.number(),
1896
+ max_instance_count: z.number(),
1897
+ metrics: z.array(z.union([
1898
+ z
1899
+ .object({
1900
+ cpu: z.object({ percent: z.number() }).passthrough()
1901
+ })
1902
+ .passthrough(),
1903
+ z
1904
+ .object({
1905
+ requests_per_second: z
1906
+ .object({ threshold: z.number() })
1907
+ .passthrough()
1908
+ })
1909
+ .passthrough(),
1910
+ z
1911
+ .object({
1912
+ latency_p95_ms: z
1913
+ .object({ threshold: z.number() })
1914
+ .passthrough()
1915
+ })
1916
+ .passthrough()
1917
+ ]))
1918
+ })
1919
+ .passthrough()
1920
+ ])
1921
+ .optional(),
1922
+ scale_to_zero: z
1923
+ .union([z.undefined(), z.literal(false), z.literal(true)])
1924
+ .optional(),
1925
+ routes: z
1926
+ .union([
1927
+ z.undefined(),
1928
+ z.array(z
1929
+ .object({
1930
+ path: StringSchema,
1931
+ preserve_path_prefix: z
1932
+ .union([z.undefined(), z.literal(false), z.literal(true)])
1933
+ .optional()
1934
+ })
1935
+ .passthrough())
1936
+ ])
1937
+ .optional(),
1938
+ name: StringSchema,
1939
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
1940
+ dockerfile_path: z.union([z.undefined(), StringSchema]).optional(),
1941
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
1942
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
1943
+ environment_slug: z.union([z.undefined(), StringSchema]).optional(),
1944
+ instance_size_slug: z.union([z.undefined(), StringSchema]).optional(),
1945
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
1946
+ envs: z
1947
+ .union([
1948
+ z.undefined(),
1949
+ z.array(z
1950
+ .object({
1951
+ key: StringSchema,
1952
+ value: z.union([z.undefined(), StringSchema]).optional(),
1953
+ scope: z
1954
+ .union([
1955
+ z.undefined(),
1956
+ z.literal('RUN_TIME'),
1957
+ z.literal('BUILD_TIME'),
1958
+ z.literal('RUN_AND_BUILD_TIME')
1959
+ ])
1960
+ .optional(),
1961
+ type: z
1962
+ .union([
1963
+ z.undefined(),
1964
+ z.literal('GENERAL'),
1965
+ z.literal('SECRET')
1966
+ ])
1967
+ .optional()
1968
+ })
1969
+ .passthrough())
1970
+ ])
1971
+ .optional(),
1972
+ github: z
1973
+ .union([
1974
+ z.undefined(),
1975
+ z
1976
+ .object({
1977
+ repo: StringSchema,
1978
+ branch: StringSchema,
1979
+ deploy_on_push: z
1980
+ .union([z.undefined(), z.literal(false), z.literal(true)])
1981
+ .optional()
1982
+ })
1983
+ .passthrough()
1984
+ ])
1985
+ .optional(),
1986
+ image: z
1987
+ .union([
1988
+ z.undefined(),
1989
+ z
1990
+ .object({
1991
+ registry_type: z.union([
1992
+ z.literal('DOCR'),
1993
+ z.literal('DOCKER_HUB'),
1994
+ z.literal('GHCR')
1995
+ ]),
1996
+ registry: z.union([z.undefined(), StringSchema]).optional(),
1997
+ repository: StringSchema,
1998
+ tag: z.union([z.undefined(), StringSchema]).optional(),
1999
+ digest: z.union([z.undefined(), StringSchema]).optional()
2000
+ })
2001
+ .passthrough()
2002
+ ])
2003
+ .optional()
2004
+ })
2005
+ .passthrough())
2006
+ ])
2007
+ .optional(),
2008
+ static_sites: z
2009
+ .union([
2010
+ z.undefined(),
2011
+ z.array(z
2012
+ .object({
2013
+ name: StringSchema,
2014
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
2015
+ output_dir: z.union([z.undefined(), StringSchema]).optional(),
2016
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
2017
+ index_document: z.union([z.undefined(), StringSchema]).optional(),
2018
+ error_document: z.union([z.undefined(), StringSchema]).optional(),
2019
+ environment_slug: z.union([z.undefined(), StringSchema]).optional(),
2020
+ github: z
2021
+ .union([
2022
+ z.undefined(),
2023
+ z
2024
+ .object({
2025
+ repo: StringSchema,
2026
+ branch: StringSchema,
2027
+ deploy_on_push: z
2028
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2029
+ .optional()
2030
+ })
2031
+ .passthrough()
2032
+ ])
2033
+ .optional(),
2034
+ envs: z
2035
+ .union([
2036
+ z.undefined(),
2037
+ z.array(z
2038
+ .object({
2039
+ key: StringSchema,
2040
+ value: z.union([z.undefined(), StringSchema]).optional(),
2041
+ scope: z
2042
+ .union([
2043
+ z.undefined(),
2044
+ z.literal('RUN_TIME'),
2045
+ z.literal('BUILD_TIME'),
2046
+ z.literal('RUN_AND_BUILD_TIME')
2047
+ ])
2048
+ .optional(),
2049
+ type: z
2050
+ .union([
2051
+ z.undefined(),
2052
+ z.literal('GENERAL'),
2053
+ z.literal('SECRET')
2054
+ ])
2055
+ .optional()
2056
+ })
2057
+ .passthrough())
2058
+ ])
2059
+ .optional()
2060
+ })
2061
+ .passthrough())
2062
+ ])
2063
+ .optional(),
2064
+ workers: z
2065
+ .union([
2066
+ z.undefined(),
2067
+ z.array(z
2068
+ .object({
2069
+ autoscaling: z
2070
+ .union([
2071
+ z.undefined(),
2072
+ z
2073
+ .object({
2074
+ min_instance_count: z.number(),
2075
+ max_instance_count: z.number(),
2076
+ metrics: z.array(z.union([
2077
+ z
2078
+ .object({
2079
+ cpu: z.object({ percent: z.number() }).passthrough()
2080
+ })
2081
+ .passthrough(),
2082
+ z
2083
+ .object({
2084
+ requests_per_second: z
2085
+ .object({ threshold: z.number() })
2086
+ .passthrough()
2087
+ })
2088
+ .passthrough(),
2089
+ z
2090
+ .object({
2091
+ latency_p95_ms: z
2092
+ .object({ threshold: z.number() })
2093
+ .passthrough()
2094
+ })
2095
+ .passthrough()
2096
+ ]))
2097
+ })
2098
+ .passthrough()
2099
+ ])
2100
+ .optional(),
2101
+ name: StringSchema,
2102
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
2103
+ dockerfile_path: z.union([z.undefined(), StringSchema]).optional(),
2104
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
2105
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
2106
+ environment_slug: z.union([z.undefined(), StringSchema]).optional(),
2107
+ instance_size_slug: z.union([z.undefined(), StringSchema]).optional(),
2108
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
2109
+ envs: z
2110
+ .union([
2111
+ z.undefined(),
2112
+ z.array(z
2113
+ .object({
2114
+ key: StringSchema,
2115
+ value: z.union([z.undefined(), StringSchema]).optional(),
2116
+ scope: z
2117
+ .union([
2118
+ z.undefined(),
2119
+ z.literal('RUN_TIME'),
2120
+ z.literal('BUILD_TIME'),
2121
+ z.literal('RUN_AND_BUILD_TIME')
2122
+ ])
2123
+ .optional(),
2124
+ type: z
2125
+ .union([
2126
+ z.undefined(),
2127
+ z.literal('GENERAL'),
2128
+ z.literal('SECRET')
2129
+ ])
2130
+ .optional()
2131
+ })
2132
+ .passthrough())
2133
+ ])
2134
+ .optional(),
2135
+ github: z
2136
+ .union([
2137
+ z.undefined(),
2138
+ z
2139
+ .object({
2140
+ repo: StringSchema,
2141
+ branch: StringSchema,
2142
+ deploy_on_push: z
2143
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2144
+ .optional()
2145
+ })
2146
+ .passthrough()
2147
+ ])
2148
+ .optional(),
2149
+ image: z
2150
+ .union([
2151
+ z.undefined(),
2152
+ z
2153
+ .object({
2154
+ registry_type: z.union([
2155
+ z.literal('DOCR'),
2156
+ z.literal('DOCKER_HUB'),
2157
+ z.literal('GHCR')
2158
+ ]),
2159
+ registry: z.union([z.undefined(), StringSchema]).optional(),
2160
+ repository: StringSchema,
2161
+ tag: z.union([z.undefined(), StringSchema]).optional(),
2162
+ digest: z.union([z.undefined(), StringSchema]).optional()
2163
+ })
2164
+ .passthrough()
2165
+ ])
2166
+ .optional()
2167
+ })
2168
+ .passthrough())
2169
+ ])
2170
+ .optional(),
2171
+ jobs: z
2172
+ .union([
2173
+ z.undefined(),
2174
+ z.array(z
2175
+ .object({
2176
+ kind: z.union([
2177
+ z.literal('PRE_DEPLOY'),
2178
+ z.literal('POST_DEPLOY'),
2179
+ z.literal('FAILED_DEPLOY')
2180
+ ]),
2181
+ name: StringSchema,
2182
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
2183
+ dockerfile_path: z.union([z.undefined(), StringSchema]).optional(),
2184
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
2185
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
2186
+ environment_slug: z.union([z.undefined(), StringSchema]).optional(),
2187
+ instance_size_slug: z.union([z.undefined(), StringSchema]).optional(),
2188
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
2189
+ envs: z
2190
+ .union([
2191
+ z.undefined(),
2192
+ z.array(z
2193
+ .object({
2194
+ key: StringSchema,
2195
+ value: z.union([z.undefined(), StringSchema]).optional(),
2196
+ scope: z
2197
+ .union([
2198
+ z.undefined(),
2199
+ z.literal('RUN_TIME'),
2200
+ z.literal('BUILD_TIME'),
2201
+ z.literal('RUN_AND_BUILD_TIME')
2202
+ ])
2203
+ .optional(),
2204
+ type: z
2205
+ .union([
2206
+ z.undefined(),
2207
+ z.literal('GENERAL'),
2208
+ z.literal('SECRET')
2209
+ ])
2210
+ .optional()
2211
+ })
2212
+ .passthrough())
2213
+ ])
2214
+ .optional(),
2215
+ github: z
2216
+ .union([
2217
+ z.undefined(),
2218
+ z
2219
+ .object({
2220
+ repo: StringSchema,
2221
+ branch: StringSchema,
2222
+ deploy_on_push: z
2223
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2224
+ .optional()
2225
+ })
2226
+ .passthrough()
2227
+ ])
2228
+ .optional(),
2229
+ image: z
2230
+ .union([
2231
+ z.undefined(),
2232
+ z
2233
+ .object({
2234
+ registry_type: z.union([
2235
+ z.literal('DOCR'),
2236
+ z.literal('DOCKER_HUB'),
2237
+ z.literal('GHCR')
2238
+ ]),
2239
+ registry: z.union([z.undefined(), StringSchema]).optional(),
2240
+ repository: StringSchema,
2241
+ tag: z.union([z.undefined(), StringSchema]).optional(),
2242
+ digest: z.union([z.undefined(), StringSchema]).optional()
2243
+ })
2244
+ .passthrough()
2245
+ ])
2246
+ .optional()
2247
+ })
2248
+ .passthrough())
2249
+ ])
2250
+ .optional(),
2251
+ functions: z
2252
+ .union([
2253
+ z.undefined(),
2254
+ z.array(z
2255
+ .object({
2256
+ name: StringSchema,
2257
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
2258
+ github: z
2259
+ .union([
2260
+ z.undefined(),
2261
+ z
2262
+ .object({
2263
+ repo: StringSchema,
2264
+ branch: StringSchema,
2265
+ deploy_on_push: z
2266
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2267
+ .optional()
2268
+ })
2269
+ .passthrough()
2270
+ ])
2271
+ .optional(),
2272
+ envs: z
2273
+ .union([
2274
+ z.undefined(),
2275
+ z.array(z
2276
+ .object({
2277
+ key: StringSchema,
2278
+ value: z.union([z.undefined(), StringSchema]).optional(),
2279
+ scope: z
2280
+ .union([
2281
+ z.undefined(),
2282
+ z.literal('RUN_TIME'),
2283
+ z.literal('BUILD_TIME'),
2284
+ z.literal('RUN_AND_BUILD_TIME')
2285
+ ])
2286
+ .optional(),
2287
+ type: z
2288
+ .union([
2289
+ z.undefined(),
2290
+ z.literal('GENERAL'),
2291
+ z.literal('SECRET')
2292
+ ])
2293
+ .optional()
2294
+ })
2295
+ .passthrough())
2296
+ ])
2297
+ .optional()
2298
+ })
2299
+ .passthrough())
2300
+ ])
2301
+ .optional(),
2302
+ domains: z
2303
+ .union([
2304
+ z.undefined(),
2305
+ z.array(z
2306
+ .object({
2307
+ domain: StringSchema,
2308
+ type: z
2309
+ .union([
2310
+ z.undefined(),
2311
+ z.literal('DEFAULT'),
2312
+ z.literal('PRIMARY'),
2313
+ z.literal('ALIAS')
2314
+ ])
2315
+ .optional(),
2316
+ wildcard: z
2317
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2318
+ .optional(),
2319
+ zone: z.union([z.undefined(), StringSchema]).optional(),
2320
+ certificate_id: z.union([z.undefined(), StringSchema]).optional()
2321
+ })
2322
+ .passthrough())
2323
+ ])
2324
+ .optional(),
2325
+ alerts: z
2326
+ .union([
2327
+ z.undefined(),
2328
+ z.array(z
2329
+ .object({
2330
+ rule: StringSchema,
2331
+ disabled: z
2332
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2333
+ .optional(),
2334
+ operator: z
2335
+ .union([
2336
+ z.undefined(),
2337
+ z.literal('GREATER_THAN'),
2338
+ z.literal('LESS_THAN')
2339
+ ])
2340
+ .optional(),
2341
+ value: z.union([z.undefined(), z.number()]).optional(),
2342
+ window: z
2343
+ .union([
2344
+ z.undefined(),
2345
+ z.literal('FIVE_MINUTES'),
2346
+ z.literal('TEN_MINUTES'),
2347
+ z.literal('THIRTY_MINUTES'),
2348
+ z.literal('ONE_HOUR')
2349
+ ])
2350
+ .optional(),
2351
+ emails: z.union([z.undefined(), z.array(StringSchema)]).optional(),
2352
+ slack_webhooks: z
2353
+ .union([
2354
+ z.undefined(),
2355
+ z.array(z
2356
+ .object({
2357
+ url: StringSchema,
2358
+ channel: z.union([z.undefined(), StringSchema]).optional()
2359
+ })
2360
+ .passthrough())
2361
+ ])
2362
+ .optional()
2363
+ })
2364
+ .passthrough())
2365
+ ])
2366
+ .optional(),
2367
+ log_destinations: z
2368
+ .union([
2369
+ z.undefined(),
2370
+ z.array(z.union([
2371
+ z
2372
+ .object({
2373
+ name: StringSchema,
2374
+ papertrail: z.object({ endpoint: StringSchema }).passthrough()
2375
+ })
2376
+ .passthrough(),
2377
+ z
2378
+ .object({
2379
+ name: StringSchema,
2380
+ datadog: z
2381
+ .object({
2382
+ endpoint: StringSchema,
2383
+ api_key: StringSchema
2384
+ })
2385
+ .passthrough()
2386
+ })
2387
+ .passthrough(),
2388
+ z
2389
+ .object({
2390
+ name: StringSchema,
2391
+ logtail: z.object({ token: StringSchema }).passthrough()
2392
+ })
2393
+ .passthrough(),
2394
+ z
2395
+ .object({
2396
+ name: StringSchema,
2397
+ open_search: z
2398
+ .object({
2399
+ endpoint: StringSchema,
2400
+ index_name: z.union([z.undefined(), StringSchema]).optional(),
2401
+ basic_auth: z
2402
+ .union([
2403
+ z.undefined(),
2404
+ z
2405
+ .object({
2406
+ user: z.union([z.undefined(), StringSchema]).optional(),
2407
+ password: z.union([z.undefined(), StringSchema]).optional()
2408
+ })
2409
+ .passthrough()
2410
+ ])
2411
+ .optional()
2412
+ })
2413
+ .passthrough()
2414
+ })
2415
+ .passthrough()
2416
+ ]))
2417
+ ])
2418
+ .optional(),
2419
+ features: z.union([z.undefined(), z.array(StringSchema)]).optional(),
2420
+ maintenance: z
2421
+ .union([
2422
+ z.undefined(),
2423
+ z
2424
+ .object({
2425
+ archive: z
2426
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2427
+ .optional(),
2428
+ offline_page_url: z.union([z.undefined(), StringSchema]).optional()
2429
+ })
2430
+ .passthrough()
2431
+ ])
2432
+ .optional()
2433
+ })
2434
+ .passthrough()
2435
+ ])
2436
+ .optional(),
2437
+ phase: z
2438
+ .union([
2439
+ z.undefined(),
2440
+ z.literal('PENDING_BUILD'),
2441
+ z.literal('BUILDING'),
2442
+ z.literal('PENDING_DEPLOY'),
2443
+ z.literal('DEPLOYING'),
2444
+ z.literal('ACTIVE'),
2445
+ z.literal('SUPERSEDED'),
2446
+ z.literal('ERROR'),
2447
+ z.literal('CANCELED'),
2448
+ z.literal('UNKNOWN')
2449
+ ])
2450
+ .optional(),
2451
+ progress: z
2452
+ .union([
2453
+ z.undefined(),
2454
+ z
2455
+ .object({
2456
+ running_steps: z.union([z.undefined(), z.number()]).optional(),
2457
+ pending_steps: z.union([z.undefined(), z.number()]).optional(),
2458
+ success_steps: z.union([z.undefined(), z.number()]).optional()
2459
+ })
2460
+ .passthrough()
2461
+ ])
2462
+ .optional(),
2463
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
2464
+ updated_at: z.union([z.undefined(), StringSchema]).optional(),
2465
+ cause: z.union([z.undefined(), StringSchema]).optional()
2466
+ })
2467
+ .passthrough()
2468
+ })
2469
+ .passthrough();
2470
+ export const AppDeploymentResourceResponseSchema = z
2471
+ .object({
2472
+ app: z
2473
+ .object({
2474
+ id: StringSchema,
2475
+ spec: z
2476
+ .union([
2477
+ z.undefined(),
2478
+ z
2479
+ .object({
2480
+ name: StringSchema,
2481
+ region: z.union([z.undefined(), StringSchema]).optional(),
2482
+ envs: z
2483
+ .union([
2484
+ z.undefined(),
2485
+ z.array(z
2486
+ .object({
2487
+ key: StringSchema,
2488
+ value: z.union([z.undefined(), StringSchema]).optional(),
2489
+ scope: z
2490
+ .union([
2491
+ z.undefined(),
2492
+ z.literal('RUN_TIME'),
2493
+ z.literal('BUILD_TIME'),
2494
+ z.literal('RUN_AND_BUILD_TIME')
2495
+ ])
2496
+ .optional(),
2497
+ type: z
2498
+ .union([z.undefined(), z.literal('GENERAL'), z.literal('SECRET')])
2499
+ .optional()
2500
+ })
2501
+ .passthrough())
2502
+ ])
2503
+ .optional(),
2504
+ services: z
2505
+ .union([
2506
+ z.undefined(),
2507
+ z.array(z
2508
+ .object({
2509
+ http_port: z.union([z.undefined(), z.number()]).optional(),
2510
+ internal_ports: z.union([z.undefined(), z.array(z.number())]).optional(),
2511
+ health_check: z
2512
+ .union([
2513
+ z.undefined(),
2514
+ z
2515
+ .object({
2516
+ http_path: z.union([z.undefined(), StringSchema]).optional(),
2517
+ initial_delay_seconds: z
2518
+ .union([z.undefined(), z.number()])
2519
+ .optional(),
2520
+ period_seconds: z.union([z.undefined(), z.number()]).optional(),
2521
+ timeout_seconds: z.union([z.undefined(), z.number()]).optional(),
2522
+ success_threshold: z
2523
+ .union([z.undefined(), z.number()])
2524
+ .optional(),
2525
+ failure_threshold: z
2526
+ .union([z.undefined(), z.number()])
2527
+ .optional(),
2528
+ port: z.union([z.undefined(), z.number()]).optional()
2529
+ })
2530
+ .passthrough()
2531
+ ])
2532
+ .optional(),
2533
+ autoscaling: z
2534
+ .union([
2535
+ z.undefined(),
2536
+ z
2537
+ .object({
2538
+ min_instance_count: z.number(),
2539
+ max_instance_count: z.number(),
2540
+ metrics: z.array(z.union([
2541
+ z
2542
+ .object({
2543
+ cpu: z.object({ percent: z.number() }).passthrough()
2544
+ })
2545
+ .passthrough(),
2546
+ z
2547
+ .object({
2548
+ requests_per_second: z
2549
+ .object({ threshold: z.number() })
2550
+ .passthrough()
2551
+ })
2552
+ .passthrough(),
2553
+ z
2554
+ .object({
2555
+ latency_p95_ms: z
2556
+ .object({ threshold: z.number() })
2557
+ .passthrough()
2558
+ })
2559
+ .passthrough()
2560
+ ]))
2561
+ })
2562
+ .passthrough()
2563
+ ])
2564
+ .optional(),
2565
+ scale_to_zero: z
2566
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2567
+ .optional(),
2568
+ routes: z
2569
+ .union([
2570
+ z.undefined(),
2571
+ z.array(z
2572
+ .object({
2573
+ path: StringSchema,
2574
+ preserve_path_prefix: z
2575
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2576
+ .optional()
2577
+ })
2578
+ .passthrough())
2579
+ ])
2580
+ .optional(),
2581
+ name: StringSchema,
2582
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
2583
+ dockerfile_path: z.union([z.undefined(), StringSchema]).optional(),
2584
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
2585
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
2586
+ environment_slug: z.union([z.undefined(), StringSchema]).optional(),
2587
+ instance_size_slug: z.union([z.undefined(), StringSchema]).optional(),
2588
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
2589
+ envs: z
2590
+ .union([
2591
+ z.undefined(),
2592
+ z.array(z
2593
+ .object({
2594
+ key: StringSchema,
2595
+ value: z.union([z.undefined(), StringSchema]).optional(),
2596
+ scope: z
2597
+ .union([
2598
+ z.undefined(),
2599
+ z.literal('RUN_TIME'),
2600
+ z.literal('BUILD_TIME'),
2601
+ z.literal('RUN_AND_BUILD_TIME')
2602
+ ])
2603
+ .optional(),
2604
+ type: z
2605
+ .union([
2606
+ z.undefined(),
2607
+ z.literal('GENERAL'),
2608
+ z.literal('SECRET')
2609
+ ])
2610
+ .optional()
2611
+ })
2612
+ .passthrough())
2613
+ ])
2614
+ .optional(),
2615
+ github: z
2616
+ .union([
2617
+ z.undefined(),
2618
+ z
2619
+ .object({
2620
+ repo: StringSchema,
2621
+ branch: StringSchema,
2622
+ deploy_on_push: z
2623
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2624
+ .optional()
2625
+ })
2626
+ .passthrough()
2627
+ ])
2628
+ .optional(),
2629
+ image: z
2630
+ .union([
2631
+ z.undefined(),
2632
+ z
2633
+ .object({
2634
+ registry_type: z.union([
2635
+ z.literal('DOCR'),
2636
+ z.literal('DOCKER_HUB'),
2637
+ z.literal('GHCR')
2638
+ ]),
2639
+ registry: z.union([z.undefined(), StringSchema]).optional(),
2640
+ repository: StringSchema,
2641
+ tag: z.union([z.undefined(), StringSchema]).optional(),
2642
+ digest: z.union([z.undefined(), StringSchema]).optional()
2643
+ })
2644
+ .passthrough()
2645
+ ])
2646
+ .optional()
2647
+ })
2648
+ .passthrough())
2649
+ ])
2650
+ .optional(),
2651
+ static_sites: z
2652
+ .union([
2653
+ z.undefined(),
2654
+ z.array(z
2655
+ .object({
2656
+ name: StringSchema,
2657
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
2658
+ output_dir: z.union([z.undefined(), StringSchema]).optional(),
2659
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
2660
+ index_document: z.union([z.undefined(), StringSchema]).optional(),
2661
+ error_document: z.union([z.undefined(), StringSchema]).optional(),
2662
+ environment_slug: z.union([z.undefined(), StringSchema]).optional(),
2663
+ github: z
2664
+ .union([
2665
+ z.undefined(),
2666
+ z
2667
+ .object({
2668
+ repo: StringSchema,
2669
+ branch: StringSchema,
2670
+ deploy_on_push: z
2671
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2672
+ .optional()
2673
+ })
2674
+ .passthrough()
2675
+ ])
2676
+ .optional(),
2677
+ envs: z
2678
+ .union([
2679
+ z.undefined(),
2680
+ z.array(z
2681
+ .object({
2682
+ key: StringSchema,
2683
+ value: z.union([z.undefined(), StringSchema]).optional(),
2684
+ scope: z
2685
+ .union([
2686
+ z.undefined(),
2687
+ z.literal('RUN_TIME'),
2688
+ z.literal('BUILD_TIME'),
2689
+ z.literal('RUN_AND_BUILD_TIME')
2690
+ ])
2691
+ .optional(),
2692
+ type: z
2693
+ .union([
2694
+ z.undefined(),
2695
+ z.literal('GENERAL'),
2696
+ z.literal('SECRET')
2697
+ ])
2698
+ .optional()
2699
+ })
2700
+ .passthrough())
2701
+ ])
2702
+ .optional()
2703
+ })
2704
+ .passthrough())
2705
+ ])
2706
+ .optional(),
2707
+ workers: z
2708
+ .union([
2709
+ z.undefined(),
2710
+ z.array(z
2711
+ .object({
2712
+ autoscaling: z
2713
+ .union([
2714
+ z.undefined(),
2715
+ z
2716
+ .object({
2717
+ min_instance_count: z.number(),
2718
+ max_instance_count: z.number(),
2719
+ metrics: z.array(z.union([
2720
+ z
2721
+ .object({
2722
+ cpu: z.object({ percent: z.number() }).passthrough()
2723
+ })
2724
+ .passthrough(),
2725
+ z
2726
+ .object({
2727
+ requests_per_second: z
2728
+ .object({ threshold: z.number() })
2729
+ .passthrough()
2730
+ })
2731
+ .passthrough(),
2732
+ z
2733
+ .object({
2734
+ latency_p95_ms: z
2735
+ .object({ threshold: z.number() })
2736
+ .passthrough()
2737
+ })
2738
+ .passthrough()
2739
+ ]))
2740
+ })
2741
+ .passthrough()
2742
+ ])
2743
+ .optional(),
2744
+ name: StringSchema,
2745
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
2746
+ dockerfile_path: z.union([z.undefined(), StringSchema]).optional(),
2747
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
2748
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
2749
+ environment_slug: z.union([z.undefined(), StringSchema]).optional(),
2750
+ instance_size_slug: z.union([z.undefined(), StringSchema]).optional(),
2751
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
2752
+ envs: z
2753
+ .union([
2754
+ z.undefined(),
2755
+ z.array(z
2756
+ .object({
2757
+ key: StringSchema,
2758
+ value: z.union([z.undefined(), StringSchema]).optional(),
2759
+ scope: z
2760
+ .union([
2761
+ z.undefined(),
2762
+ z.literal('RUN_TIME'),
2763
+ z.literal('BUILD_TIME'),
2764
+ z.literal('RUN_AND_BUILD_TIME')
2765
+ ])
2766
+ .optional(),
2767
+ type: z
2768
+ .union([
2769
+ z.undefined(),
2770
+ z.literal('GENERAL'),
2771
+ z.literal('SECRET')
2772
+ ])
2773
+ .optional()
2774
+ })
2775
+ .passthrough())
2776
+ ])
2777
+ .optional(),
2778
+ github: z
2779
+ .union([
2780
+ z.undefined(),
2781
+ z
2782
+ .object({
2783
+ repo: StringSchema,
2784
+ branch: StringSchema,
2785
+ deploy_on_push: z
2786
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2787
+ .optional()
2788
+ })
2789
+ .passthrough()
2790
+ ])
2791
+ .optional(),
2792
+ image: z
2793
+ .union([
2794
+ z.undefined(),
2795
+ z
2796
+ .object({
2797
+ registry_type: z.union([
2798
+ z.literal('DOCR'),
2799
+ z.literal('DOCKER_HUB'),
2800
+ z.literal('GHCR')
2801
+ ]),
2802
+ registry: z.union([z.undefined(), StringSchema]).optional(),
2803
+ repository: StringSchema,
2804
+ tag: z.union([z.undefined(), StringSchema]).optional(),
2805
+ digest: z.union([z.undefined(), StringSchema]).optional()
2806
+ })
2807
+ .passthrough()
2808
+ ])
2809
+ .optional()
2810
+ })
2811
+ .passthrough())
2812
+ ])
2813
+ .optional(),
2814
+ jobs: z
2815
+ .union([
2816
+ z.undefined(),
2817
+ z.array(z
2818
+ .object({
2819
+ kind: z.union([
2820
+ z.literal('PRE_DEPLOY'),
2821
+ z.literal('POST_DEPLOY'),
2822
+ z.literal('FAILED_DEPLOY')
2823
+ ]),
2824
+ name: StringSchema,
2825
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
2826
+ dockerfile_path: z.union([z.undefined(), StringSchema]).optional(),
2827
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
2828
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
2829
+ environment_slug: z.union([z.undefined(), StringSchema]).optional(),
2830
+ instance_size_slug: z.union([z.undefined(), StringSchema]).optional(),
2831
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
2832
+ envs: z
2833
+ .union([
2834
+ z.undefined(),
2835
+ z.array(z
2836
+ .object({
2837
+ key: StringSchema,
2838
+ value: z.union([z.undefined(), StringSchema]).optional(),
2839
+ scope: z
2840
+ .union([
2841
+ z.undefined(),
2842
+ z.literal('RUN_TIME'),
2843
+ z.literal('BUILD_TIME'),
2844
+ z.literal('RUN_AND_BUILD_TIME')
2845
+ ])
2846
+ .optional(),
2847
+ type: z
2848
+ .union([
2849
+ z.undefined(),
2850
+ z.literal('GENERAL'),
2851
+ z.literal('SECRET')
2852
+ ])
2853
+ .optional()
2854
+ })
2855
+ .passthrough())
2856
+ ])
2857
+ .optional(),
2858
+ github: z
2859
+ .union([
2860
+ z.undefined(),
2861
+ z
2862
+ .object({
2863
+ repo: StringSchema,
2864
+ branch: StringSchema,
2865
+ deploy_on_push: z
2866
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2867
+ .optional()
2868
+ })
2869
+ .passthrough()
2870
+ ])
2871
+ .optional(),
2872
+ image: z
2873
+ .union([
2874
+ z.undefined(),
2875
+ z
2876
+ .object({
2877
+ registry_type: z.union([
2878
+ z.literal('DOCR'),
2879
+ z.literal('DOCKER_HUB'),
2880
+ z.literal('GHCR')
2881
+ ]),
2882
+ registry: z.union([z.undefined(), StringSchema]).optional(),
2883
+ repository: StringSchema,
2884
+ tag: z.union([z.undefined(), StringSchema]).optional(),
2885
+ digest: z.union([z.undefined(), StringSchema]).optional()
2886
+ })
2887
+ .passthrough()
2888
+ ])
2889
+ .optional()
2890
+ })
2891
+ .passthrough())
2892
+ ])
2893
+ .optional(),
2894
+ functions: z
2895
+ .union([
2896
+ z.undefined(),
2897
+ z.array(z
2898
+ .object({
2899
+ name: StringSchema,
2900
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
2901
+ github: z
2902
+ .union([
2903
+ z.undefined(),
2904
+ z
2905
+ .object({
2906
+ repo: StringSchema,
2907
+ branch: StringSchema,
2908
+ deploy_on_push: z
2909
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2910
+ .optional()
2911
+ })
2912
+ .passthrough()
2913
+ ])
2914
+ .optional(),
2915
+ envs: z
2916
+ .union([
2917
+ z.undefined(),
2918
+ z.array(z
2919
+ .object({
2920
+ key: StringSchema,
2921
+ value: z.union([z.undefined(), StringSchema]).optional(),
2922
+ scope: z
2923
+ .union([
2924
+ z.undefined(),
2925
+ z.literal('RUN_TIME'),
2926
+ z.literal('BUILD_TIME'),
2927
+ z.literal('RUN_AND_BUILD_TIME')
2928
+ ])
2929
+ .optional(),
2930
+ type: z
2931
+ .union([
2932
+ z.undefined(),
2933
+ z.literal('GENERAL'),
2934
+ z.literal('SECRET')
2935
+ ])
2936
+ .optional()
2937
+ })
2938
+ .passthrough())
2939
+ ])
2940
+ .optional()
2941
+ })
2942
+ .passthrough())
2943
+ ])
2944
+ .optional(),
2945
+ domains: z
2946
+ .union([
2947
+ z.undefined(),
2948
+ z.array(z
2949
+ .object({
2950
+ domain: StringSchema,
2951
+ type: z
2952
+ .union([
2953
+ z.undefined(),
2954
+ z.literal('DEFAULT'),
2955
+ z.literal('PRIMARY'),
2956
+ z.literal('ALIAS')
2957
+ ])
2958
+ .optional(),
2959
+ wildcard: z
2960
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2961
+ .optional(),
2962
+ zone: z.union([z.undefined(), StringSchema]).optional(),
2963
+ certificate_id: z.union([z.undefined(), StringSchema]).optional()
2964
+ })
2965
+ .passthrough())
2966
+ ])
2967
+ .optional(),
2968
+ alerts: z
2969
+ .union([
2970
+ z.undefined(),
2971
+ z.array(z
2972
+ .object({
2973
+ rule: StringSchema,
2974
+ disabled: z
2975
+ .union([z.undefined(), z.literal(false), z.literal(true)])
2976
+ .optional(),
2977
+ operator: z
2978
+ .union([
2979
+ z.undefined(),
2980
+ z.literal('GREATER_THAN'),
2981
+ z.literal('LESS_THAN')
2982
+ ])
2983
+ .optional(),
2984
+ value: z.union([z.undefined(), z.number()]).optional(),
2985
+ window: z
2986
+ .union([
2987
+ z.undefined(),
2988
+ z.literal('FIVE_MINUTES'),
2989
+ z.literal('TEN_MINUTES'),
2990
+ z.literal('THIRTY_MINUTES'),
2991
+ z.literal('ONE_HOUR')
2992
+ ])
2993
+ .optional(),
2994
+ emails: z.union([z.undefined(), z.array(StringSchema)]).optional(),
2995
+ slack_webhooks: z
2996
+ .union([
2997
+ z.undefined(),
2998
+ z.array(z
2999
+ .object({
3000
+ url: StringSchema,
3001
+ channel: z.union([z.undefined(), StringSchema]).optional()
3002
+ })
3003
+ .passthrough())
3004
+ ])
3005
+ .optional()
3006
+ })
3007
+ .passthrough())
3008
+ ])
3009
+ .optional(),
3010
+ log_destinations: z
3011
+ .union([
3012
+ z.undefined(),
3013
+ z.array(z.union([
3014
+ z
3015
+ .object({
3016
+ name: StringSchema,
3017
+ papertrail: z.object({ endpoint: StringSchema }).passthrough()
3018
+ })
3019
+ .passthrough(),
3020
+ z
3021
+ .object({
3022
+ name: StringSchema,
3023
+ datadog: z
3024
+ .object({
3025
+ endpoint: StringSchema,
3026
+ api_key: StringSchema
3027
+ })
3028
+ .passthrough()
3029
+ })
3030
+ .passthrough(),
3031
+ z
3032
+ .object({
3033
+ name: StringSchema,
3034
+ logtail: z.object({ token: StringSchema }).passthrough()
3035
+ })
3036
+ .passthrough(),
3037
+ z
3038
+ .object({
3039
+ name: StringSchema,
3040
+ open_search: z
3041
+ .object({
3042
+ endpoint: StringSchema,
3043
+ index_name: z.union([z.undefined(), StringSchema]).optional(),
3044
+ basic_auth: z
3045
+ .union([
3046
+ z.undefined(),
3047
+ z
3048
+ .object({
3049
+ user: z.union([z.undefined(), StringSchema]).optional(),
3050
+ password: z.union([z.undefined(), StringSchema]).optional()
3051
+ })
3052
+ .passthrough()
3053
+ ])
3054
+ .optional()
3055
+ })
3056
+ .passthrough()
3057
+ })
3058
+ .passthrough()
3059
+ ]))
3060
+ ])
3061
+ .optional(),
3062
+ features: z.union([z.undefined(), z.array(StringSchema)]).optional(),
3063
+ maintenance: z
3064
+ .union([
3065
+ z.undefined(),
3066
+ z
3067
+ .object({
3068
+ archive: z
3069
+ .union([z.undefined(), z.literal(false), z.literal(true)])
3070
+ .optional(),
3071
+ offline_page_url: z.union([z.undefined(), StringSchema]).optional()
3072
+ })
3073
+ .passthrough()
3074
+ ])
3075
+ .optional()
3076
+ })
3077
+ .passthrough()
3078
+ ])
3079
+ .optional(),
3080
+ default_ingress: z.union([z.undefined(), StringSchema]).optional(),
3081
+ live_url: z.union([z.undefined(), StringSchema]).optional(),
3082
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
3083
+ updated_at: z.union([z.undefined(), StringSchema]).optional(),
3084
+ active_deployment: z
3085
+ .union([
3086
+ z.undefined(),
3087
+ z
3088
+ .object({
3089
+ id: StringSchema,
3090
+ spec: z
3091
+ .union([
3092
+ z.undefined(),
3093
+ z
3094
+ .object({
3095
+ name: StringSchema,
3096
+ region: z.union([z.undefined(), StringSchema]).optional(),
3097
+ envs: z
3098
+ .union([
3099
+ z.undefined(),
3100
+ z.array(z
3101
+ .object({
3102
+ key: StringSchema,
3103
+ value: z.union([z.undefined(), StringSchema]).optional(),
3104
+ scope: z
3105
+ .union([
3106
+ z.undefined(),
3107
+ z.literal('RUN_TIME'),
3108
+ z.literal('BUILD_TIME'),
3109
+ z.literal('RUN_AND_BUILD_TIME')
3110
+ ])
3111
+ .optional(),
3112
+ type: z
3113
+ .union([
3114
+ z.undefined(),
3115
+ z.literal('GENERAL'),
3116
+ z.literal('SECRET')
3117
+ ])
3118
+ .optional()
3119
+ })
3120
+ .passthrough())
3121
+ ])
3122
+ .optional(),
3123
+ services: z
3124
+ .union([
3125
+ z.undefined(),
3126
+ z.array(z
3127
+ .object({
3128
+ http_port: z.union([z.undefined(), z.number()]).optional(),
3129
+ internal_ports: z
3130
+ .union([z.undefined(), z.array(z.number())])
3131
+ .optional(),
3132
+ health_check: z
3133
+ .union([
3134
+ z.undefined(),
3135
+ z
3136
+ .object({
3137
+ http_path: z
3138
+ .union([z.undefined(), StringSchema])
3139
+ .optional(),
3140
+ initial_delay_seconds: z
3141
+ .union([z.undefined(), z.number()])
3142
+ .optional(),
3143
+ period_seconds: z
3144
+ .union([z.undefined(), z.number()])
3145
+ .optional(),
3146
+ timeout_seconds: z
3147
+ .union([z.undefined(), z.number()])
3148
+ .optional(),
3149
+ success_threshold: z
3150
+ .union([z.undefined(), z.number()])
3151
+ .optional(),
3152
+ failure_threshold: z
3153
+ .union([z.undefined(), z.number()])
3154
+ .optional(),
3155
+ port: z.union([z.undefined(), z.number()]).optional()
3156
+ })
3157
+ .passthrough()
3158
+ ])
3159
+ .optional(),
3160
+ autoscaling: z
3161
+ .union([
3162
+ z.undefined(),
3163
+ z
3164
+ .object({
3165
+ min_instance_count: z.number(),
3166
+ max_instance_count: z.number(),
3167
+ metrics: z.array(z.union([
3168
+ z
3169
+ .object({
3170
+ cpu: z
3171
+ .object({ percent: z.number() })
3172
+ .passthrough()
3173
+ })
3174
+ .passthrough(),
3175
+ z
3176
+ .object({
3177
+ requests_per_second: z
3178
+ .object({ threshold: z.number() })
3179
+ .passthrough()
3180
+ })
3181
+ .passthrough(),
3182
+ z
3183
+ .object({
3184
+ latency_p95_ms: z
3185
+ .object({ threshold: z.number() })
3186
+ .passthrough()
3187
+ })
3188
+ .passthrough()
3189
+ ]))
3190
+ })
3191
+ .passthrough()
3192
+ ])
3193
+ .optional(),
3194
+ scale_to_zero: z
3195
+ .union([z.undefined(), z.literal(false), z.literal(true)])
3196
+ .optional(),
3197
+ routes: z
3198
+ .union([
3199
+ z.undefined(),
3200
+ z.array(z
3201
+ .object({
3202
+ path: StringSchema,
3203
+ preserve_path_prefix: z
3204
+ .union([
3205
+ z.undefined(),
3206
+ z.literal(false),
3207
+ z.literal(true)
3208
+ ])
3209
+ .optional()
3210
+ })
3211
+ .passthrough())
3212
+ ])
3213
+ .optional(),
3214
+ name: StringSchema,
3215
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
3216
+ dockerfile_path: z
3217
+ .union([z.undefined(), StringSchema])
3218
+ .optional(),
3219
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
3220
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
3221
+ environment_slug: z
3222
+ .union([z.undefined(), StringSchema])
3223
+ .optional(),
3224
+ instance_size_slug: z
3225
+ .union([z.undefined(), StringSchema])
3226
+ .optional(),
3227
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
3228
+ envs: z
3229
+ .union([
3230
+ z.undefined(),
3231
+ z.array(z
3232
+ .object({
3233
+ key: StringSchema,
3234
+ value: z
3235
+ .union([z.undefined(), StringSchema])
3236
+ .optional(),
3237
+ scope: z
3238
+ .union([
3239
+ z.undefined(),
3240
+ z.literal('RUN_TIME'),
3241
+ z.literal('BUILD_TIME'),
3242
+ z.literal('RUN_AND_BUILD_TIME')
3243
+ ])
3244
+ .optional(),
3245
+ type: z
3246
+ .union([
3247
+ z.undefined(),
3248
+ z.literal('GENERAL'),
3249
+ z.literal('SECRET')
3250
+ ])
3251
+ .optional()
3252
+ })
3253
+ .passthrough())
3254
+ ])
3255
+ .optional(),
3256
+ github: z
3257
+ .union([
3258
+ z.undefined(),
3259
+ z
3260
+ .object({
3261
+ repo: StringSchema,
3262
+ branch: StringSchema,
3263
+ deploy_on_push: z
3264
+ .union([
3265
+ z.undefined(),
3266
+ z.literal(false),
3267
+ z.literal(true)
3268
+ ])
3269
+ .optional()
3270
+ })
3271
+ .passthrough()
3272
+ ])
3273
+ .optional(),
3274
+ image: z
3275
+ .union([
3276
+ z.undefined(),
3277
+ z
3278
+ .object({
3279
+ registry_type: z.union([
3280
+ z.literal('DOCR'),
3281
+ z.literal('DOCKER_HUB'),
3282
+ z.literal('GHCR')
3283
+ ]),
3284
+ registry: z
3285
+ .union([z.undefined(), StringSchema])
3286
+ .optional(),
3287
+ repository: StringSchema,
3288
+ tag: z.union([z.undefined(), StringSchema]).optional(),
3289
+ digest: z.union([z.undefined(), StringSchema]).optional()
3290
+ })
3291
+ .passthrough()
3292
+ ])
3293
+ .optional()
3294
+ })
3295
+ .passthrough())
3296
+ ])
3297
+ .optional(),
3298
+ static_sites: z
3299
+ .union([
3300
+ z.undefined(),
3301
+ z.array(z
3302
+ .object({
3303
+ name: StringSchema,
3304
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
3305
+ output_dir: z.union([z.undefined(), StringSchema]).optional(),
3306
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
3307
+ index_document: z.union([z.undefined(), StringSchema]).optional(),
3308
+ error_document: z.union([z.undefined(), StringSchema]).optional(),
3309
+ environment_slug: z
3310
+ .union([z.undefined(), StringSchema])
3311
+ .optional(),
3312
+ github: z
3313
+ .union([
3314
+ z.undefined(),
3315
+ z
3316
+ .object({
3317
+ repo: StringSchema,
3318
+ branch: StringSchema,
3319
+ deploy_on_push: z
3320
+ .union([
3321
+ z.undefined(),
3322
+ z.literal(false),
3323
+ z.literal(true)
3324
+ ])
3325
+ .optional()
3326
+ })
3327
+ .passthrough()
3328
+ ])
3329
+ .optional(),
3330
+ envs: z
3331
+ .union([
3332
+ z.undefined(),
3333
+ z.array(z
3334
+ .object({
3335
+ key: StringSchema,
3336
+ value: z
3337
+ .union([z.undefined(), StringSchema])
3338
+ .optional(),
3339
+ scope: z
3340
+ .union([
3341
+ z.undefined(),
3342
+ z.literal('RUN_TIME'),
3343
+ z.literal('BUILD_TIME'),
3344
+ z.literal('RUN_AND_BUILD_TIME')
3345
+ ])
3346
+ .optional(),
3347
+ type: z
3348
+ .union([
3349
+ z.undefined(),
3350
+ z.literal('GENERAL'),
3351
+ z.literal('SECRET')
3352
+ ])
3353
+ .optional()
3354
+ })
3355
+ .passthrough())
3356
+ ])
3357
+ .optional()
3358
+ })
3359
+ .passthrough())
3360
+ ])
3361
+ .optional(),
3362
+ workers: z
3363
+ .union([
3364
+ z.undefined(),
3365
+ z.array(z
3366
+ .object({
3367
+ autoscaling: z
3368
+ .union([
3369
+ z.undefined(),
3370
+ z
3371
+ .object({
3372
+ min_instance_count: z.number(),
3373
+ max_instance_count: z.number(),
3374
+ metrics: z.array(z.union([
3375
+ z
3376
+ .object({
3377
+ cpu: z
3378
+ .object({ percent: z.number() })
3379
+ .passthrough()
3380
+ })
3381
+ .passthrough(),
3382
+ z
3383
+ .object({
3384
+ requests_per_second: z
3385
+ .object({ threshold: z.number() })
3386
+ .passthrough()
3387
+ })
3388
+ .passthrough(),
3389
+ z
3390
+ .object({
3391
+ latency_p95_ms: z
3392
+ .object({ threshold: z.number() })
3393
+ .passthrough()
3394
+ })
3395
+ .passthrough()
3396
+ ]))
3397
+ })
3398
+ .passthrough()
3399
+ ])
3400
+ .optional(),
3401
+ name: StringSchema,
3402
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
3403
+ dockerfile_path: z
3404
+ .union([z.undefined(), StringSchema])
3405
+ .optional(),
3406
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
3407
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
3408
+ environment_slug: z
3409
+ .union([z.undefined(), StringSchema])
3410
+ .optional(),
3411
+ instance_size_slug: z
3412
+ .union([z.undefined(), StringSchema])
3413
+ .optional(),
3414
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
3415
+ envs: z
3416
+ .union([
3417
+ z.undefined(),
3418
+ z.array(z
3419
+ .object({
3420
+ key: StringSchema,
3421
+ value: z
3422
+ .union([z.undefined(), StringSchema])
3423
+ .optional(),
3424
+ scope: z
3425
+ .union([
3426
+ z.undefined(),
3427
+ z.literal('RUN_TIME'),
3428
+ z.literal('BUILD_TIME'),
3429
+ z.literal('RUN_AND_BUILD_TIME')
3430
+ ])
3431
+ .optional(),
3432
+ type: z
3433
+ .union([
3434
+ z.undefined(),
3435
+ z.literal('GENERAL'),
3436
+ z.literal('SECRET')
3437
+ ])
3438
+ .optional()
3439
+ })
3440
+ .passthrough())
3441
+ ])
3442
+ .optional(),
3443
+ github: z
3444
+ .union([
3445
+ z.undefined(),
3446
+ z
3447
+ .object({
3448
+ repo: StringSchema,
3449
+ branch: StringSchema,
3450
+ deploy_on_push: z
3451
+ .union([
3452
+ z.undefined(),
3453
+ z.literal(false),
3454
+ z.literal(true)
3455
+ ])
3456
+ .optional()
3457
+ })
3458
+ .passthrough()
3459
+ ])
3460
+ .optional(),
3461
+ image: z
3462
+ .union([
3463
+ z.undefined(),
3464
+ z
3465
+ .object({
3466
+ registry_type: z.union([
3467
+ z.literal('DOCR'),
3468
+ z.literal('DOCKER_HUB'),
3469
+ z.literal('GHCR')
3470
+ ]),
3471
+ registry: z
3472
+ .union([z.undefined(), StringSchema])
3473
+ .optional(),
3474
+ repository: StringSchema,
3475
+ tag: z.union([z.undefined(), StringSchema]).optional(),
3476
+ digest: z.union([z.undefined(), StringSchema]).optional()
3477
+ })
3478
+ .passthrough()
3479
+ ])
3480
+ .optional()
3481
+ })
3482
+ .passthrough())
3483
+ ])
3484
+ .optional(),
3485
+ jobs: z
3486
+ .union([
3487
+ z.undefined(),
3488
+ z.array(z
3489
+ .object({
3490
+ kind: z.union([
3491
+ z.literal('PRE_DEPLOY'),
3492
+ z.literal('POST_DEPLOY'),
3493
+ z.literal('FAILED_DEPLOY')
3494
+ ]),
3495
+ name: StringSchema,
3496
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
3497
+ dockerfile_path: z
3498
+ .union([z.undefined(), StringSchema])
3499
+ .optional(),
3500
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
3501
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
3502
+ environment_slug: z
3503
+ .union([z.undefined(), StringSchema])
3504
+ .optional(),
3505
+ instance_size_slug: z
3506
+ .union([z.undefined(), StringSchema])
3507
+ .optional(),
3508
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
3509
+ envs: z
3510
+ .union([
3511
+ z.undefined(),
3512
+ z.array(z
3513
+ .object({
3514
+ key: StringSchema,
3515
+ value: z
3516
+ .union([z.undefined(), StringSchema])
3517
+ .optional(),
3518
+ scope: z
3519
+ .union([
3520
+ z.undefined(),
3521
+ z.literal('RUN_TIME'),
3522
+ z.literal('BUILD_TIME'),
3523
+ z.literal('RUN_AND_BUILD_TIME')
3524
+ ])
3525
+ .optional(),
3526
+ type: z
3527
+ .union([
3528
+ z.undefined(),
3529
+ z.literal('GENERAL'),
3530
+ z.literal('SECRET')
3531
+ ])
3532
+ .optional()
3533
+ })
3534
+ .passthrough())
3535
+ ])
3536
+ .optional(),
3537
+ github: z
3538
+ .union([
3539
+ z.undefined(),
3540
+ z
3541
+ .object({
3542
+ repo: StringSchema,
3543
+ branch: StringSchema,
3544
+ deploy_on_push: z
3545
+ .union([
3546
+ z.undefined(),
3547
+ z.literal(false),
3548
+ z.literal(true)
3549
+ ])
3550
+ .optional()
3551
+ })
3552
+ .passthrough()
3553
+ ])
3554
+ .optional(),
3555
+ image: z
3556
+ .union([
3557
+ z.undefined(),
3558
+ z
3559
+ .object({
3560
+ registry_type: z.union([
3561
+ z.literal('DOCR'),
3562
+ z.literal('DOCKER_HUB'),
3563
+ z.literal('GHCR')
3564
+ ]),
3565
+ registry: z
3566
+ .union([z.undefined(), StringSchema])
3567
+ .optional(),
3568
+ repository: StringSchema,
3569
+ tag: z.union([z.undefined(), StringSchema]).optional(),
3570
+ digest: z.union([z.undefined(), StringSchema]).optional()
3571
+ })
3572
+ .passthrough()
3573
+ ])
3574
+ .optional()
3575
+ })
3576
+ .passthrough())
3577
+ ])
3578
+ .optional(),
3579
+ functions: z
3580
+ .union([
3581
+ z.undefined(),
3582
+ z.array(z
3583
+ .object({
3584
+ name: StringSchema,
3585
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
3586
+ github: z
3587
+ .union([
3588
+ z.undefined(),
3589
+ z
3590
+ .object({
3591
+ repo: StringSchema,
3592
+ branch: StringSchema,
3593
+ deploy_on_push: z
3594
+ .union([
3595
+ z.undefined(),
3596
+ z.literal(false),
3597
+ z.literal(true)
3598
+ ])
3599
+ .optional()
3600
+ })
3601
+ .passthrough()
3602
+ ])
3603
+ .optional(),
3604
+ envs: z
3605
+ .union([
3606
+ z.undefined(),
3607
+ z.array(z
3608
+ .object({
3609
+ key: StringSchema,
3610
+ value: z
3611
+ .union([z.undefined(), StringSchema])
3612
+ .optional(),
3613
+ scope: z
3614
+ .union([
3615
+ z.undefined(),
3616
+ z.literal('RUN_TIME'),
3617
+ z.literal('BUILD_TIME'),
3618
+ z.literal('RUN_AND_BUILD_TIME')
3619
+ ])
3620
+ .optional(),
3621
+ type: z
3622
+ .union([
3623
+ z.undefined(),
3624
+ z.literal('GENERAL'),
3625
+ z.literal('SECRET')
3626
+ ])
3627
+ .optional()
3628
+ })
3629
+ .passthrough())
3630
+ ])
3631
+ .optional()
3632
+ })
3633
+ .passthrough())
3634
+ ])
3635
+ .optional(),
3636
+ domains: z
3637
+ .union([
3638
+ z.undefined(),
3639
+ z.array(z
3640
+ .object({
3641
+ domain: StringSchema,
3642
+ type: z
3643
+ .union([
3644
+ z.undefined(),
3645
+ z.literal('DEFAULT'),
3646
+ z.literal('PRIMARY'),
3647
+ z.literal('ALIAS')
3648
+ ])
3649
+ .optional(),
3650
+ wildcard: z
3651
+ .union([z.undefined(), z.literal(false), z.literal(true)])
3652
+ .optional(),
3653
+ zone: z.union([z.undefined(), StringSchema]).optional(),
3654
+ certificate_id: z.union([z.undefined(), StringSchema]).optional()
3655
+ })
3656
+ .passthrough())
3657
+ ])
3658
+ .optional(),
3659
+ alerts: z
3660
+ .union([
3661
+ z.undefined(),
3662
+ z.array(z
3663
+ .object({
3664
+ rule: StringSchema,
3665
+ disabled: z
3666
+ .union([z.undefined(), z.literal(false), z.literal(true)])
3667
+ .optional(),
3668
+ operator: z
3669
+ .union([
3670
+ z.undefined(),
3671
+ z.literal('GREATER_THAN'),
3672
+ z.literal('LESS_THAN')
3673
+ ])
3674
+ .optional(),
3675
+ value: z.union([z.undefined(), z.number()]).optional(),
3676
+ window: z
3677
+ .union([
3678
+ z.undefined(),
3679
+ z.literal('FIVE_MINUTES'),
3680
+ z.literal('TEN_MINUTES'),
3681
+ z.literal('THIRTY_MINUTES'),
3682
+ z.literal('ONE_HOUR')
3683
+ ])
3684
+ .optional(),
3685
+ emails: z
3686
+ .union([z.undefined(), z.array(StringSchema)])
3687
+ .optional(),
3688
+ slack_webhooks: z
3689
+ .union([
3690
+ z.undefined(),
3691
+ z.array(z
3692
+ .object({
3693
+ url: StringSchema,
3694
+ channel: z
3695
+ .union([z.undefined(), StringSchema])
3696
+ .optional()
3697
+ })
3698
+ .passthrough())
3699
+ ])
3700
+ .optional()
3701
+ })
3702
+ .passthrough())
3703
+ ])
3704
+ .optional(),
3705
+ log_destinations: z
3706
+ .union([
3707
+ z.undefined(),
3708
+ z.array(z.union([
3709
+ z
3710
+ .object({
3711
+ name: StringSchema,
3712
+ papertrail: z.object({ endpoint: StringSchema }).passthrough()
3713
+ })
3714
+ .passthrough(),
3715
+ z
3716
+ .object({
3717
+ name: StringSchema,
3718
+ datadog: z
3719
+ .object({
3720
+ endpoint: StringSchema,
3721
+ api_key: StringSchema
3722
+ })
3723
+ .passthrough()
3724
+ })
3725
+ .passthrough(),
3726
+ z
3727
+ .object({
3728
+ name: StringSchema,
3729
+ logtail: z.object({ token: StringSchema }).passthrough()
3730
+ })
3731
+ .passthrough(),
3732
+ z
3733
+ .object({
3734
+ name: StringSchema,
3735
+ open_search: z
3736
+ .object({
3737
+ endpoint: StringSchema,
3738
+ index_name: z
3739
+ .union([z.undefined(), StringSchema])
3740
+ .optional(),
3741
+ basic_auth: z
3742
+ .union([
3743
+ z.undefined(),
3744
+ z
3745
+ .object({
3746
+ user: z
3747
+ .union([z.undefined(), StringSchema])
3748
+ .optional(),
3749
+ password: z
3750
+ .union([z.undefined(), StringSchema])
3751
+ .optional()
3752
+ })
3753
+ .passthrough()
3754
+ ])
3755
+ .optional()
3756
+ })
3757
+ .passthrough()
3758
+ })
3759
+ .passthrough()
3760
+ ]))
3761
+ ])
3762
+ .optional(),
3763
+ features: z.union([z.undefined(), z.array(StringSchema)]).optional(),
3764
+ maintenance: z
3765
+ .union([
3766
+ z.undefined(),
3767
+ z
3768
+ .object({
3769
+ archive: z
3770
+ .union([z.undefined(), z.literal(false), z.literal(true)])
3771
+ .optional(),
3772
+ offline_page_url: z.union([z.undefined(), StringSchema]).optional()
3773
+ })
3774
+ .passthrough()
3775
+ ])
3776
+ .optional()
3777
+ })
3778
+ .passthrough()
3779
+ ])
3780
+ .optional(),
3781
+ phase: z
3782
+ .union([
3783
+ z.undefined(),
3784
+ z.literal('PENDING_BUILD'),
3785
+ z.literal('BUILDING'),
3786
+ z.literal('PENDING_DEPLOY'),
3787
+ z.literal('DEPLOYING'),
3788
+ z.literal('ACTIVE'),
3789
+ z.literal('SUPERSEDED'),
3790
+ z.literal('ERROR'),
3791
+ z.literal('CANCELED'),
3792
+ z.literal('UNKNOWN')
3793
+ ])
3794
+ .optional(),
3795
+ progress: z
3796
+ .union([
3797
+ z.undefined(),
3798
+ z
3799
+ .object({
3800
+ running_steps: z.union([z.undefined(), z.number()]).optional(),
3801
+ pending_steps: z.union([z.undefined(), z.number()]).optional(),
3802
+ success_steps: z.union([z.undefined(), z.number()]).optional()
3803
+ })
3804
+ .passthrough()
3805
+ ])
3806
+ .optional(),
3807
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
3808
+ updated_at: z.union([z.undefined(), StringSchema]).optional(),
3809
+ cause: z.union([z.undefined(), StringSchema]).optional()
3810
+ })
3811
+ .passthrough()
3812
+ ])
3813
+ .optional(),
3814
+ in_progress_deployment: z
3815
+ .union([
3816
+ z.undefined(),
3817
+ z
3818
+ .object({
3819
+ id: StringSchema,
3820
+ spec: z
3821
+ .union([
3822
+ z.undefined(),
3823
+ z
3824
+ .object({
3825
+ name: StringSchema,
3826
+ region: z.union([z.undefined(), StringSchema]).optional(),
3827
+ envs: z
3828
+ .union([
3829
+ z.undefined(),
3830
+ z.array(z
3831
+ .object({
3832
+ key: StringSchema,
3833
+ value: z.union([z.undefined(), StringSchema]).optional(),
3834
+ scope: z
3835
+ .union([
3836
+ z.undefined(),
3837
+ z.literal('RUN_TIME'),
3838
+ z.literal('BUILD_TIME'),
3839
+ z.literal('RUN_AND_BUILD_TIME')
3840
+ ])
3841
+ .optional(),
3842
+ type: z
3843
+ .union([
3844
+ z.undefined(),
3845
+ z.literal('GENERAL'),
3846
+ z.literal('SECRET')
3847
+ ])
3848
+ .optional()
3849
+ })
3850
+ .passthrough())
3851
+ ])
3852
+ .optional(),
3853
+ services: z
3854
+ .union([
3855
+ z.undefined(),
3856
+ z.array(z
3857
+ .object({
3858
+ http_port: z.union([z.undefined(), z.number()]).optional(),
3859
+ internal_ports: z
3860
+ .union([z.undefined(), z.array(z.number())])
3861
+ .optional(),
3862
+ health_check: z
3863
+ .union([
3864
+ z.undefined(),
3865
+ z
3866
+ .object({
3867
+ http_path: z
3868
+ .union([z.undefined(), StringSchema])
3869
+ .optional(),
3870
+ initial_delay_seconds: z
3871
+ .union([z.undefined(), z.number()])
3872
+ .optional(),
3873
+ period_seconds: z
3874
+ .union([z.undefined(), z.number()])
3875
+ .optional(),
3876
+ timeout_seconds: z
3877
+ .union([z.undefined(), z.number()])
3878
+ .optional(),
3879
+ success_threshold: z
3880
+ .union([z.undefined(), z.number()])
3881
+ .optional(),
3882
+ failure_threshold: z
3883
+ .union([z.undefined(), z.number()])
3884
+ .optional(),
3885
+ port: z.union([z.undefined(), z.number()]).optional()
3886
+ })
3887
+ .passthrough()
3888
+ ])
3889
+ .optional(),
3890
+ autoscaling: z
3891
+ .union([
3892
+ z.undefined(),
3893
+ z
3894
+ .object({
3895
+ min_instance_count: z.number(),
3896
+ max_instance_count: z.number(),
3897
+ metrics: z.array(z.union([
3898
+ z
3899
+ .object({
3900
+ cpu: z
3901
+ .object({ percent: z.number() })
3902
+ .passthrough()
3903
+ })
3904
+ .passthrough(),
3905
+ z
3906
+ .object({
3907
+ requests_per_second: z
3908
+ .object({ threshold: z.number() })
3909
+ .passthrough()
3910
+ })
3911
+ .passthrough(),
3912
+ z
3913
+ .object({
3914
+ latency_p95_ms: z
3915
+ .object({ threshold: z.number() })
3916
+ .passthrough()
3917
+ })
3918
+ .passthrough()
3919
+ ]))
3920
+ })
3921
+ .passthrough()
3922
+ ])
3923
+ .optional(),
3924
+ scale_to_zero: z
3925
+ .union([z.undefined(), z.literal(false), z.literal(true)])
3926
+ .optional(),
3927
+ routes: z
3928
+ .union([
3929
+ z.undefined(),
3930
+ z.array(z
3931
+ .object({
3932
+ path: StringSchema,
3933
+ preserve_path_prefix: z
3934
+ .union([
3935
+ z.undefined(),
3936
+ z.literal(false),
3937
+ z.literal(true)
3938
+ ])
3939
+ .optional()
3940
+ })
3941
+ .passthrough())
3942
+ ])
3943
+ .optional(),
3944
+ name: StringSchema,
3945
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
3946
+ dockerfile_path: z
3947
+ .union([z.undefined(), StringSchema])
3948
+ .optional(),
3949
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
3950
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
3951
+ environment_slug: z
3952
+ .union([z.undefined(), StringSchema])
3953
+ .optional(),
3954
+ instance_size_slug: z
3955
+ .union([z.undefined(), StringSchema])
3956
+ .optional(),
3957
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
3958
+ envs: z
3959
+ .union([
3960
+ z.undefined(),
3961
+ z.array(z
3962
+ .object({
3963
+ key: StringSchema,
3964
+ value: z
3965
+ .union([z.undefined(), StringSchema])
3966
+ .optional(),
3967
+ scope: z
3968
+ .union([
3969
+ z.undefined(),
3970
+ z.literal('RUN_TIME'),
3971
+ z.literal('BUILD_TIME'),
3972
+ z.literal('RUN_AND_BUILD_TIME')
3973
+ ])
3974
+ .optional(),
3975
+ type: z
3976
+ .union([
3977
+ z.undefined(),
3978
+ z.literal('GENERAL'),
3979
+ z.literal('SECRET')
3980
+ ])
3981
+ .optional()
3982
+ })
3983
+ .passthrough())
3984
+ ])
3985
+ .optional(),
3986
+ github: z
3987
+ .union([
3988
+ z.undefined(),
3989
+ z
3990
+ .object({
3991
+ repo: StringSchema,
3992
+ branch: StringSchema,
3993
+ deploy_on_push: z
3994
+ .union([
3995
+ z.undefined(),
3996
+ z.literal(false),
3997
+ z.literal(true)
3998
+ ])
3999
+ .optional()
4000
+ })
4001
+ .passthrough()
4002
+ ])
4003
+ .optional(),
4004
+ image: z
4005
+ .union([
4006
+ z.undefined(),
4007
+ z
4008
+ .object({
4009
+ registry_type: z.union([
4010
+ z.literal('DOCR'),
4011
+ z.literal('DOCKER_HUB'),
4012
+ z.literal('GHCR')
4013
+ ]),
4014
+ registry: z
4015
+ .union([z.undefined(), StringSchema])
4016
+ .optional(),
4017
+ repository: StringSchema,
4018
+ tag: z.union([z.undefined(), StringSchema]).optional(),
4019
+ digest: z.union([z.undefined(), StringSchema]).optional()
4020
+ })
4021
+ .passthrough()
4022
+ ])
4023
+ .optional()
4024
+ })
4025
+ .passthrough())
4026
+ ])
4027
+ .optional(),
4028
+ static_sites: z
4029
+ .union([
4030
+ z.undefined(),
4031
+ z.array(z
4032
+ .object({
4033
+ name: StringSchema,
4034
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
4035
+ output_dir: z.union([z.undefined(), StringSchema]).optional(),
4036
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
4037
+ index_document: z.union([z.undefined(), StringSchema]).optional(),
4038
+ error_document: z.union([z.undefined(), StringSchema]).optional(),
4039
+ environment_slug: z
4040
+ .union([z.undefined(), StringSchema])
4041
+ .optional(),
4042
+ github: z
4043
+ .union([
4044
+ z.undefined(),
4045
+ z
4046
+ .object({
4047
+ repo: StringSchema,
4048
+ branch: StringSchema,
4049
+ deploy_on_push: z
4050
+ .union([
4051
+ z.undefined(),
4052
+ z.literal(false),
4053
+ z.literal(true)
4054
+ ])
4055
+ .optional()
4056
+ })
4057
+ .passthrough()
4058
+ ])
4059
+ .optional(),
4060
+ envs: z
4061
+ .union([
4062
+ z.undefined(),
4063
+ z.array(z
4064
+ .object({
4065
+ key: StringSchema,
4066
+ value: z
4067
+ .union([z.undefined(), StringSchema])
4068
+ .optional(),
4069
+ scope: z
4070
+ .union([
4071
+ z.undefined(),
4072
+ z.literal('RUN_TIME'),
4073
+ z.literal('BUILD_TIME'),
4074
+ z.literal('RUN_AND_BUILD_TIME')
4075
+ ])
4076
+ .optional(),
4077
+ type: z
4078
+ .union([
4079
+ z.undefined(),
4080
+ z.literal('GENERAL'),
4081
+ z.literal('SECRET')
4082
+ ])
4083
+ .optional()
4084
+ })
4085
+ .passthrough())
4086
+ ])
4087
+ .optional()
4088
+ })
4089
+ .passthrough())
4090
+ ])
4091
+ .optional(),
4092
+ workers: z
4093
+ .union([
4094
+ z.undefined(),
4095
+ z.array(z
4096
+ .object({
4097
+ autoscaling: z
4098
+ .union([
4099
+ z.undefined(),
4100
+ z
4101
+ .object({
4102
+ min_instance_count: z.number(),
4103
+ max_instance_count: z.number(),
4104
+ metrics: z.array(z.union([
4105
+ z
4106
+ .object({
4107
+ cpu: z
4108
+ .object({ percent: z.number() })
4109
+ .passthrough()
4110
+ })
4111
+ .passthrough(),
4112
+ z
4113
+ .object({
4114
+ requests_per_second: z
4115
+ .object({ threshold: z.number() })
4116
+ .passthrough()
4117
+ })
4118
+ .passthrough(),
4119
+ z
4120
+ .object({
4121
+ latency_p95_ms: z
4122
+ .object({ threshold: z.number() })
4123
+ .passthrough()
4124
+ })
4125
+ .passthrough()
4126
+ ]))
4127
+ })
4128
+ .passthrough()
4129
+ ])
4130
+ .optional(),
4131
+ name: StringSchema,
4132
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
4133
+ dockerfile_path: z
4134
+ .union([z.undefined(), StringSchema])
4135
+ .optional(),
4136
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
4137
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
4138
+ environment_slug: z
4139
+ .union([z.undefined(), StringSchema])
4140
+ .optional(),
4141
+ instance_size_slug: z
4142
+ .union([z.undefined(), StringSchema])
4143
+ .optional(),
4144
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
4145
+ envs: z
4146
+ .union([
4147
+ z.undefined(),
4148
+ z.array(z
4149
+ .object({
4150
+ key: StringSchema,
4151
+ value: z
4152
+ .union([z.undefined(), StringSchema])
4153
+ .optional(),
4154
+ scope: z
4155
+ .union([
4156
+ z.undefined(),
4157
+ z.literal('RUN_TIME'),
4158
+ z.literal('BUILD_TIME'),
4159
+ z.literal('RUN_AND_BUILD_TIME')
4160
+ ])
4161
+ .optional(),
4162
+ type: z
4163
+ .union([
4164
+ z.undefined(),
4165
+ z.literal('GENERAL'),
4166
+ z.literal('SECRET')
4167
+ ])
4168
+ .optional()
4169
+ })
4170
+ .passthrough())
4171
+ ])
4172
+ .optional(),
4173
+ github: z
4174
+ .union([
4175
+ z.undefined(),
4176
+ z
4177
+ .object({
4178
+ repo: StringSchema,
4179
+ branch: StringSchema,
4180
+ deploy_on_push: z
4181
+ .union([
4182
+ z.undefined(),
4183
+ z.literal(false),
4184
+ z.literal(true)
4185
+ ])
4186
+ .optional()
4187
+ })
4188
+ .passthrough()
4189
+ ])
4190
+ .optional(),
4191
+ image: z
4192
+ .union([
4193
+ z.undefined(),
4194
+ z
4195
+ .object({
4196
+ registry_type: z.union([
4197
+ z.literal('DOCR'),
4198
+ z.literal('DOCKER_HUB'),
4199
+ z.literal('GHCR')
4200
+ ]),
4201
+ registry: z
4202
+ .union([z.undefined(), StringSchema])
4203
+ .optional(),
4204
+ repository: StringSchema,
4205
+ tag: z.union([z.undefined(), StringSchema]).optional(),
4206
+ digest: z.union([z.undefined(), StringSchema]).optional()
4207
+ })
4208
+ .passthrough()
4209
+ ])
4210
+ .optional()
4211
+ })
4212
+ .passthrough())
4213
+ ])
4214
+ .optional(),
4215
+ jobs: z
4216
+ .union([
4217
+ z.undefined(),
4218
+ z.array(z
4219
+ .object({
4220
+ kind: z.union([
4221
+ z.literal('PRE_DEPLOY'),
4222
+ z.literal('POST_DEPLOY'),
4223
+ z.literal('FAILED_DEPLOY')
4224
+ ]),
4225
+ name: StringSchema,
4226
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
4227
+ dockerfile_path: z
4228
+ .union([z.undefined(), StringSchema])
4229
+ .optional(),
4230
+ build_command: z.union([z.undefined(), StringSchema]).optional(),
4231
+ run_command: z.union([z.undefined(), StringSchema]).optional(),
4232
+ environment_slug: z
4233
+ .union([z.undefined(), StringSchema])
4234
+ .optional(),
4235
+ instance_size_slug: z
4236
+ .union([z.undefined(), StringSchema])
4237
+ .optional(),
4238
+ instance_count: z.union([z.undefined(), z.number()]).optional(),
4239
+ envs: z
4240
+ .union([
4241
+ z.undefined(),
4242
+ z.array(z
4243
+ .object({
4244
+ key: StringSchema,
4245
+ value: z
4246
+ .union([z.undefined(), StringSchema])
4247
+ .optional(),
4248
+ scope: z
4249
+ .union([
4250
+ z.undefined(),
4251
+ z.literal('RUN_TIME'),
4252
+ z.literal('BUILD_TIME'),
4253
+ z.literal('RUN_AND_BUILD_TIME')
4254
+ ])
4255
+ .optional(),
4256
+ type: z
4257
+ .union([
4258
+ z.undefined(),
4259
+ z.literal('GENERAL'),
4260
+ z.literal('SECRET')
4261
+ ])
4262
+ .optional()
4263
+ })
4264
+ .passthrough())
4265
+ ])
4266
+ .optional(),
4267
+ github: z
4268
+ .union([
4269
+ z.undefined(),
4270
+ z
4271
+ .object({
4272
+ repo: StringSchema,
4273
+ branch: StringSchema,
4274
+ deploy_on_push: z
4275
+ .union([
4276
+ z.undefined(),
4277
+ z.literal(false),
4278
+ z.literal(true)
4279
+ ])
4280
+ .optional()
4281
+ })
4282
+ .passthrough()
4283
+ ])
4284
+ .optional(),
4285
+ image: z
4286
+ .union([
4287
+ z.undefined(),
4288
+ z
4289
+ .object({
4290
+ registry_type: z.union([
4291
+ z.literal('DOCR'),
4292
+ z.literal('DOCKER_HUB'),
4293
+ z.literal('GHCR')
4294
+ ]),
4295
+ registry: z
4296
+ .union([z.undefined(), StringSchema])
4297
+ .optional(),
4298
+ repository: StringSchema,
4299
+ tag: z.union([z.undefined(), StringSchema]).optional(),
4300
+ digest: z.union([z.undefined(), StringSchema]).optional()
4301
+ })
4302
+ .passthrough()
4303
+ ])
4304
+ .optional()
4305
+ })
4306
+ .passthrough())
4307
+ ])
4308
+ .optional(),
4309
+ functions: z
4310
+ .union([
4311
+ z.undefined(),
4312
+ z.array(z
4313
+ .object({
4314
+ name: StringSchema,
4315
+ source_dir: z.union([z.undefined(), StringSchema]).optional(),
4316
+ github: z
4317
+ .union([
4318
+ z.undefined(),
4319
+ z
4320
+ .object({
4321
+ repo: StringSchema,
4322
+ branch: StringSchema,
4323
+ deploy_on_push: z
4324
+ .union([
4325
+ z.undefined(),
4326
+ z.literal(false),
4327
+ z.literal(true)
4328
+ ])
4329
+ .optional()
4330
+ })
4331
+ .passthrough()
4332
+ ])
4333
+ .optional(),
4334
+ envs: z
4335
+ .union([
4336
+ z.undefined(),
4337
+ z.array(z
4338
+ .object({
4339
+ key: StringSchema,
4340
+ value: z
4341
+ .union([z.undefined(), StringSchema])
4342
+ .optional(),
4343
+ scope: z
4344
+ .union([
4345
+ z.undefined(),
4346
+ z.literal('RUN_TIME'),
4347
+ z.literal('BUILD_TIME'),
4348
+ z.literal('RUN_AND_BUILD_TIME')
4349
+ ])
4350
+ .optional(),
4351
+ type: z
4352
+ .union([
4353
+ z.undefined(),
4354
+ z.literal('GENERAL'),
4355
+ z.literal('SECRET')
4356
+ ])
4357
+ .optional()
4358
+ })
4359
+ .passthrough())
4360
+ ])
4361
+ .optional()
4362
+ })
4363
+ .passthrough())
4364
+ ])
4365
+ .optional(),
4366
+ domains: z
4367
+ .union([
4368
+ z.undefined(),
4369
+ z.array(z
4370
+ .object({
4371
+ domain: StringSchema,
4372
+ type: z
4373
+ .union([
4374
+ z.undefined(),
4375
+ z.literal('DEFAULT'),
4376
+ z.literal('PRIMARY'),
4377
+ z.literal('ALIAS')
4378
+ ])
4379
+ .optional(),
4380
+ wildcard: z
4381
+ .union([z.undefined(), z.literal(false), z.literal(true)])
4382
+ .optional(),
4383
+ zone: z.union([z.undefined(), StringSchema]).optional(),
4384
+ certificate_id: z.union([z.undefined(), StringSchema]).optional()
4385
+ })
4386
+ .passthrough())
4387
+ ])
4388
+ .optional(),
4389
+ alerts: z
4390
+ .union([
4391
+ z.undefined(),
4392
+ z.array(z
4393
+ .object({
4394
+ rule: StringSchema,
4395
+ disabled: z
4396
+ .union([z.undefined(), z.literal(false), z.literal(true)])
4397
+ .optional(),
4398
+ operator: z
4399
+ .union([
4400
+ z.undefined(),
4401
+ z.literal('GREATER_THAN'),
4402
+ z.literal('LESS_THAN')
4403
+ ])
4404
+ .optional(),
4405
+ value: z.union([z.undefined(), z.number()]).optional(),
4406
+ window: z
4407
+ .union([
4408
+ z.undefined(),
4409
+ z.literal('FIVE_MINUTES'),
4410
+ z.literal('TEN_MINUTES'),
4411
+ z.literal('THIRTY_MINUTES'),
4412
+ z.literal('ONE_HOUR')
4413
+ ])
4414
+ .optional(),
4415
+ emails: z
4416
+ .union([z.undefined(), z.array(StringSchema)])
4417
+ .optional(),
4418
+ slack_webhooks: z
4419
+ .union([
4420
+ z.undefined(),
4421
+ z.array(z
4422
+ .object({
4423
+ url: StringSchema,
4424
+ channel: z
4425
+ .union([z.undefined(), StringSchema])
4426
+ .optional()
4427
+ })
4428
+ .passthrough())
4429
+ ])
4430
+ .optional()
4431
+ })
4432
+ .passthrough())
4433
+ ])
4434
+ .optional(),
4435
+ log_destinations: z
4436
+ .union([
4437
+ z.undefined(),
4438
+ z.array(z.union([
4439
+ z
4440
+ .object({
4441
+ name: StringSchema,
4442
+ papertrail: z.object({ endpoint: StringSchema }).passthrough()
4443
+ })
4444
+ .passthrough(),
4445
+ z
4446
+ .object({
4447
+ name: StringSchema,
4448
+ datadog: z
4449
+ .object({
4450
+ endpoint: StringSchema,
4451
+ api_key: StringSchema
4452
+ })
4453
+ .passthrough()
4454
+ })
4455
+ .passthrough(),
4456
+ z
4457
+ .object({
4458
+ name: StringSchema,
4459
+ logtail: z.object({ token: StringSchema }).passthrough()
4460
+ })
4461
+ .passthrough(),
4462
+ z
4463
+ .object({
4464
+ name: StringSchema,
4465
+ open_search: z
4466
+ .object({
4467
+ endpoint: StringSchema,
4468
+ index_name: z
4469
+ .union([z.undefined(), StringSchema])
4470
+ .optional(),
4471
+ basic_auth: z
4472
+ .union([
4473
+ z.undefined(),
4474
+ z
4475
+ .object({
4476
+ user: z
4477
+ .union([z.undefined(), StringSchema])
4478
+ .optional(),
4479
+ password: z
4480
+ .union([z.undefined(), StringSchema])
4481
+ .optional()
4482
+ })
4483
+ .passthrough()
4484
+ ])
4485
+ .optional()
4486
+ })
4487
+ .passthrough()
4488
+ })
4489
+ .passthrough()
4490
+ ]))
4491
+ ])
4492
+ .optional(),
4493
+ features: z.union([z.undefined(), z.array(StringSchema)]).optional(),
4494
+ maintenance: z
4495
+ .union([
4496
+ z.undefined(),
4497
+ z
4498
+ .object({
4499
+ archive: z
4500
+ .union([z.undefined(), z.literal(false), z.literal(true)])
4501
+ .optional(),
4502
+ offline_page_url: z.union([z.undefined(), StringSchema]).optional()
4503
+ })
4504
+ .passthrough()
4505
+ ])
4506
+ .optional()
4507
+ })
4508
+ .passthrough()
4509
+ ])
4510
+ .optional(),
4511
+ phase: z
4512
+ .union([
4513
+ z.undefined(),
4514
+ z.literal('PENDING_BUILD'),
4515
+ z.literal('BUILDING'),
4516
+ z.literal('PENDING_DEPLOY'),
4517
+ z.literal('DEPLOYING'),
4518
+ z.literal('ACTIVE'),
4519
+ z.literal('SUPERSEDED'),
4520
+ z.literal('ERROR'),
4521
+ z.literal('CANCELED'),
4522
+ z.literal('UNKNOWN')
4523
+ ])
4524
+ .optional(),
4525
+ progress: z
4526
+ .union([
4527
+ z.undefined(),
4528
+ z
4529
+ .object({
4530
+ running_steps: z.union([z.undefined(), z.number()]).optional(),
4531
+ pending_steps: z.union([z.undefined(), z.number()]).optional(),
4532
+ success_steps: z.union([z.undefined(), z.number()]).optional()
4533
+ })
4534
+ .passthrough()
4535
+ ])
4536
+ .optional(),
4537
+ created_at: z.union([z.undefined(), StringSchema]).optional(),
4538
+ updated_at: z.union([z.undefined(), StringSchema]).optional(),
4539
+ cause: z.union([z.undefined(), StringSchema]).optional()
4540
+ })
4541
+ .passthrough()
4542
+ ])
4543
+ .optional()
4544
+ })
4545
+ .passthrough()
4546
+ })
4547
+ .passthrough();
4548
+ //# sourceMappingURL=http.js.map