@distilled.cloud/vercel 0.0.0 → 1.0.0-rc.10

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 (246) hide show
  1. package/LICENSE +201 -0
  2. package/lib/credentials.d.ts +21 -0
  3. package/lib/credentials.d.ts.map +1 -0
  4. package/lib/credentials.js +40 -0
  5. package/lib/credentials.js.map +1 -0
  6. package/lib/errors.d.ts +80 -0
  7. package/lib/errors.d.ts.map +1 -0
  8. package/lib/errors.js +50 -0
  9. package/lib/errors.js.map +1 -0
  10. package/lib/index.d.ts +15 -0
  11. package/lib/index.d.ts.map +1 -0
  12. package/lib/index.js +15 -0
  13. package/lib/index.js.map +1 -0
  14. package/lib/protocol.d.ts +18 -0
  15. package/lib/protocol.d.ts.map +1 -0
  16. package/lib/protocol.js +69 -0
  17. package/lib/protocol.js.map +1 -0
  18. package/lib/retry.d.ts +54 -0
  19. package/lib/retry.d.ts.map +1 -0
  20. package/lib/retry.js +47 -0
  21. package/lib/retry.js.map +1 -0
  22. package/lib/services/access_groups.d.ts +459 -0
  23. package/lib/services/access_groups.d.ts.map +1 -0
  24. package/lib/services/access_groups.js +449 -0
  25. package/lib/services/access_groups.js.map +1 -0
  26. package/lib/services/ai_gateway.d.ts +122 -0
  27. package/lib/services/ai_gateway.d.ts.map +1 -0
  28. package/lib/services/ai_gateway.js +125 -0
  29. package/lib/services/ai_gateway.js.map +1 -0
  30. package/lib/services/aliases.d.ts +591 -0
  31. package/lib/services/aliases.d.ts.map +1 -0
  32. package/lib/services/aliases.js +482 -0
  33. package/lib/services/aliases.js.map +1 -0
  34. package/lib/services/api_ai_gateway.d.ts +275 -0
  35. package/lib/services/api_ai_gateway.d.ts.map +1 -0
  36. package/lib/services/api_ai_gateway.js +227 -0
  37. package/lib/services/api_ai_gateway.js.map +1 -0
  38. package/lib/services/artifacts.d.ts +228 -0
  39. package/lib/services/artifacts.d.ts.map +1 -0
  40. package/lib/services/artifacts.js +214 -0
  41. package/lib/services/artifacts.js.map +1 -0
  42. package/lib/services/authentication.d.ts +373 -0
  43. package/lib/services/authentication.d.ts.map +1 -0
  44. package/lib/services/authentication.js +304 -0
  45. package/lib/services/authentication.js.map +1 -0
  46. package/lib/services/billing.d.ts +930 -0
  47. package/lib/services/billing.d.ts.map +1 -0
  48. package/lib/services/billing.js +695 -0
  49. package/lib/services/billing.js.map +1 -0
  50. package/lib/services/bulk_redirects.d.ts +308 -0
  51. package/lib/services/bulk_redirects.d.ts.map +1 -0
  52. package/lib/services/bulk_redirects.js +302 -0
  53. package/lib/services/bulk_redirects.js.map +1 -0
  54. package/lib/services/certs.d.ts +171 -0
  55. package/lib/services/certs.d.ts.map +1 -0
  56. package/lib/services/certs.js +163 -0
  57. package/lib/services/certs.js.map +1 -0
  58. package/lib/services/checks_v2.d.ts +1167 -0
  59. package/lib/services/checks_v2.d.ts.map +1 -0
  60. package/lib/services/checks_v2.js +1141 -0
  61. package/lib/services/checks_v2.js.map +1 -0
  62. package/lib/services/connect.d.ts +2228 -0
  63. package/lib/services/connect.d.ts.map +1 -0
  64. package/lib/services/connect.js +1575 -0
  65. package/lib/services/connect.js.map +1 -0
  66. package/lib/services/deployments.d.ts +9419 -0
  67. package/lib/services/deployments.d.ts.map +1 -0
  68. package/lib/services/deployments.js +8248 -0
  69. package/lib/services/deployments.js.map +1 -0
  70. package/lib/services/dns.d.ts +279 -0
  71. package/lib/services/dns.d.ts.map +1 -0
  72. package/lib/services/dns.js +277 -0
  73. package/lib/services/dns.js.map +1 -0
  74. package/lib/services/domains.d.ts +564 -0
  75. package/lib/services/domains.d.ts.map +1 -0
  76. package/lib/services/domains.js +469 -0
  77. package/lib/services/domains.js.map +1 -0
  78. package/lib/services/domains_registrar.d.ts +798 -0
  79. package/lib/services/domains_registrar.d.ts.map +1 -0
  80. package/lib/services/domains_registrar.js +916 -0
  81. package/lib/services/domains_registrar.js.map +1 -0
  82. package/lib/services/drains.d.ts +2263 -0
  83. package/lib/services/drains.d.ts.map +1 -0
  84. package/lib/services/drains.js +2121 -0
  85. package/lib/services/drains.js.map +1 -0
  86. package/lib/services/edge_cache.d.ts +125 -0
  87. package/lib/services/edge_cache.d.ts.map +1 -0
  88. package/lib/services/edge_cache.js +138 -0
  89. package/lib/services/edge_cache.js.map +1 -0
  90. package/lib/services/environment.d.ts +1020 -0
  91. package/lib/services/environment.d.ts.map +1 -0
  92. package/lib/services/environment.js +805 -0
  93. package/lib/services/environment.js.map +1 -0
  94. package/lib/services/feature_flags.d.ts +2893 -0
  95. package/lib/services/feature_flags.d.ts.map +1 -0
  96. package/lib/services/feature_flags.js +2707 -0
  97. package/lib/services/feature_flags.js.map +1 -0
  98. package/lib/services/global_config.d.ts +618 -0
  99. package/lib/services/global_config.d.ts.map +1 -0
  100. package/lib/services/global_config.js +709 -0
  101. package/lib/services/global_config.js.map +1 -0
  102. package/lib/services/index.d.ts +42 -0
  103. package/lib/services/index.d.ts.map +1 -0
  104. package/lib/services/index.js +43 -0
  105. package/lib/services/index.js.map +1 -0
  106. package/lib/services/integrations.d.ts +3014 -0
  107. package/lib/services/integrations.d.ts.map +1 -0
  108. package/lib/services/integrations.js +2544 -0
  109. package/lib/services/integrations.js.map +1 -0
  110. package/lib/services/kms.d.ts +1095 -0
  111. package/lib/services/kms.d.ts.map +1 -0
  112. package/lib/services/kms.js +956 -0
  113. package/lib/services/kms.js.map +1 -0
  114. package/lib/services/log_drains.d.ts +848 -0
  115. package/lib/services/log_drains.d.ts.map +1 -0
  116. package/lib/services/log_drains.js +782 -0
  117. package/lib/services/log_drains.js.map +1 -0
  118. package/lib/services/logs.d.ts +40 -0
  119. package/lib/services/logs.d.ts.map +1 -0
  120. package/lib/services/logs.js +43 -0
  121. package/lib/services/logs.js.map +1 -0
  122. package/lib/services/marketplace.d.ts +1053 -0
  123. package/lib/services/marketplace.d.ts.map +1 -0
  124. package/lib/services/marketplace.js +1116 -0
  125. package/lib/services/marketplace.js.map +1 -0
  126. package/lib/services/microfrontends.d.ts +3250 -0
  127. package/lib/services/microfrontends.d.ts.map +1 -0
  128. package/lib/services/microfrontends.js +3154 -0
  129. package/lib/services/microfrontends.js.map +1 -0
  130. package/lib/services/misc.d.ts +192 -0
  131. package/lib/services/misc.d.ts.map +1 -0
  132. package/lib/services/misc.js +124 -0
  133. package/lib/services/misc.js.map +1 -0
  134. package/lib/services/networking.d.ts +360 -0
  135. package/lib/services/networking.d.ts.map +1 -0
  136. package/lib/services/networking.js +353 -0
  137. package/lib/services/networking.js.map +1 -0
  138. package/lib/services/observability.d.ts +168 -0
  139. package/lib/services/observability.d.ts.map +1 -0
  140. package/lib/services/observability.js +190 -0
  141. package/lib/services/observability.js.map +1 -0
  142. package/lib/services/project_members.d.ts +142 -0
  143. package/lib/services/project_members.d.ts.map +1 -0
  144. package/lib/services/project_members.js +135 -0
  145. package/lib/services/project_members.js.map +1 -0
  146. package/lib/services/project_routes.d.ts +1990 -0
  147. package/lib/services/project_routes.d.ts.map +1 -0
  148. package/lib/services/project_routes.js +1883 -0
  149. package/lib/services/project_routes.js.map +1 -0
  150. package/lib/services/projects.d.ts +23677 -0
  151. package/lib/services/projects.d.ts.map +1 -0
  152. package/lib/services/projects.js +22223 -0
  153. package/lib/services/projects.js.map +1 -0
  154. package/lib/services/rolling_release.d.ts +764 -0
  155. package/lib/services/rolling_release.d.ts.map +1 -0
  156. package/lib/services/rolling_release.js +583 -0
  157. package/lib/services/rolling_release.js.map +1 -0
  158. package/lib/services/sandboxes.d.ts +2777 -0
  159. package/lib/services/sandboxes.d.ts.map +1 -0
  160. package/lib/services/sandboxes.js +2142 -0
  161. package/lib/services/sandboxes.js.map +1 -0
  162. package/lib/services/security.d.ts +4247 -0
  163. package/lib/services/security.d.ts.map +1 -0
  164. package/lib/services/security.js +4377 -0
  165. package/lib/services/security.js.map +1 -0
  166. package/lib/services/storage.d.ts +251 -0
  167. package/lib/services/storage.d.ts.map +1 -0
  168. package/lib/services/storage.js +257 -0
  169. package/lib/services/storage.js.map +1 -0
  170. package/lib/services/teams.d.ts +1600 -0
  171. package/lib/services/teams.d.ts.map +1 -0
  172. package/lib/services/teams.js +1314 -0
  173. package/lib/services/teams.js.map +1 -0
  174. package/lib/services/user.d.ts +8559 -0
  175. package/lib/services/user.d.ts.map +1 -0
  176. package/lib/services/user.js +7407 -0
  177. package/lib/services/user.js.map +1 -0
  178. package/lib/services/vcr.d.ts +751 -0
  179. package/lib/services/vcr.d.ts.map +1 -0
  180. package/lib/services/vcr.js +826 -0
  181. package/lib/services/vcr.js.map +1 -0
  182. package/lib/services/web_analytics.d.ts +726 -0
  183. package/lib/services/web_analytics.d.ts.map +1 -0
  184. package/lib/services/web_analytics.js +707 -0
  185. package/lib/services/web_analytics.js.map +1 -0
  186. package/lib/services/webhooks.d.ts +219 -0
  187. package/lib/services/webhooks.d.ts.map +1 -0
  188. package/lib/services/webhooks.js +177 -0
  189. package/lib/services/webhooks.js.map +1 -0
  190. package/lib/traits.d.ts +10 -0
  191. package/lib/traits.d.ts.map +1 -0
  192. package/lib/traits.js +11 -0
  193. package/lib/traits.js.map +1 -0
  194. package/package.json +78 -7
  195. package/src/credentials.ts +70 -0
  196. package/src/errors.ts +93 -0
  197. package/src/index.ts +18 -0
  198. package/src/protocol.ts +98 -0
  199. package/src/retry.ts +78 -0
  200. package/src/services/access_groups.ts +1165 -0
  201. package/src/services/ai_gateway.ts +267 -0
  202. package/src/services/aliases.ts +1315 -0
  203. package/src/services/api_ai_gateway.ts +607 -0
  204. package/src/services/artifacts.ts +542 -0
  205. package/src/services/authentication.ts +827 -0
  206. package/src/services/billing.ts +2104 -0
  207. package/src/services/bulk_redirects.ts +748 -0
  208. package/src/services/certs.ts +371 -0
  209. package/src/services/checks_v2.ts +3084 -0
  210. package/src/services/connect.ts +4805 -0
  211. package/src/services/deployments.ts +24576 -0
  212. package/src/services/dns.ts +715 -0
  213. package/src/services/domains.ts +1257 -0
  214. package/src/services/domains_registrar.ts +2257 -0
  215. package/src/services/drains.ts +5828 -0
  216. package/src/services/edge_cache.ts +303 -0
  217. package/src/services/environment.ts +2379 -0
  218. package/src/services/feature_flags.ts +7722 -0
  219. package/src/services/global_config.ts +1668 -0
  220. package/src/services/index.ts +42 -0
  221. package/src/services/integrations.ts +9022 -0
  222. package/src/services/kms.ts +2614 -0
  223. package/src/services/log_drains.ts +2434 -0
  224. package/src/services/logs.ts +78 -0
  225. package/src/services/marketplace.ts +2849 -0
  226. package/src/services/microfrontends.ts +9921 -0
  227. package/src/services/misc.ts +364 -0
  228. package/src/services/networking.ts +865 -0
  229. package/src/services/observability.ts +435 -0
  230. package/src/services/project_members.ts +326 -0
  231. package/src/services/project_routes.ts +5229 -0
  232. package/src/services/projects.ts +68139 -0
  233. package/src/services/rolling_release.ts +1860 -0
  234. package/src/services/sandboxes.ts +6988 -0
  235. package/src/services/security.ts +13931 -0
  236. package/src/services/storage.ts +850 -0
  237. package/src/services/teams.ts +4055 -0
  238. package/src/services/user.ts +23195 -0
  239. package/src/services/vcr.ts +2070 -0
  240. package/src/services/web_analytics.ts +1638 -0
  241. package/src/services/webhooks.ts +1102 -0
  242. package/src/traits.ts +46 -0
  243. package/README.md +0 -15
  244. package/bun.lock +0 -26
  245. package/index.ts +0 -1
  246. package/tsconfig.json +0 -29
@@ -0,0 +1,1860 @@
1
+ // AUTO-GENERATED by scripts/generate.ts from .generated-specs (specs/spec-mirror-vercel/specs/openapi.json). Do not edit.
2
+ import * as S from "@distilled.cloud/core/schema";
3
+ import * as API from "@distilled.cloud/core/api";
4
+ import * as C from "@distilled.cloud/core/category";
5
+ import * as T from "../traits.ts";
6
+ import {
7
+ VercelProtocol,
8
+ type VercelOpError,
9
+ type VercelOpContext,
10
+ } from "../protocol.ts";
11
+ import * as Retry from "../retry.ts";
12
+
13
+ export type { VercelOpError, VercelOpContext };
14
+
15
+ export class BadRequest
16
+ extends /*@__PURE__*/ T.applyErrorMatchers(
17
+ /*@__PURE__*/ S.TaggedError<BadRequest>()("BadRequest", {
18
+ code: S.Number,
19
+ message: S.String,
20
+ }).pipe(C.withBadRequestError),
21
+ [{ status: 400 }],
22
+ ) {}
23
+
24
+ export class Conflict
25
+ extends /*@__PURE__*/ T.applyErrorMatchers(
26
+ /*@__PURE__*/ S.TaggedError<Conflict>()("Conflict", {
27
+ code: S.Number,
28
+ message: S.String,
29
+ }).pipe(C.withConflictError),
30
+ [{ status: 409 }],
31
+ ) {}
32
+
33
+ export class Forbidden
34
+ extends /*@__PURE__*/ T.applyErrorMatchers(
35
+ /*@__PURE__*/ S.TaggedError<Forbidden>()("Forbidden", {
36
+ code: S.Number,
37
+ message: S.String,
38
+ }).pipe(C.withAuthError),
39
+ [{ status: 403 }],
40
+ ) {}
41
+
42
+ export class NotFound
43
+ extends /*@__PURE__*/ T.applyErrorMatchers(
44
+ /*@__PURE__*/ S.TaggedError<NotFound>()("NotFound", {
45
+ code: S.Number,
46
+ message: S.String,
47
+ }).pipe(C.withBadRequestError),
48
+ [{ status: 404 }],
49
+ ) {}
50
+
51
+ export class UnprocessableEntity
52
+ extends /*@__PURE__*/ T.applyErrorMatchers(
53
+ /*@__PURE__*/ S.TaggedError<UnprocessableEntity>()("UnprocessableEntity", {
54
+ code: S.Number,
55
+ message: S.String,
56
+ }).pipe(C.withBadRequestError),
57
+ [{ status: 422 }],
58
+ ) {}
59
+
60
+ export interface ApproveRollingReleaseStageRequest {
61
+ /** Project ID or project name (URL-encoded) */
62
+ idOrName: string;
63
+ /** The Team identifier to perform the request on behalf of. */
64
+ teamId?: string;
65
+ /** The Team slug to perform the request on behalf of. */
66
+ slug?: string;
67
+ /** The index of the stage to transition to */
68
+ nextStageIndex: number;
69
+ /** The id of the canary deployment to approve for the next stage */
70
+ canaryDeploymentId: string;
71
+ }
72
+ export const ApproveRollingReleaseStageRequest = /*@__PURE__*/ S.suspend(() =>
73
+ S.Struct({
74
+ idOrName: S.String.pipe(T.Label()),
75
+ teamId: S.optional(S.String.pipe(T.Query())),
76
+ slug: S.optional(S.String.pipe(T.Query())),
77
+ nextStageIndex: S.Number,
78
+ canaryDeploymentId: S.String,
79
+ }).pipe(
80
+ T.Http({
81
+ method: "POST",
82
+ uri: "/v1/projects/{idOrName}/rolling-release/approve-stage",
83
+ code: 200,
84
+ }),
85
+ ),
86
+ ).annotate({
87
+ identifier: "ApproveRollingReleaseStageRequest",
88
+ }) as any as S.Schema<ApproveRollingReleaseStageRequest>;
89
+
90
+ /** The current state of the rolling release */
91
+ export type ApproveRollingReleaseStageResponseRollingReleaseState =
92
+ | "ABORTED"
93
+ | "ACTIVE"
94
+ | "COMPLETE";
95
+ export const ApproveRollingReleaseStageResponseRollingReleaseState = S.String;
96
+
97
+ /** When set to `PAUSED`, the rollout is frozen at the current percentage until continued. */
98
+ export type ApproveRollingReleaseStageResponseRollingReleaseSubstate = "PAUSED";
99
+ export const ApproveRollingReleaseStageResponseRollingReleaseSubstate =
100
+ S.String;
101
+
102
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
103
+ export type ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentReadyState =
104
+ | "BLOCKED"
105
+ | "BUILDING"
106
+ | "CANCELED"
107
+ | "ERROR"
108
+ | "INITIALIZING"
109
+ | "QUEUED"
110
+ | "READY";
111
+ export const ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentReadyState =
112
+ S.String;
113
+
114
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
115
+ export type ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentTarget =
116
+ | "production"
117
+ | "staging";
118
+ export const ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentTarget =
119
+ S.String;
120
+
121
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
122
+ export type ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentSource =
123
+ | "api-trigger-git-deploy"
124
+ | "cli"
125
+ | "clone/repo"
126
+ | "drop"
127
+ | "git"
128
+ | "git-deploy-hook"
129
+ | "import"
130
+ | "import/repo"
131
+ | "redeploy"
132
+ | "v0-web";
133
+ export const ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentSource =
134
+ S.String;
135
+
136
+ /** The current deployment receiving production traffic */
137
+ export interface ApproveRollingReleaseStageResponseRollingReleaseCurrentDeployment {
138
+ /** The name of the project associated with the deployment at the time that the deployment was created */
139
+ name: string;
140
+ /** A number containing the date when the deployment was created in milliseconds */
141
+ createdAt: number;
142
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
143
+ readyState: ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentReadyState;
144
+ /** A string holding the unique ID of the deployment */
145
+ id: string;
146
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
147
+ target?: ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentTarget | null;
148
+ readyStateAt?: number;
149
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
150
+ source?: ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentSource;
151
+ /** A string with the unique URL of the deployment */
152
+ url: string;
153
+ }
154
+ export const ApproveRollingReleaseStageResponseRollingReleaseCurrentDeployment =
155
+ /*@__PURE__*/ S.suspend(() =>
156
+ S.Struct({
157
+ name: S.String,
158
+ createdAt: S.Number,
159
+ readyState:
160
+ ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentReadyState,
161
+ id: S.String,
162
+ target: S.optional(
163
+ S.NullOr(
164
+ ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentTarget,
165
+ ),
166
+ ),
167
+ readyStateAt: S.optional(S.Number),
168
+ source: S.optional(
169
+ ApproveRollingReleaseStageResponseRollingReleaseCurrentDeploymentSource,
170
+ ),
171
+ url: S.String,
172
+ }),
173
+ ).annotate({
174
+ identifier:
175
+ "ApproveRollingReleaseStageResponseRollingReleaseCurrentDeployment",
176
+ }) as any as S.Schema<ApproveRollingReleaseStageResponseRollingReleaseCurrentDeployment>;
177
+
178
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
179
+ export type ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentReadyState =
180
+ | "BLOCKED"
181
+ | "BUILDING"
182
+ | "CANCELED"
183
+ | "ERROR"
184
+ | "INITIALIZING"
185
+ | "QUEUED"
186
+ | "READY";
187
+ export const ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentReadyState =
188
+ S.String;
189
+
190
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
191
+ export type ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentTarget =
192
+ | "production"
193
+ | "staging";
194
+ export const ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentTarget =
195
+ S.String;
196
+
197
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
198
+ export type ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentSource =
199
+ | "api-trigger-git-deploy"
200
+ | "cli"
201
+ | "clone/repo"
202
+ | "drop"
203
+ | "git"
204
+ | "git-deploy-hook"
205
+ | "import"
206
+ | "import/repo"
207
+ | "redeploy"
208
+ | "v0-web";
209
+ export const ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentSource =
210
+ S.String;
211
+
212
+ /** The canary deployment being rolled out */
213
+ export interface ApproveRollingReleaseStageResponseRollingReleaseCanaryDeployment {
214
+ /** The name of the project associated with the deployment at the time that the deployment was created */
215
+ name: string;
216
+ /** A number containing the date when the deployment was created in milliseconds */
217
+ createdAt: number;
218
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
219
+ readyState: ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentReadyState;
220
+ /** A string holding the unique ID of the deployment */
221
+ id: string;
222
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
223
+ target?: ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentTarget | null;
224
+ readyStateAt?: number;
225
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
226
+ source?: ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentSource;
227
+ /** A string with the unique URL of the deployment */
228
+ url: string;
229
+ }
230
+ export const ApproveRollingReleaseStageResponseRollingReleaseCanaryDeployment =
231
+ /*@__PURE__*/ S.suspend(() =>
232
+ S.Struct({
233
+ name: S.String,
234
+ createdAt: S.Number,
235
+ readyState:
236
+ ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentReadyState,
237
+ id: S.String,
238
+ target: S.optional(
239
+ S.NullOr(
240
+ ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentTarget,
241
+ ),
242
+ ),
243
+ readyStateAt: S.optional(S.Number),
244
+ source: S.optional(
245
+ ApproveRollingReleaseStageResponseRollingReleaseCanaryDeploymentSource,
246
+ ),
247
+ url: S.String,
248
+ }),
249
+ ).annotate({
250
+ identifier:
251
+ "ApproveRollingReleaseStageResponseRollingReleaseCanaryDeployment",
252
+ }) as any as S.Schema<ApproveRollingReleaseStageResponseRollingReleaseCanaryDeployment>;
253
+
254
+ /** The advancement type of the rolling release */
255
+ export type ApproveRollingReleaseStageResponseRollingReleaseAdvancementType =
256
+ | "automatic"
257
+ | "manual-approval";
258
+ export const ApproveRollingReleaseStageResponseRollingReleaseAdvancementType =
259
+ S.String;
260
+
261
+ /** All stages configured for this rolling release */
262
+ export interface ApproveRollingReleaseStageResponseRollingReleaseStagesItem {
263
+ /** The zero-based index of the stage */
264
+ index: number;
265
+ /** Whether or not this stage is the final stage (targetPercentage === 100) */
266
+ isFinalStage: boolean;
267
+ /** The percentage of traffic to serve to the canary deployment (0-100) */
268
+ targetPercentage: number;
269
+ /** Whether or not this stage requires manual approval to proceed */
270
+ requireApproval: boolean;
271
+ /** Duration in seconds for automatic advancement, null for manual stages or the final stage */
272
+ duration: number | null;
273
+ /** Whether to linearly shift traffic over the duration of this stage */
274
+ linearShift?: boolean;
275
+ }
276
+ export const ApproveRollingReleaseStageResponseRollingReleaseStagesItem =
277
+ /*@__PURE__*/ S.suspend(() =>
278
+ S.Struct({
279
+ index: S.Number,
280
+ isFinalStage: S.Boolean,
281
+ targetPercentage: S.Number,
282
+ requireApproval: S.Boolean,
283
+ duration: S.NullOr(S.Number),
284
+ linearShift: S.optional(S.Boolean),
285
+ }),
286
+ ).annotate({
287
+ identifier: "ApproveRollingReleaseStageResponseRollingReleaseStagesItem",
288
+ }) as any as S.Schema<ApproveRollingReleaseStageResponseRollingReleaseStagesItem>;
289
+
290
+ /** All stages configured for this rolling release */
291
+ export type ApproveRollingReleaseStageResponseRollingReleaseStagesList =
292
+ Array<ApproveRollingReleaseStageResponseRollingReleaseStagesItem>;
293
+ export const ApproveRollingReleaseStageResponseRollingReleaseStagesList =
294
+ /*@__PURE__*/ S.Array(
295
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
296
+ ) as any as S.Schema<ApproveRollingReleaseStageResponseRollingReleaseStagesList>;
297
+
298
+ /** The currently active stage, null if the rollout is aborted */
299
+ export type ApproveRollingReleaseStageResponseRollingReleaseActiveStage =
300
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
301
+ export const ApproveRollingReleaseStageResponseRollingReleaseActiveStage =
302
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
303
+
304
+ /** The next stage to be activated, null if not in ACTIVE state */
305
+ export type ApproveRollingReleaseStageResponseRollingReleaseNextStage =
306
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
307
+ export const ApproveRollingReleaseStageResponseRollingReleaseNextStage =
308
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
309
+
310
+ /** Rolling release information including configuration and document details, or null if no rolling release exists */
311
+ export interface ApproveRollingReleaseStageResponseRollingRelease {
312
+ /** The current state of the rolling release */
313
+ state: ApproveRollingReleaseStageResponseRollingReleaseState;
314
+ /** When set to `PAUSED`, the rollout is frozen at the current percentage until continued. */
315
+ substate: ApproveRollingReleaseStageResponseRollingReleaseSubstate | null;
316
+ /** The current deployment receiving production traffic */
317
+ currentDeployment: ApproveRollingReleaseStageResponseRollingReleaseCurrentDeployment | null;
318
+ /** The canary deployment being rolled out */
319
+ canaryDeployment: ApproveRollingReleaseStageResponseRollingReleaseCanaryDeployment | null;
320
+ /** The ID of a deployment queued for the next rolling release */
321
+ queuedDeploymentId: string | null;
322
+ /** The advancement type of the rolling release */
323
+ advancementType: ApproveRollingReleaseStageResponseRollingReleaseAdvancementType;
324
+ /** All stages configured for this rolling release */
325
+ stages: ApproveRollingReleaseStageResponseRollingReleaseStagesList;
326
+ /** The currently active stage, null if the rollout is aborted */
327
+ activeStage: ApproveRollingReleaseStageResponseRollingReleaseStagesItem | null;
328
+ /** The next stage to be activated, null if not in ACTIVE state */
329
+ nextStage: ApproveRollingReleaseStageResponseRollingReleaseStagesItem | null;
330
+ /** Unix timestamp in milliseconds when the rolling release started */
331
+ startedAt: number;
332
+ /** Unix timestamp in milliseconds when the rolling release was last updated */
333
+ updatedAt: number;
334
+ /** When set (for example while {@link substate} is `PAUSED`), the canary traffic percentage persisted on the rollout document — use for dashboard display when linear shift is active. */
335
+ currentCanaryPercentage?: number;
336
+ }
337
+ export const ApproveRollingReleaseStageResponseRollingRelease =
338
+ /*@__PURE__*/ S.suspend(() =>
339
+ S.Struct({
340
+ state: ApproveRollingReleaseStageResponseRollingReleaseState,
341
+ substate: S.NullOr(
342
+ ApproveRollingReleaseStageResponseRollingReleaseSubstate,
343
+ ),
344
+ currentDeployment: S.NullOr(
345
+ ApproveRollingReleaseStageResponseRollingReleaseCurrentDeployment,
346
+ ),
347
+ canaryDeployment: S.NullOr(
348
+ ApproveRollingReleaseStageResponseRollingReleaseCanaryDeployment,
349
+ ),
350
+ queuedDeploymentId: S.NullOr(S.String),
351
+ advancementType:
352
+ ApproveRollingReleaseStageResponseRollingReleaseAdvancementType,
353
+ stages: ApproveRollingReleaseStageResponseRollingReleaseStagesList,
354
+ activeStage: S.NullOr(
355
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
356
+ ),
357
+ nextStage: S.NullOr(
358
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
359
+ ),
360
+ startedAt: S.Number,
361
+ updatedAt: S.Number,
362
+ currentCanaryPercentage: S.optional(S.Number),
363
+ }),
364
+ ).annotate({
365
+ identifier: "ApproveRollingReleaseStageResponseRollingRelease",
366
+ }) as any as S.Schema<ApproveRollingReleaseStageResponseRollingRelease>;
367
+
368
+ export interface ApproveRollingReleaseStageResponse {
369
+ /** Rolling release information including configuration and document details, or null if no rolling release exists */
370
+ rollingRelease: ApproveRollingReleaseStageResponseRollingRelease | null;
371
+ }
372
+ export const ApproveRollingReleaseStageResponse = /*@__PURE__*/ S.suspend(() =>
373
+ S.Struct({
374
+ rollingRelease: S.NullOr(ApproveRollingReleaseStageResponseRollingRelease),
375
+ }),
376
+ ).annotate({
377
+ identifier: "ApproveRollingReleaseStageResponse",
378
+ }) as any as S.Schema<ApproveRollingReleaseStageResponse>;
379
+
380
+ export interface CompleteRollingReleaseRequest {
381
+ /** Project ID or project name (URL-encoded) */
382
+ idOrName: string;
383
+ /** The Team identifier to perform the request on behalf of. */
384
+ teamId?: string;
385
+ /** The Team slug to perform the request on behalf of. */
386
+ slug?: string;
387
+ /** The ID of the canary deployment to complete */
388
+ canaryDeploymentId: string;
389
+ }
390
+ export const CompleteRollingReleaseRequest = /*@__PURE__*/ S.suspend(() =>
391
+ S.Struct({
392
+ idOrName: S.String.pipe(T.Label()),
393
+ teamId: S.optional(S.String.pipe(T.Query())),
394
+ slug: S.optional(S.String.pipe(T.Query())),
395
+ canaryDeploymentId: S.String,
396
+ }).pipe(
397
+ T.Http({
398
+ method: "POST",
399
+ uri: "/v1/projects/{idOrName}/rolling-release/complete",
400
+ code: 200,
401
+ }),
402
+ ),
403
+ ).annotate({
404
+ identifier: "CompleteRollingReleaseRequest",
405
+ }) as any as S.Schema<CompleteRollingReleaseRequest>;
406
+
407
+ /** The current state of the rolling release */
408
+ export type CompleteRollingReleaseResponseRollingReleaseState =
409
+ | "ABORTED"
410
+ | "ACTIVE"
411
+ | "COMPLETE";
412
+ export const CompleteRollingReleaseResponseRollingReleaseState = S.String;
413
+
414
+ /** When set to `PAUSED`, the rollout is frozen at the current percentage until continued. */
415
+ export type CompleteRollingReleaseResponseRollingReleaseSubstate = "PAUSED";
416
+ export const CompleteRollingReleaseResponseRollingReleaseSubstate = S.String;
417
+
418
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
419
+ export type CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState =
420
+ | "BLOCKED"
421
+ | "BUILDING"
422
+ | "CANCELED"
423
+ | "ERROR"
424
+ | "INITIALIZING"
425
+ | "QUEUED"
426
+ | "READY";
427
+ export const CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState =
428
+ S.String;
429
+
430
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
431
+ export type CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentTarget =
432
+ | "production"
433
+ | "staging";
434
+ export const CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentTarget =
435
+ S.String;
436
+
437
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
438
+ export type CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentSource =
439
+ | "api-trigger-git-deploy"
440
+ | "cli"
441
+ | "clone/repo"
442
+ | "drop"
443
+ | "git"
444
+ | "git-deploy-hook"
445
+ | "import"
446
+ | "import/repo"
447
+ | "redeploy"
448
+ | "v0-web";
449
+ export const CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentSource =
450
+ S.String;
451
+
452
+ /** The current deployment receiving production traffic */
453
+ export interface CompleteRollingReleaseResponseRollingReleaseCurrentDeployment {
454
+ /** The name of the project associated with the deployment at the time that the deployment was created */
455
+ name: string;
456
+ /** A number containing the date when the deployment was created in milliseconds */
457
+ createdAt: number;
458
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
459
+ readyState: CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState;
460
+ /** A string holding the unique ID of the deployment */
461
+ id: string;
462
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
463
+ target?: CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentTarget | null;
464
+ readyStateAt?: number;
465
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
466
+ source?: CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentSource;
467
+ /** A string with the unique URL of the deployment */
468
+ url: string;
469
+ }
470
+ export const CompleteRollingReleaseResponseRollingReleaseCurrentDeployment =
471
+ /*@__PURE__*/ S.suspend(() =>
472
+ S.Struct({
473
+ name: S.String,
474
+ createdAt: S.Number,
475
+ readyState:
476
+ CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState,
477
+ id: S.String,
478
+ target: S.optional(
479
+ S.NullOr(
480
+ CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentTarget,
481
+ ),
482
+ ),
483
+ readyStateAt: S.optional(S.Number),
484
+ source: S.optional(
485
+ CompleteRollingReleaseResponseRollingReleaseCurrentDeploymentSource,
486
+ ),
487
+ url: S.String,
488
+ }),
489
+ ).annotate({
490
+ identifier: "CompleteRollingReleaseResponseRollingReleaseCurrentDeployment",
491
+ }) as any as S.Schema<CompleteRollingReleaseResponseRollingReleaseCurrentDeployment>;
492
+
493
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
494
+ export type CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState =
495
+ | "BLOCKED"
496
+ | "BUILDING"
497
+ | "CANCELED"
498
+ | "ERROR"
499
+ | "INITIALIZING"
500
+ | "QUEUED"
501
+ | "READY";
502
+ export const CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState =
503
+ S.String;
504
+
505
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
506
+ export type CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentTarget =
507
+ | "production"
508
+ | "staging";
509
+ export const CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentTarget =
510
+ S.String;
511
+
512
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
513
+ export type CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentSource =
514
+ | "api-trigger-git-deploy"
515
+ | "cli"
516
+ | "clone/repo"
517
+ | "drop"
518
+ | "git"
519
+ | "git-deploy-hook"
520
+ | "import"
521
+ | "import/repo"
522
+ | "redeploy"
523
+ | "v0-web";
524
+ export const CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentSource =
525
+ S.String;
526
+
527
+ /** The canary deployment being rolled out */
528
+ export interface CompleteRollingReleaseResponseRollingReleaseCanaryDeployment {
529
+ /** The name of the project associated with the deployment at the time that the deployment was created */
530
+ name: string;
531
+ /** A number containing the date when the deployment was created in milliseconds */
532
+ createdAt: number;
533
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
534
+ readyState: CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState;
535
+ /** A string holding the unique ID of the deployment */
536
+ id: string;
537
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
538
+ target?: CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentTarget | null;
539
+ readyStateAt?: number;
540
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
541
+ source?: CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentSource;
542
+ /** A string with the unique URL of the deployment */
543
+ url: string;
544
+ }
545
+ export const CompleteRollingReleaseResponseRollingReleaseCanaryDeployment =
546
+ /*@__PURE__*/ S.suspend(() =>
547
+ S.Struct({
548
+ name: S.String,
549
+ createdAt: S.Number,
550
+ readyState:
551
+ CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState,
552
+ id: S.String,
553
+ target: S.optional(
554
+ S.NullOr(
555
+ CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentTarget,
556
+ ),
557
+ ),
558
+ readyStateAt: S.optional(S.Number),
559
+ source: S.optional(
560
+ CompleteRollingReleaseResponseRollingReleaseCanaryDeploymentSource,
561
+ ),
562
+ url: S.String,
563
+ }),
564
+ ).annotate({
565
+ identifier: "CompleteRollingReleaseResponseRollingReleaseCanaryDeployment",
566
+ }) as any as S.Schema<CompleteRollingReleaseResponseRollingReleaseCanaryDeployment>;
567
+
568
+ /** The advancement type of the rolling release */
569
+ export type CompleteRollingReleaseResponseRollingReleaseAdvancementType =
570
+ | "automatic"
571
+ | "manual-approval";
572
+ export const CompleteRollingReleaseResponseRollingReleaseAdvancementType =
573
+ S.String;
574
+
575
+ /** All stages configured for this rolling release */
576
+ export type CompleteRollingReleaseResponseRollingReleaseStagesItem =
577
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
578
+ export const CompleteRollingReleaseResponseRollingReleaseStagesItem =
579
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
580
+
581
+ /** All stages configured for this rolling release */
582
+ export type CompleteRollingReleaseResponseRollingReleaseStagesList =
583
+ Array<ApproveRollingReleaseStageResponseRollingReleaseStagesItem>;
584
+ export const CompleteRollingReleaseResponseRollingReleaseStagesList =
585
+ /*@__PURE__*/ S.Array(
586
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
587
+ ) as any as S.Schema<CompleteRollingReleaseResponseRollingReleaseStagesList>;
588
+
589
+ /** The currently active stage, null if the rollout is aborted */
590
+ export type CompleteRollingReleaseResponseRollingReleaseActiveStage =
591
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
592
+ export const CompleteRollingReleaseResponseRollingReleaseActiveStage =
593
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
594
+
595
+ /** The next stage to be activated, null if not in ACTIVE state */
596
+ export type CompleteRollingReleaseResponseRollingReleaseNextStage =
597
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
598
+ export const CompleteRollingReleaseResponseRollingReleaseNextStage =
599
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
600
+
601
+ /** Rolling release information including configuration and document details, or null if no rolling release exists */
602
+ export interface CompleteRollingReleaseResponseRollingRelease {
603
+ /** The current state of the rolling release */
604
+ state: CompleteRollingReleaseResponseRollingReleaseState;
605
+ /** When set to `PAUSED`, the rollout is frozen at the current percentage until continued. */
606
+ substate: CompleteRollingReleaseResponseRollingReleaseSubstate | null;
607
+ /** The current deployment receiving production traffic */
608
+ currentDeployment: CompleteRollingReleaseResponseRollingReleaseCurrentDeployment | null;
609
+ /** The canary deployment being rolled out */
610
+ canaryDeployment: CompleteRollingReleaseResponseRollingReleaseCanaryDeployment | null;
611
+ /** The ID of a deployment queued for the next rolling release */
612
+ queuedDeploymentId: string | null;
613
+ /** The advancement type of the rolling release */
614
+ advancementType: CompleteRollingReleaseResponseRollingReleaseAdvancementType;
615
+ /** All stages configured for this rolling release */
616
+ stages: CompleteRollingReleaseResponseRollingReleaseStagesList;
617
+ /** The currently active stage, null if the rollout is aborted */
618
+ activeStage: ApproveRollingReleaseStageResponseRollingReleaseStagesItem | null;
619
+ /** The next stage to be activated, null if not in ACTIVE state */
620
+ nextStage: ApproveRollingReleaseStageResponseRollingReleaseStagesItem | null;
621
+ /** Unix timestamp in milliseconds when the rolling release started */
622
+ startedAt: number;
623
+ /** Unix timestamp in milliseconds when the rolling release was last updated */
624
+ updatedAt: number;
625
+ /** When set (for example while {@link substate} is `PAUSED`), the canary traffic percentage persisted on the rollout document — use for dashboard display when linear shift is active. */
626
+ currentCanaryPercentage?: number;
627
+ }
628
+ export const CompleteRollingReleaseResponseRollingRelease =
629
+ /*@__PURE__*/ S.suspend(() =>
630
+ S.Struct({
631
+ state: CompleteRollingReleaseResponseRollingReleaseState,
632
+ substate: S.NullOr(CompleteRollingReleaseResponseRollingReleaseSubstate),
633
+ currentDeployment: S.NullOr(
634
+ CompleteRollingReleaseResponseRollingReleaseCurrentDeployment,
635
+ ),
636
+ canaryDeployment: S.NullOr(
637
+ CompleteRollingReleaseResponseRollingReleaseCanaryDeployment,
638
+ ),
639
+ queuedDeploymentId: S.NullOr(S.String),
640
+ advancementType:
641
+ CompleteRollingReleaseResponseRollingReleaseAdvancementType,
642
+ stages: CompleteRollingReleaseResponseRollingReleaseStagesList,
643
+ activeStage: S.NullOr(
644
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
645
+ ),
646
+ nextStage: S.NullOr(
647
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
648
+ ),
649
+ startedAt: S.Number,
650
+ updatedAt: S.Number,
651
+ currentCanaryPercentage: S.optional(S.Number),
652
+ }),
653
+ ).annotate({
654
+ identifier: "CompleteRollingReleaseResponseRollingRelease",
655
+ }) as any as S.Schema<CompleteRollingReleaseResponseRollingRelease>;
656
+
657
+ export interface CompleteRollingReleaseResponse {
658
+ /** Rolling release information including configuration and document details, or null if no rolling release exists */
659
+ rollingRelease: CompleteRollingReleaseResponseRollingRelease | null;
660
+ }
661
+ export const CompleteRollingReleaseResponse = /*@__PURE__*/ S.suspend(() =>
662
+ S.Struct({
663
+ rollingRelease: S.NullOr(CompleteRollingReleaseResponseRollingRelease),
664
+ }),
665
+ ).annotate({
666
+ identifier: "CompleteRollingReleaseResponse",
667
+ }) as any as S.Schema<CompleteRollingReleaseResponse>;
668
+
669
+ export interface DeleteRollingReleaseConfigRequest {
670
+ /** Project ID or project name (URL-encoded) */
671
+ idOrName: string;
672
+ /** The Team identifier to perform the request on behalf of. */
673
+ teamId?: string;
674
+ /** The Team slug to perform the request on behalf of. */
675
+ slug?: string;
676
+ }
677
+ export const DeleteRollingReleaseConfigRequest = /*@__PURE__*/ S.suspend(() =>
678
+ S.Struct({
679
+ idOrName: S.String.pipe(T.Label()),
680
+ teamId: S.optional(S.String.pipe(T.Query())),
681
+ slug: S.optional(S.String.pipe(T.Query())),
682
+ }).pipe(
683
+ T.Http({
684
+ method: "DELETE",
685
+ uri: "/v1/projects/{idOrName}/rolling-release/config",
686
+ code: 200,
687
+ }),
688
+ ),
689
+ ).annotate({
690
+ identifier: "DeleteRollingReleaseConfigRequest",
691
+ }) as any as S.Schema<DeleteRollingReleaseConfigRequest>;
692
+
693
+ export interface DeleteRollingReleaseConfigResponse {
694
+ rollingRelease: unknown | null;
695
+ }
696
+ export const DeleteRollingReleaseConfigResponse = /*@__PURE__*/ S.suspend(() =>
697
+ S.Struct({
698
+ rollingRelease: S.NullOr(S.Unknown),
699
+ }),
700
+ ).annotate({
701
+ identifier: "DeleteRollingReleaseConfigResponse",
702
+ }) as any as S.Schema<DeleteRollingReleaseConfigResponse>;
703
+
704
+ /** Filter by rolling release state */
705
+ export type GetRollingReleaseRequestState = "ACTIVE" | "COMPLETE" | "ABORTED";
706
+ export const GetRollingReleaseRequestState = S.String;
707
+
708
+ export interface GetRollingReleaseRequest {
709
+ /** Project ID or project name (URL-encoded) */
710
+ idOrName: string;
711
+ /** Filter by rolling release state */
712
+ state?: GetRollingReleaseRequestState | (string & {});
713
+ /** The Team identifier to perform the request on behalf of. */
714
+ teamId?: string;
715
+ /** The Team slug to perform the request on behalf of. */
716
+ slug?: string;
717
+ }
718
+ export const GetRollingReleaseRequest = /*@__PURE__*/ S.suspend(() =>
719
+ S.Struct({
720
+ idOrName: S.String.pipe(T.Label()),
721
+ state: S.optional(GetRollingReleaseRequestState.pipe(T.Query())),
722
+ teamId: S.optional(S.String.pipe(T.Query())),
723
+ slug: S.optional(S.String.pipe(T.Query())),
724
+ }).pipe(
725
+ T.Http({
726
+ method: "GET",
727
+ uri: "/v1/projects/{idOrName}/rolling-release",
728
+ code: 200,
729
+ }),
730
+ ),
731
+ ).annotate({
732
+ identifier: "GetRollingReleaseRequest",
733
+ }) as any as S.Schema<GetRollingReleaseRequest>;
734
+
735
+ /** The current state of the rolling release */
736
+ export type GetRollingReleaseResponseRollingReleaseState =
737
+ | "ABORTED"
738
+ | "ACTIVE"
739
+ | "COMPLETE";
740
+ export const GetRollingReleaseResponseRollingReleaseState = S.String;
741
+
742
+ /** When set to `PAUSED`, the rollout is frozen at the current percentage until continued. */
743
+ export type GetRollingReleaseResponseRollingReleaseSubstate = "PAUSED";
744
+ export const GetRollingReleaseResponseRollingReleaseSubstate = S.String;
745
+
746
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
747
+ export type GetRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState =
748
+ | "BLOCKED"
749
+ | "BUILDING"
750
+ | "CANCELED"
751
+ | "ERROR"
752
+ | "INITIALIZING"
753
+ | "QUEUED"
754
+ | "READY";
755
+ export const GetRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState =
756
+ S.String;
757
+
758
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
759
+ export type GetRollingReleaseResponseRollingReleaseCurrentDeploymentTarget =
760
+ | "production"
761
+ | "staging";
762
+ export const GetRollingReleaseResponseRollingReleaseCurrentDeploymentTarget =
763
+ S.String;
764
+
765
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
766
+ export type GetRollingReleaseResponseRollingReleaseCurrentDeploymentSource =
767
+ | "api-trigger-git-deploy"
768
+ | "cli"
769
+ | "clone/repo"
770
+ | "drop"
771
+ | "git"
772
+ | "git-deploy-hook"
773
+ | "import"
774
+ | "import/repo"
775
+ | "redeploy"
776
+ | "v0-web";
777
+ export const GetRollingReleaseResponseRollingReleaseCurrentDeploymentSource =
778
+ S.String;
779
+
780
+ /** The current deployment receiving production traffic */
781
+ export interface GetRollingReleaseResponseRollingReleaseCurrentDeployment {
782
+ /** The name of the project associated with the deployment at the time that the deployment was created */
783
+ name: string;
784
+ /** A number containing the date when the deployment was created in milliseconds */
785
+ createdAt: number;
786
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
787
+ readyState: GetRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState;
788
+ /** A string holding the unique ID of the deployment */
789
+ id: string;
790
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
791
+ target?: GetRollingReleaseResponseRollingReleaseCurrentDeploymentTarget | null;
792
+ readyStateAt?: number;
793
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
794
+ source?: GetRollingReleaseResponseRollingReleaseCurrentDeploymentSource;
795
+ /** A string with the unique URL of the deployment */
796
+ url: string;
797
+ }
798
+ export const GetRollingReleaseResponseRollingReleaseCurrentDeployment =
799
+ /*@__PURE__*/ S.suspend(() =>
800
+ S.Struct({
801
+ name: S.String,
802
+ createdAt: S.Number,
803
+ readyState:
804
+ GetRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState,
805
+ id: S.String,
806
+ target: S.optional(
807
+ S.NullOr(
808
+ GetRollingReleaseResponseRollingReleaseCurrentDeploymentTarget,
809
+ ),
810
+ ),
811
+ readyStateAt: S.optional(S.Number),
812
+ source: S.optional(
813
+ GetRollingReleaseResponseRollingReleaseCurrentDeploymentSource,
814
+ ),
815
+ url: S.String,
816
+ }),
817
+ ).annotate({
818
+ identifier: "GetRollingReleaseResponseRollingReleaseCurrentDeployment",
819
+ }) as any as S.Schema<GetRollingReleaseResponseRollingReleaseCurrentDeployment>;
820
+
821
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
822
+ export type GetRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState =
823
+ | "BLOCKED"
824
+ | "BUILDING"
825
+ | "CANCELED"
826
+ | "ERROR"
827
+ | "INITIALIZING"
828
+ | "QUEUED"
829
+ | "READY";
830
+ export const GetRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState =
831
+ S.String;
832
+
833
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
834
+ export type GetRollingReleaseResponseRollingReleaseCanaryDeploymentTarget =
835
+ | "production"
836
+ | "staging";
837
+ export const GetRollingReleaseResponseRollingReleaseCanaryDeploymentTarget =
838
+ S.String;
839
+
840
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
841
+ export type GetRollingReleaseResponseRollingReleaseCanaryDeploymentSource =
842
+ | "api-trigger-git-deploy"
843
+ | "cli"
844
+ | "clone/repo"
845
+ | "drop"
846
+ | "git"
847
+ | "git-deploy-hook"
848
+ | "import"
849
+ | "import/repo"
850
+ | "redeploy"
851
+ | "v0-web";
852
+ export const GetRollingReleaseResponseRollingReleaseCanaryDeploymentSource =
853
+ S.String;
854
+
855
+ /** The canary deployment being rolled out */
856
+ export interface GetRollingReleaseResponseRollingReleaseCanaryDeployment {
857
+ /** The name of the project associated with the deployment at the time that the deployment was created */
858
+ name: string;
859
+ /** A number containing the date when the deployment was created in milliseconds */
860
+ createdAt: number;
861
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
862
+ readyState: GetRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState;
863
+ /** A string holding the unique ID of the deployment */
864
+ id: string;
865
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
866
+ target?: GetRollingReleaseResponseRollingReleaseCanaryDeploymentTarget | null;
867
+ readyStateAt?: number;
868
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
869
+ source?: GetRollingReleaseResponseRollingReleaseCanaryDeploymentSource;
870
+ /** A string with the unique URL of the deployment */
871
+ url: string;
872
+ }
873
+ export const GetRollingReleaseResponseRollingReleaseCanaryDeployment =
874
+ /*@__PURE__*/ S.suspend(() =>
875
+ S.Struct({
876
+ name: S.String,
877
+ createdAt: S.Number,
878
+ readyState:
879
+ GetRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState,
880
+ id: S.String,
881
+ target: S.optional(
882
+ S.NullOr(GetRollingReleaseResponseRollingReleaseCanaryDeploymentTarget),
883
+ ),
884
+ readyStateAt: S.optional(S.Number),
885
+ source: S.optional(
886
+ GetRollingReleaseResponseRollingReleaseCanaryDeploymentSource,
887
+ ),
888
+ url: S.String,
889
+ }),
890
+ ).annotate({
891
+ identifier: "GetRollingReleaseResponseRollingReleaseCanaryDeployment",
892
+ }) as any as S.Schema<GetRollingReleaseResponseRollingReleaseCanaryDeployment>;
893
+
894
+ /** The advancement type of the rolling release */
895
+ export type GetRollingReleaseResponseRollingReleaseAdvancementType =
896
+ | "automatic"
897
+ | "manual-approval";
898
+ export const GetRollingReleaseResponseRollingReleaseAdvancementType = S.String;
899
+
900
+ /** All stages configured for this rolling release */
901
+ export type GetRollingReleaseResponseRollingReleaseStagesItem =
902
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
903
+ export const GetRollingReleaseResponseRollingReleaseStagesItem =
904
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
905
+
906
+ /** All stages configured for this rolling release */
907
+ export type GetRollingReleaseResponseRollingReleaseStagesList =
908
+ Array<ApproveRollingReleaseStageResponseRollingReleaseStagesItem>;
909
+ export const GetRollingReleaseResponseRollingReleaseStagesList =
910
+ /*@__PURE__*/ S.Array(
911
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
912
+ ) as any as S.Schema<GetRollingReleaseResponseRollingReleaseStagesList>;
913
+
914
+ /** The currently active stage, null if the rollout is aborted */
915
+ export type GetRollingReleaseResponseRollingReleaseActiveStage =
916
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
917
+ export const GetRollingReleaseResponseRollingReleaseActiveStage =
918
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
919
+
920
+ /** The next stage to be activated, null if not in ACTIVE state */
921
+ export type GetRollingReleaseResponseRollingReleaseNextStage =
922
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
923
+ export const GetRollingReleaseResponseRollingReleaseNextStage =
924
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
925
+
926
+ /** Rolling release information including configuration and document details, or null if no rolling release exists */
927
+ export interface GetRollingReleaseResponseRollingRelease {
928
+ /** The current state of the rolling release */
929
+ state: GetRollingReleaseResponseRollingReleaseState;
930
+ /** When set to `PAUSED`, the rollout is frozen at the current percentage until continued. */
931
+ substate: GetRollingReleaseResponseRollingReleaseSubstate | null;
932
+ /** The current deployment receiving production traffic */
933
+ currentDeployment: GetRollingReleaseResponseRollingReleaseCurrentDeployment | null;
934
+ /** The canary deployment being rolled out */
935
+ canaryDeployment: GetRollingReleaseResponseRollingReleaseCanaryDeployment | null;
936
+ /** The ID of a deployment queued for the next rolling release */
937
+ queuedDeploymentId: string | null;
938
+ /** The advancement type of the rolling release */
939
+ advancementType: GetRollingReleaseResponseRollingReleaseAdvancementType;
940
+ /** All stages configured for this rolling release */
941
+ stages: GetRollingReleaseResponseRollingReleaseStagesList;
942
+ /** The currently active stage, null if the rollout is aborted */
943
+ activeStage: ApproveRollingReleaseStageResponseRollingReleaseStagesItem | null;
944
+ /** The next stage to be activated, null if not in ACTIVE state */
945
+ nextStage: ApproveRollingReleaseStageResponseRollingReleaseStagesItem | null;
946
+ /** Unix timestamp in milliseconds when the rolling release started */
947
+ startedAt: number;
948
+ /** Unix timestamp in milliseconds when the rolling release was last updated */
949
+ updatedAt: number;
950
+ /** When set (for example while {@link substate} is `PAUSED`), the canary traffic percentage persisted on the rollout document — use for dashboard display when linear shift is active. */
951
+ currentCanaryPercentage?: number;
952
+ }
953
+ export const GetRollingReleaseResponseRollingRelease = /*@__PURE__*/ S.suspend(
954
+ () =>
955
+ S.Struct({
956
+ state: GetRollingReleaseResponseRollingReleaseState,
957
+ substate: S.NullOr(GetRollingReleaseResponseRollingReleaseSubstate),
958
+ currentDeployment: S.NullOr(
959
+ GetRollingReleaseResponseRollingReleaseCurrentDeployment,
960
+ ),
961
+ canaryDeployment: S.NullOr(
962
+ GetRollingReleaseResponseRollingReleaseCanaryDeployment,
963
+ ),
964
+ queuedDeploymentId: S.NullOr(S.String),
965
+ advancementType: GetRollingReleaseResponseRollingReleaseAdvancementType,
966
+ stages: GetRollingReleaseResponseRollingReleaseStagesList,
967
+ activeStage: S.NullOr(
968
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
969
+ ),
970
+ nextStage: S.NullOr(
971
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
972
+ ),
973
+ startedAt: S.Number,
974
+ updatedAt: S.Number,
975
+ currentCanaryPercentage: S.optional(S.Number),
976
+ }),
977
+ ).annotate({
978
+ identifier: "GetRollingReleaseResponseRollingRelease",
979
+ }) as any as S.Schema<GetRollingReleaseResponseRollingRelease>;
980
+
981
+ export interface GetRollingReleaseResponse {
982
+ /** Rolling release information including configuration and document details, or null if no rolling release exists */
983
+ rollingRelease: GetRollingReleaseResponseRollingRelease | null;
984
+ }
985
+ export const GetRollingReleaseResponse = /*@__PURE__*/ S.suspend(() =>
986
+ S.Struct({
987
+ rollingRelease: S.NullOr(GetRollingReleaseResponseRollingRelease),
988
+ }),
989
+ ).annotate({
990
+ identifier: "GetRollingReleaseResponse",
991
+ }) as any as S.Schema<GetRollingReleaseResponse>;
992
+
993
+ export interface GetRollingReleaseBillingStatusRequest {
994
+ /** Project ID or project name (URL-encoded) */
995
+ idOrName: string;
996
+ /** The Team identifier to perform the request on behalf of. */
997
+ teamId?: string;
998
+ /** The Team slug to perform the request on behalf of. */
999
+ slug?: string;
1000
+ }
1001
+ export const GetRollingReleaseBillingStatusRequest = /*@__PURE__*/ S.suspend(
1002
+ () =>
1003
+ S.Struct({
1004
+ idOrName: S.String.pipe(T.Label()),
1005
+ teamId: S.optional(S.String.pipe(T.Query())),
1006
+ slug: S.optional(S.String.pipe(T.Query())),
1007
+ }).pipe(
1008
+ T.Http({
1009
+ method: "GET",
1010
+ uri: "/v1/projects/{idOrName}/rolling-release/billing",
1011
+ code: 200,
1012
+ }),
1013
+ ),
1014
+ ).annotate({
1015
+ identifier: "GetRollingReleaseBillingStatusRequest",
1016
+ }) as any as S.Schema<GetRollingReleaseBillingStatusRequest>;
1017
+
1018
+ export type GetRollingReleaseBillingStatusResponseBodyCase0AvailableSlots = 0;
1019
+ export const GetRollingReleaseBillingStatusResponseBodyCase0AvailableSlots =
1020
+ S.Number;
1021
+
1022
+ export type GetRollingReleaseBillingStatusResponseBodyCase0Reason =
1023
+ "plan_not_supported";
1024
+ export const GetRollingReleaseBillingStatusResponseBodyCase0Reason = S.String;
1025
+
1026
+ export interface GetRollingReleaseBillingStatusResponseBodyCase0 {
1027
+ availableSlots: GetRollingReleaseBillingStatusResponseBodyCase0AvailableSlots;
1028
+ reason: GetRollingReleaseBillingStatusResponseBodyCase0Reason;
1029
+ message: string;
1030
+ }
1031
+ export const GetRollingReleaseBillingStatusResponseBodyCase0 =
1032
+ /*@__PURE__*/ S.suspend(() =>
1033
+ S.Struct({
1034
+ availableSlots:
1035
+ GetRollingReleaseBillingStatusResponseBodyCase0AvailableSlots,
1036
+ reason: GetRollingReleaseBillingStatusResponseBodyCase0Reason,
1037
+ message: S.String,
1038
+ }),
1039
+ ).annotate({
1040
+ identifier: "GetRollingReleaseBillingStatusResponseBodyCase0",
1041
+ }) as any as S.Schema<GetRollingReleaseBillingStatusResponseBodyCase0>;
1042
+
1043
+ export type GetRollingReleaseBillingStatusResponseBodyCase1AvailableSlots =
1044
+ "unlimited";
1045
+ export const GetRollingReleaseBillingStatusResponseBodyCase1AvailableSlots =
1046
+ S.String;
1047
+
1048
+ export type GetRollingReleaseBillingStatusResponseBodyCase1Reason =
1049
+ "unlimited_slots";
1050
+ export const GetRollingReleaseBillingStatusResponseBodyCase1Reason = S.String;
1051
+
1052
+ export interface GetRollingReleaseBillingStatusResponseBodyCase1 {
1053
+ availableSlots: GetRollingReleaseBillingStatusResponseBodyCase1AvailableSlots;
1054
+ reason: GetRollingReleaseBillingStatusResponseBodyCase1Reason;
1055
+ message: string;
1056
+ }
1057
+ export const GetRollingReleaseBillingStatusResponseBodyCase1 =
1058
+ /*@__PURE__*/ S.suspend(() =>
1059
+ S.Struct({
1060
+ availableSlots:
1061
+ GetRollingReleaseBillingStatusResponseBodyCase1AvailableSlots,
1062
+ reason: GetRollingReleaseBillingStatusResponseBodyCase1Reason,
1063
+ message: S.String,
1064
+ }),
1065
+ ).annotate({
1066
+ identifier: "GetRollingReleaseBillingStatusResponseBodyCase1",
1067
+ }) as any as S.Schema<GetRollingReleaseBillingStatusResponseBodyCase1>;
1068
+
1069
+ export type GetRollingReleaseBillingStatusResponseBodyCase2AvailableSlots = 0;
1070
+ export const GetRollingReleaseBillingStatusResponseBodyCase2AvailableSlots =
1071
+ S.Number;
1072
+
1073
+ export type GetRollingReleaseBillingStatusResponseBodyCase2Reason =
1074
+ "no_available_slots";
1075
+ export const GetRollingReleaseBillingStatusResponseBodyCase2Reason = S.String;
1076
+
1077
+ export type GetRollingReleaseBillingStatusResponseBodyCase2EnabledProjectsList =
1078
+ Array<string>;
1079
+ export const GetRollingReleaseBillingStatusResponseBodyCase2EnabledProjectsList =
1080
+ /*@__PURE__*/ S.Array(
1081
+ S.String,
1082
+ ) as any as S.Schema<GetRollingReleaseBillingStatusResponseBodyCase2EnabledProjectsList>;
1083
+
1084
+ export interface GetRollingReleaseBillingStatusResponseBodyCase2 {
1085
+ availableSlots: GetRollingReleaseBillingStatusResponseBodyCase2AvailableSlots;
1086
+ reason: GetRollingReleaseBillingStatusResponseBodyCase2Reason;
1087
+ message: string;
1088
+ enabledProjects: GetRollingReleaseBillingStatusResponseBodyCase2EnabledProjectsList;
1089
+ }
1090
+ export const GetRollingReleaseBillingStatusResponseBodyCase2 =
1091
+ /*@__PURE__*/ S.suspend(() =>
1092
+ S.Struct({
1093
+ availableSlots:
1094
+ GetRollingReleaseBillingStatusResponseBodyCase2AvailableSlots,
1095
+ reason: GetRollingReleaseBillingStatusResponseBodyCase2Reason,
1096
+ message: S.String,
1097
+ enabledProjects:
1098
+ GetRollingReleaseBillingStatusResponseBodyCase2EnabledProjectsList,
1099
+ }),
1100
+ ).annotate({
1101
+ identifier: "GetRollingReleaseBillingStatusResponseBodyCase2",
1102
+ }) as any as S.Schema<GetRollingReleaseBillingStatusResponseBodyCase2>;
1103
+
1104
+ export type GetRollingReleaseBillingStatusResponseBodyCase3Reason =
1105
+ "available_slots";
1106
+ export const GetRollingReleaseBillingStatusResponseBodyCase3Reason = S.String;
1107
+
1108
+ export interface GetRollingReleaseBillingStatusResponseBodyCase3 {
1109
+ availableSlots: number;
1110
+ reason: GetRollingReleaseBillingStatusResponseBodyCase3Reason;
1111
+ message: string;
1112
+ }
1113
+ export const GetRollingReleaseBillingStatusResponseBodyCase3 =
1114
+ /*@__PURE__*/ S.suspend(() =>
1115
+ S.Struct({
1116
+ availableSlots: S.Number,
1117
+ reason: GetRollingReleaseBillingStatusResponseBodyCase3Reason,
1118
+ message: S.String,
1119
+ }),
1120
+ ).annotate({
1121
+ identifier: "GetRollingReleaseBillingStatusResponseBodyCase3",
1122
+ }) as any as S.Schema<GetRollingReleaseBillingStatusResponseBodyCase3>;
1123
+
1124
+ export type GetRollingReleaseBillingStatusResponseBody =
1125
+ | GetRollingReleaseBillingStatusResponseBodyCase0
1126
+ | GetRollingReleaseBillingStatusResponseBodyCase1
1127
+ | GetRollingReleaseBillingStatusResponseBodyCase2
1128
+ | GetRollingReleaseBillingStatusResponseBodyCase3;
1129
+ export const GetRollingReleaseBillingStatusResponseBody =
1130
+ S.Unknown as any as S.Schema<GetRollingReleaseBillingStatusResponseBody>;
1131
+
1132
+ export type GetRollingReleaseBillingStatusResponse =
1133
+ GetRollingReleaseBillingStatusResponseBody;
1134
+ export const GetRollingReleaseBillingStatusResponse = /*@__PURE__*/ S.suspend(
1135
+ () => GetRollingReleaseBillingStatusResponseBody.pipe(T.RawResponseRoot()),
1136
+ ).annotate({
1137
+ identifier: "GetRollingReleaseBillingStatusResponse",
1138
+ }) as any as S.Schema<GetRollingReleaseBillingStatusResponse>;
1139
+
1140
+ export interface GetRollingReleaseConfigRequest {
1141
+ /** Project ID or project name (URL-encoded) */
1142
+ idOrName: string;
1143
+ /** The Team identifier to perform the request on behalf of. */
1144
+ teamId?: string;
1145
+ /** The Team slug to perform the request on behalf of. */
1146
+ slug?: string;
1147
+ }
1148
+ export const GetRollingReleaseConfigRequest = /*@__PURE__*/ S.suspend(() =>
1149
+ S.Struct({
1150
+ idOrName: S.String.pipe(T.Label()),
1151
+ teamId: S.optional(S.String.pipe(T.Query())),
1152
+ slug: S.optional(S.String.pipe(T.Query())),
1153
+ }).pipe(
1154
+ T.Http({
1155
+ method: "GET",
1156
+ uri: "/v1/projects/{idOrName}/rolling-release/config",
1157
+ code: 200,
1158
+ }),
1159
+ ),
1160
+ ).annotate({
1161
+ identifier: "GetRollingReleaseConfigRequest",
1162
+ }) as any as S.Schema<GetRollingReleaseConfigRequest>;
1163
+
1164
+ /** An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100. */
1165
+ export interface GetRollingReleaseConfigResponseRollingReleaseStagesItem {
1166
+ /** The percentage of traffic to serve to the canary deployment (0-100) */
1167
+ targetPercentage: number;
1168
+ /** Whether or not this stage requires manual approval to proceed */
1169
+ requireApproval?: boolean;
1170
+ /** Duration in minutes for automatic advancement to the next stage */
1171
+ duration?: number;
1172
+ /** Whether to linearly shift traffic over the duration of this stage */
1173
+ linearShift?: boolean;
1174
+ }
1175
+ export const GetRollingReleaseConfigResponseRollingReleaseStagesItem =
1176
+ /*@__PURE__*/ S.suspend(() =>
1177
+ S.Struct({
1178
+ targetPercentage: S.Number,
1179
+ requireApproval: S.optional(S.Boolean),
1180
+ duration: S.optional(S.Number),
1181
+ linearShift: S.optional(S.Boolean),
1182
+ }),
1183
+ ).annotate({
1184
+ identifier: "GetRollingReleaseConfigResponseRollingReleaseStagesItem",
1185
+ }) as any as S.Schema<GetRollingReleaseConfigResponseRollingReleaseStagesItem>;
1186
+
1187
+ /** An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100. */
1188
+ export type GetRollingReleaseConfigResponseRollingReleaseStagesList =
1189
+ Array<GetRollingReleaseConfigResponseRollingReleaseStagesItem>;
1190
+ export const GetRollingReleaseConfigResponseRollingReleaseStagesList =
1191
+ /*@__PURE__*/ S.Array(
1192
+ GetRollingReleaseConfigResponseRollingReleaseStagesItem,
1193
+ ) as any as S.Schema<GetRollingReleaseConfigResponseRollingReleaseStagesList>;
1194
+
1195
+ /** The metric this check evaluates. */
1196
+ export type GetRollingReleaseConfigResponseRollingReleaseGateChecksItemType =
1197
+ "error-rate-5xx";
1198
+ export const GetRollingReleaseConfigResponseRollingReleaseGateChecksItemType =
1199
+ S.String;
1200
+
1201
+ /** Response status codes to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Defaults to `[]` when omitted. */
1202
+ export type GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludeStatusCodesList =
1203
+ Array<number>;
1204
+ export const GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludeStatusCodesList =
1205
+ /*@__PURE__*/ S.Array(
1206
+ S.Number,
1207
+ ) as any as S.Schema<GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludeStatusCodesList>;
1208
+
1209
+ /** Request paths to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Matched exactly against the request path with any query string removed; no prefix or glob matching. Defaults to `[]` when omitted. */
1210
+ export type GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludePathsList =
1211
+ Array<string>;
1212
+ export const GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludePathsList =
1213
+ /*@__PURE__*/ S.Array(
1214
+ S.String,
1215
+ ) as any as S.Schema<GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludePathsList>;
1216
+
1217
+ /** The checks to evaluate. An empty array means nothing is evaluated. */
1218
+ export interface GetRollingReleaseConfigResponseRollingReleaseGateChecksItem {
1219
+ /** The metric this check evaluates. */
1220
+ type: GetRollingReleaseConfigResponseRollingReleaseGateChecksItemType;
1221
+ /** Minimum number of requests required in the window before the check can fail. Below this, the check is inconclusive rather than failing, so low-traffic stages don't gate on noise. Defaults to `100` when omitted. */
1222
+ minSampleSize?: number;
1223
+ /** Response status codes to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Defaults to `[]` when omitted. */
1224
+ excludeStatusCodes?: GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludeStatusCodesList;
1225
+ /** Request paths to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Matched exactly against the request path with any query string removed; no prefix or glob matching. Defaults to `[]` when omitted. */
1226
+ excludePaths?: GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludePathsList;
1227
+ /** Seconds of ingest lag to allow for: the query's upper bound is `now() - this value`, so the check never reads a window that is still filling. Defaults to `30` when omitted. */
1228
+ ingestWatermarkSeconds?: number;
1229
+ }
1230
+ export const GetRollingReleaseConfigResponseRollingReleaseGateChecksItem =
1231
+ /*@__PURE__*/ S.suspend(() =>
1232
+ S.Struct({
1233
+ type: GetRollingReleaseConfigResponseRollingReleaseGateChecksItemType,
1234
+ minSampleSize: S.optional(S.Number),
1235
+ excludeStatusCodes: S.optional(
1236
+ GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludeStatusCodesList,
1237
+ ),
1238
+ excludePaths: S.optional(
1239
+ GetRollingReleaseConfigResponseRollingReleaseGateChecksItemExcludePathsList,
1240
+ ),
1241
+ ingestWatermarkSeconds: S.optional(S.Number),
1242
+ }),
1243
+ ).annotate({
1244
+ identifier: "GetRollingReleaseConfigResponseRollingReleaseGateChecksItem",
1245
+ }) as any as S.Schema<GetRollingReleaseConfigResponseRollingReleaseGateChecksItem>;
1246
+
1247
+ /** The checks to evaluate. An empty array means nothing is evaluated. */
1248
+ export type GetRollingReleaseConfigResponseRollingReleaseGateChecksList =
1249
+ Array<GetRollingReleaseConfigResponseRollingReleaseGateChecksItem>;
1250
+ export const GetRollingReleaseConfigResponseRollingReleaseGateChecksList =
1251
+ /*@__PURE__*/ S.Array(
1252
+ GetRollingReleaseConfigResponseRollingReleaseGateChecksItem,
1253
+ ) as any as S.Schema<GetRollingReleaseConfigResponseRollingReleaseGateChecksList>;
1254
+
1255
+ /** What to do when the gate trips: pause the rollout, or roll it back. */
1256
+ export type GetRollingReleaseConfigResponseRollingReleaseGateAction =
1257
+ | "pause"
1258
+ | "rollback";
1259
+ export const GetRollingReleaseConfigResponseRollingReleaseGateAction = S.String;
1260
+
1261
+ /** Automated gating configuration. Omitted (the default) means no gating is configured, which is equivalent to `enabled: false`. */
1262
+ export interface GetRollingReleaseConfigResponseRollingReleaseGate {
1263
+ /** Whether automated gating is enabled for this project's rollouts. */
1264
+ enabled: boolean;
1265
+ /** The checks to evaluate. An empty array means nothing is evaluated. */
1266
+ checks: GetRollingReleaseConfigResponseRollingReleaseGateChecksList;
1267
+ /** How many failing evaluations within {@link windowSize} trip the gate. Defaults to `3` when omitted. */
1268
+ failureThreshold?: number;
1269
+ /** How many of the most recent evaluations {@link failureThreshold} is counted against. Defaults to `5` when omitted. */
1270
+ windowSize?: number;
1271
+ /** What to do when the gate trips: pause the rollout, or roll it back. */
1272
+ action: GetRollingReleaseConfigResponseRollingReleaseGateAction;
1273
+ /** When true, a tripped gate is only reported — {@link action} is not taken. */
1274
+ dryRun: boolean;
1275
+ }
1276
+ export const GetRollingReleaseConfigResponseRollingReleaseGate =
1277
+ /*@__PURE__*/ S.suspend(() =>
1278
+ S.Struct({
1279
+ enabled: S.Boolean,
1280
+ checks: GetRollingReleaseConfigResponseRollingReleaseGateChecksList,
1281
+ failureThreshold: S.optional(S.Number),
1282
+ windowSize: S.optional(S.Number),
1283
+ action: GetRollingReleaseConfigResponseRollingReleaseGateAction,
1284
+ dryRun: S.Boolean,
1285
+ }),
1286
+ ).annotate({
1287
+ identifier: "GetRollingReleaseConfigResponseRollingReleaseGate",
1288
+ }) as any as S.Schema<GetRollingReleaseConfigResponseRollingReleaseGate>;
1289
+
1290
+ /** Project-level rolling release configuration that defines how deployments should be gradually rolled out */
1291
+ export interface GetRollingReleaseConfigResponseRollingRelease {
1292
+ /** The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments. */
1293
+ target: string;
1294
+ /** An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100. */
1295
+ stages?: GetRollingReleaseConfigResponseRollingReleaseStagesList | null;
1296
+ /** Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted. */
1297
+ canaryResponseHeader?: boolean;
1298
+ /** Automated gating configuration. Omitted (the default) means no gating is configured, which is equivalent to `enabled: false`. */
1299
+ gate?: GetRollingReleaseConfigResponseRollingReleaseGate;
1300
+ }
1301
+ export const GetRollingReleaseConfigResponseRollingRelease =
1302
+ /*@__PURE__*/ S.suspend(() =>
1303
+ S.Struct({
1304
+ target: S.String,
1305
+ stages: S.optional(
1306
+ S.NullOr(GetRollingReleaseConfigResponseRollingReleaseStagesList),
1307
+ ),
1308
+ canaryResponseHeader: S.optional(S.Boolean),
1309
+ gate: S.optional(GetRollingReleaseConfigResponseRollingReleaseGate),
1310
+ }),
1311
+ ).annotate({
1312
+ identifier: "GetRollingReleaseConfigResponseRollingRelease",
1313
+ }) as any as S.Schema<GetRollingReleaseConfigResponseRollingRelease>;
1314
+
1315
+ export interface GetRollingReleaseConfigResponse {
1316
+ /** Project-level rolling release configuration that defines how deployments should be gradually rolled out */
1317
+ rollingRelease: GetRollingReleaseConfigResponseRollingRelease | null;
1318
+ }
1319
+ export const GetRollingReleaseConfigResponse = /*@__PURE__*/ S.suspend(() =>
1320
+ S.Struct({
1321
+ rollingRelease: S.NullOr(GetRollingReleaseConfigResponseRollingRelease),
1322
+ }),
1323
+ ).annotate({
1324
+ identifier: "GetRollingReleaseConfigResponse",
1325
+ }) as any as S.Schema<GetRollingReleaseConfigResponse>;
1326
+
1327
+ export interface StartRollingReleaseRequest {
1328
+ /** Project ID or project name (URL-encoded) */
1329
+ idOrName: string;
1330
+ /** The Team identifier to perform the request on behalf of. */
1331
+ teamId?: string;
1332
+ /** The Team slug to perform the request on behalf of. */
1333
+ slug?: string;
1334
+ /** The ID of the canary deployment to start the rolling release for */
1335
+ canaryDeploymentId: string;
1336
+ }
1337
+ export const StartRollingReleaseRequest = /*@__PURE__*/ S.suspend(() =>
1338
+ S.Struct({
1339
+ idOrName: S.String.pipe(T.Label()),
1340
+ teamId: S.optional(S.String.pipe(T.Query())),
1341
+ slug: S.optional(S.String.pipe(T.Query())),
1342
+ canaryDeploymentId: S.String,
1343
+ }).pipe(
1344
+ T.Http({
1345
+ method: "POST",
1346
+ uri: "/v1/projects/{idOrName}/rolling-release/start",
1347
+ code: 200,
1348
+ }),
1349
+ ),
1350
+ ).annotate({
1351
+ identifier: "StartRollingReleaseRequest",
1352
+ }) as any as S.Schema<StartRollingReleaseRequest>;
1353
+
1354
+ /** The current state of the rolling release */
1355
+ export type StartRollingReleaseResponseRollingReleaseState =
1356
+ | "ABORTED"
1357
+ | "ACTIVE"
1358
+ | "COMPLETE";
1359
+ export const StartRollingReleaseResponseRollingReleaseState = S.String;
1360
+
1361
+ /** When set to `PAUSED`, the rollout is frozen at the current percentage until continued. */
1362
+ export type StartRollingReleaseResponseRollingReleaseSubstate = "PAUSED";
1363
+ export const StartRollingReleaseResponseRollingReleaseSubstate = S.String;
1364
+
1365
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
1366
+ export type StartRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState =
1367
+ | "BLOCKED"
1368
+ | "BUILDING"
1369
+ | "CANCELED"
1370
+ | "ERROR"
1371
+ | "INITIALIZING"
1372
+ | "QUEUED"
1373
+ | "READY";
1374
+ export const StartRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState =
1375
+ S.String;
1376
+
1377
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
1378
+ export type StartRollingReleaseResponseRollingReleaseCurrentDeploymentTarget =
1379
+ | "production"
1380
+ | "staging";
1381
+ export const StartRollingReleaseResponseRollingReleaseCurrentDeploymentTarget =
1382
+ S.String;
1383
+
1384
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
1385
+ export type StartRollingReleaseResponseRollingReleaseCurrentDeploymentSource =
1386
+ | "api-trigger-git-deploy"
1387
+ | "cli"
1388
+ | "clone/repo"
1389
+ | "drop"
1390
+ | "git"
1391
+ | "git-deploy-hook"
1392
+ | "import"
1393
+ | "import/repo"
1394
+ | "redeploy"
1395
+ | "v0-web";
1396
+ export const StartRollingReleaseResponseRollingReleaseCurrentDeploymentSource =
1397
+ S.String;
1398
+
1399
+ /** The current deployment receiving production traffic */
1400
+ export interface StartRollingReleaseResponseRollingReleaseCurrentDeployment {
1401
+ /** The name of the project associated with the deployment at the time that the deployment was created */
1402
+ name: string;
1403
+ /** A number containing the date when the deployment was created in milliseconds */
1404
+ createdAt: number;
1405
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
1406
+ readyState: StartRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState;
1407
+ /** A string holding the unique ID of the deployment */
1408
+ id: string;
1409
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
1410
+ target?: StartRollingReleaseResponseRollingReleaseCurrentDeploymentTarget | null;
1411
+ readyStateAt?: number;
1412
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
1413
+ source?: StartRollingReleaseResponseRollingReleaseCurrentDeploymentSource;
1414
+ /** A string with the unique URL of the deployment */
1415
+ url: string;
1416
+ }
1417
+ export const StartRollingReleaseResponseRollingReleaseCurrentDeployment =
1418
+ /*@__PURE__*/ S.suspend(() =>
1419
+ S.Struct({
1420
+ name: S.String,
1421
+ createdAt: S.Number,
1422
+ readyState:
1423
+ StartRollingReleaseResponseRollingReleaseCurrentDeploymentReadyState,
1424
+ id: S.String,
1425
+ target: S.optional(
1426
+ S.NullOr(
1427
+ StartRollingReleaseResponseRollingReleaseCurrentDeploymentTarget,
1428
+ ),
1429
+ ),
1430
+ readyStateAt: S.optional(S.Number),
1431
+ source: S.optional(
1432
+ StartRollingReleaseResponseRollingReleaseCurrentDeploymentSource,
1433
+ ),
1434
+ url: S.String,
1435
+ }),
1436
+ ).annotate({
1437
+ identifier: "StartRollingReleaseResponseRollingReleaseCurrentDeployment",
1438
+ }) as any as S.Schema<StartRollingReleaseResponseRollingReleaseCurrentDeployment>;
1439
+
1440
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
1441
+ export type StartRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState =
1442
+ | "BLOCKED"
1443
+ | "BUILDING"
1444
+ | "CANCELED"
1445
+ | "ERROR"
1446
+ | "INITIALIZING"
1447
+ | "QUEUED"
1448
+ | "READY";
1449
+ export const StartRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState =
1450
+ S.String;
1451
+
1452
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
1453
+ export type StartRollingReleaseResponseRollingReleaseCanaryDeploymentTarget =
1454
+ | "production"
1455
+ | "staging";
1456
+ export const StartRollingReleaseResponseRollingReleaseCanaryDeploymentTarget =
1457
+ S.String;
1458
+
1459
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
1460
+ export type StartRollingReleaseResponseRollingReleaseCanaryDeploymentSource =
1461
+ | "api-trigger-git-deploy"
1462
+ | "cli"
1463
+ | "clone/repo"
1464
+ | "drop"
1465
+ | "git"
1466
+ | "git-deploy-hook"
1467
+ | "import"
1468
+ | "import/repo"
1469
+ | "redeploy"
1470
+ | "v0-web";
1471
+ export const StartRollingReleaseResponseRollingReleaseCanaryDeploymentSource =
1472
+ S.String;
1473
+
1474
+ /** The canary deployment being rolled out */
1475
+ export interface StartRollingReleaseResponseRollingReleaseCanaryDeployment {
1476
+ /** The name of the project associated with the deployment at the time that the deployment was created */
1477
+ name: string;
1478
+ /** A number containing the date when the deployment was created in milliseconds */
1479
+ createdAt: number;
1480
+ /** The state of the deployment depending on the process of deploying, or if it is ready or in an error state */
1481
+ readyState: StartRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState;
1482
+ /** A string holding the unique ID of the deployment */
1483
+ id: string;
1484
+ /** If defined, either `staging` if a staging alias in the format `<project>.<team>.now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the "preview" deployment. */
1485
+ target?: StartRollingReleaseResponseRollingReleaseCanaryDeploymentTarget | null;
1486
+ readyStateAt?: number;
1487
+ /** Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it. */
1488
+ source?: StartRollingReleaseResponseRollingReleaseCanaryDeploymentSource;
1489
+ /** A string with the unique URL of the deployment */
1490
+ url: string;
1491
+ }
1492
+ export const StartRollingReleaseResponseRollingReleaseCanaryDeployment =
1493
+ /*@__PURE__*/ S.suspend(() =>
1494
+ S.Struct({
1495
+ name: S.String,
1496
+ createdAt: S.Number,
1497
+ readyState:
1498
+ StartRollingReleaseResponseRollingReleaseCanaryDeploymentReadyState,
1499
+ id: S.String,
1500
+ target: S.optional(
1501
+ S.NullOr(
1502
+ StartRollingReleaseResponseRollingReleaseCanaryDeploymentTarget,
1503
+ ),
1504
+ ),
1505
+ readyStateAt: S.optional(S.Number),
1506
+ source: S.optional(
1507
+ StartRollingReleaseResponseRollingReleaseCanaryDeploymentSource,
1508
+ ),
1509
+ url: S.String,
1510
+ }),
1511
+ ).annotate({
1512
+ identifier: "StartRollingReleaseResponseRollingReleaseCanaryDeployment",
1513
+ }) as any as S.Schema<StartRollingReleaseResponseRollingReleaseCanaryDeployment>;
1514
+
1515
+ /** The advancement type of the rolling release */
1516
+ export type StartRollingReleaseResponseRollingReleaseAdvancementType =
1517
+ | "automatic"
1518
+ | "manual-approval";
1519
+ export const StartRollingReleaseResponseRollingReleaseAdvancementType =
1520
+ S.String;
1521
+
1522
+ /** All stages configured for this rolling release */
1523
+ export type StartRollingReleaseResponseRollingReleaseStagesItem =
1524
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
1525
+ export const StartRollingReleaseResponseRollingReleaseStagesItem =
1526
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
1527
+
1528
+ /** All stages configured for this rolling release */
1529
+ export type StartRollingReleaseResponseRollingReleaseStagesList =
1530
+ Array<ApproveRollingReleaseStageResponseRollingReleaseStagesItem>;
1531
+ export const StartRollingReleaseResponseRollingReleaseStagesList =
1532
+ /*@__PURE__*/ S.Array(
1533
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
1534
+ ) as any as S.Schema<StartRollingReleaseResponseRollingReleaseStagesList>;
1535
+
1536
+ /** The currently active stage, null if the rollout is aborted */
1537
+ export type StartRollingReleaseResponseRollingReleaseActiveStage =
1538
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
1539
+ export const StartRollingReleaseResponseRollingReleaseActiveStage =
1540
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
1541
+
1542
+ /** The next stage to be activated, null if not in ACTIVE state */
1543
+ export type StartRollingReleaseResponseRollingReleaseNextStage =
1544
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
1545
+ export const StartRollingReleaseResponseRollingReleaseNextStage =
1546
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem;
1547
+
1548
+ /** Rolling release information including configuration and document details, or null if no rolling release exists */
1549
+ export interface StartRollingReleaseResponseRollingRelease {
1550
+ /** The current state of the rolling release */
1551
+ state: StartRollingReleaseResponseRollingReleaseState;
1552
+ /** When set to `PAUSED`, the rollout is frozen at the current percentage until continued. */
1553
+ substate: StartRollingReleaseResponseRollingReleaseSubstate | null;
1554
+ /** The current deployment receiving production traffic */
1555
+ currentDeployment: StartRollingReleaseResponseRollingReleaseCurrentDeployment | null;
1556
+ /** The canary deployment being rolled out */
1557
+ canaryDeployment: StartRollingReleaseResponseRollingReleaseCanaryDeployment | null;
1558
+ /** The ID of a deployment queued for the next rolling release */
1559
+ queuedDeploymentId: string | null;
1560
+ /** The advancement type of the rolling release */
1561
+ advancementType: StartRollingReleaseResponseRollingReleaseAdvancementType;
1562
+ /** All stages configured for this rolling release */
1563
+ stages: StartRollingReleaseResponseRollingReleaseStagesList;
1564
+ /** The currently active stage, null if the rollout is aborted */
1565
+ activeStage: ApproveRollingReleaseStageResponseRollingReleaseStagesItem | null;
1566
+ /** The next stage to be activated, null if not in ACTIVE state */
1567
+ nextStage: ApproveRollingReleaseStageResponseRollingReleaseStagesItem | null;
1568
+ /** Unix timestamp in milliseconds when the rolling release started */
1569
+ startedAt: number;
1570
+ /** Unix timestamp in milliseconds when the rolling release was last updated */
1571
+ updatedAt: number;
1572
+ /** When set (for example while {@link substate} is `PAUSED`), the canary traffic percentage persisted on the rollout document — use for dashboard display when linear shift is active. */
1573
+ currentCanaryPercentage?: number;
1574
+ }
1575
+ export const StartRollingReleaseResponseRollingRelease =
1576
+ /*@__PURE__*/ S.suspend(() =>
1577
+ S.Struct({
1578
+ state: StartRollingReleaseResponseRollingReleaseState,
1579
+ substate: S.NullOr(StartRollingReleaseResponseRollingReleaseSubstate),
1580
+ currentDeployment: S.NullOr(
1581
+ StartRollingReleaseResponseRollingReleaseCurrentDeployment,
1582
+ ),
1583
+ canaryDeployment: S.NullOr(
1584
+ StartRollingReleaseResponseRollingReleaseCanaryDeployment,
1585
+ ),
1586
+ queuedDeploymentId: S.NullOr(S.String),
1587
+ advancementType: StartRollingReleaseResponseRollingReleaseAdvancementType,
1588
+ stages: StartRollingReleaseResponseRollingReleaseStagesList,
1589
+ activeStage: S.NullOr(
1590
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
1591
+ ),
1592
+ nextStage: S.NullOr(
1593
+ ApproveRollingReleaseStageResponseRollingReleaseStagesItem,
1594
+ ),
1595
+ startedAt: S.Number,
1596
+ updatedAt: S.Number,
1597
+ currentCanaryPercentage: S.optional(S.Number),
1598
+ }),
1599
+ ).annotate({
1600
+ identifier: "StartRollingReleaseResponseRollingRelease",
1601
+ }) as any as S.Schema<StartRollingReleaseResponseRollingRelease>;
1602
+
1603
+ export interface StartRollingReleaseResponse {
1604
+ /** Rolling release information including configuration and document details, or null if no rolling release exists */
1605
+ rollingRelease: StartRollingReleaseResponseRollingRelease | null;
1606
+ }
1607
+ export const StartRollingReleaseResponse = /*@__PURE__*/ S.suspend(() =>
1608
+ S.Struct({
1609
+ rollingRelease: S.NullOr(StartRollingReleaseResponseRollingRelease),
1610
+ }),
1611
+ ).annotate({
1612
+ identifier: "StartRollingReleaseResponse",
1613
+ }) as any as S.Schema<StartRollingReleaseResponse>;
1614
+
1615
+ export interface UpdateRollingReleaseConfigRequest {
1616
+ /** Project ID or project name (URL-encoded) */
1617
+ idOrName: string;
1618
+ /** The Team identifier to perform the request on behalf of. */
1619
+ teamId?: string;
1620
+ /** The Team slug to perform the request on behalf of. */
1621
+ slug?: string;
1622
+ }
1623
+ export const UpdateRollingReleaseConfigRequest = /*@__PURE__*/ S.suspend(() =>
1624
+ S.Struct({
1625
+ idOrName: S.String.pipe(T.Label()),
1626
+ teamId: S.optional(S.String.pipe(T.Query())),
1627
+ slug: S.optional(S.String.pipe(T.Query())),
1628
+ }).pipe(
1629
+ T.Http({
1630
+ method: "PATCH",
1631
+ uri: "/v1/projects/{idOrName}/rolling-release/config",
1632
+ code: 200,
1633
+ }),
1634
+ ),
1635
+ ).annotate({
1636
+ identifier: "UpdateRollingReleaseConfigRequest",
1637
+ }) as any as S.Schema<UpdateRollingReleaseConfigRequest>;
1638
+
1639
+ export interface UpdateRollingReleaseConfigResponseBodyCase0 {
1640
+ rollingRelease: unknown | null;
1641
+ }
1642
+ export const UpdateRollingReleaseConfigResponseBodyCase0 =
1643
+ /*@__PURE__*/ S.suspend(() =>
1644
+ S.Struct({
1645
+ rollingRelease: S.NullOr(S.Unknown),
1646
+ }),
1647
+ ).annotate({
1648
+ identifier: "UpdateRollingReleaseConfigResponseBodyCase0",
1649
+ }) as any as S.Schema<UpdateRollingReleaseConfigResponseBodyCase0>;
1650
+
1651
+ /** A stage object configured for a rolling release once a new deployment is triggered the first stage will be read in the proxy for first time visitors, and if a RNG < targetPercentage then it will serve the new deployment. Upon approval the next stage will be read, etc. */
1652
+ export type UpdateRollingReleaseConfigResponseBodyCase1RollingReleaseStagesItem =
1653
+ GetRollingReleaseConfigResponseRollingReleaseStagesItem;
1654
+ export const UpdateRollingReleaseConfigResponseBodyCase1RollingReleaseStagesItem =
1655
+ GetRollingReleaseConfigResponseRollingReleaseStagesItem;
1656
+
1657
+ export type UpdateRollingReleaseConfigResponseBodyCase1RollingReleaseStagesList =
1658
+ Array<GetRollingReleaseConfigResponseRollingReleaseStagesItem>;
1659
+ export const UpdateRollingReleaseConfigResponseBodyCase1RollingReleaseStagesList =
1660
+ /*@__PURE__*/ S.Array(
1661
+ GetRollingReleaseConfigResponseRollingReleaseStagesItem,
1662
+ ) as any as S.Schema<UpdateRollingReleaseConfigResponseBodyCase1RollingReleaseStagesList>;
1663
+
1664
+ export interface UpdateRollingReleaseConfigResponseBodyCase1RollingRelease {
1665
+ stages?: UpdateRollingReleaseConfigResponseBodyCase1RollingReleaseStagesList | null;
1666
+ }
1667
+ export const UpdateRollingReleaseConfigResponseBodyCase1RollingRelease =
1668
+ /*@__PURE__*/ S.suspend(() =>
1669
+ S.Struct({
1670
+ stages: S.optional(
1671
+ S.NullOr(
1672
+ UpdateRollingReleaseConfigResponseBodyCase1RollingReleaseStagesList,
1673
+ ),
1674
+ ),
1675
+ }),
1676
+ ).annotate({
1677
+ identifier: "UpdateRollingReleaseConfigResponseBodyCase1RollingRelease",
1678
+ }) as any as S.Schema<UpdateRollingReleaseConfigResponseBodyCase1RollingRelease>;
1679
+
1680
+ export interface UpdateRollingReleaseConfigResponseBodyCase1 {
1681
+ rollingRelease: UpdateRollingReleaseConfigResponseBodyCase1RollingRelease | null;
1682
+ }
1683
+ export const UpdateRollingReleaseConfigResponseBodyCase1 =
1684
+ /*@__PURE__*/ S.suspend(() =>
1685
+ S.Struct({
1686
+ rollingRelease: S.NullOr(
1687
+ UpdateRollingReleaseConfigResponseBodyCase1RollingRelease,
1688
+ ),
1689
+ }),
1690
+ ).annotate({
1691
+ identifier: "UpdateRollingReleaseConfigResponseBodyCase1",
1692
+ }) as any as S.Schema<UpdateRollingReleaseConfigResponseBodyCase1>;
1693
+
1694
+ export type UpdateRollingReleaseConfigResponseBody =
1695
+ | UpdateRollingReleaseConfigResponseBodyCase0
1696
+ | UpdateRollingReleaseConfigResponseBodyCase1;
1697
+ export const UpdateRollingReleaseConfigResponseBody =
1698
+ S.Unknown as any as S.Schema<UpdateRollingReleaseConfigResponseBody>;
1699
+
1700
+ export type UpdateRollingReleaseConfigResponse =
1701
+ UpdateRollingReleaseConfigResponseBody;
1702
+ export const UpdateRollingReleaseConfigResponse = /*@__PURE__*/ S.suspend(() =>
1703
+ UpdateRollingReleaseConfigResponseBody.pipe(T.RawResponseRoot()),
1704
+ ).annotate({
1705
+ identifier: "UpdateRollingReleaseConfigResponse",
1706
+ }) as any as S.Schema<UpdateRollingReleaseConfigResponse>;
1707
+
1708
+ export type ApproveRollingReleaseStageError =
1709
+ | BadRequest
1710
+ | Forbidden
1711
+ | NotFound
1712
+ | VercelOpError;
1713
+ /** Update the active rolling release to the next stage for a project Advance a rollout to the next stage. This is only needed when rolling releases is configured to require manual approval. */
1714
+ export const approveRollingReleaseStage: API.OperationMethod<
1715
+ ApproveRollingReleaseStageRequest,
1716
+ ApproveRollingReleaseStageResponse,
1717
+ ApproveRollingReleaseStageError,
1718
+ VercelOpContext
1719
+ > = /*@__PURE__*/ API.make(() => ({
1720
+ input: ApproveRollingReleaseStageRequest,
1721
+ output: ApproveRollingReleaseStageResponse,
1722
+ errors: [BadRequest, Forbidden, NotFound],
1723
+ protocol: VercelProtocol,
1724
+ retry: Retry.Retry,
1725
+ }));
1726
+
1727
+ export type CompleteRollingReleaseError =
1728
+ | BadRequest
1729
+ | Forbidden
1730
+ | NotFound
1731
+ | VercelOpError;
1732
+ /** Complete the rolling release for the project Force-complete a Rolling Release. The canary deployment will begin serving 100% of the traffic. */
1733
+ export const completeRollingRelease: API.OperationMethod<
1734
+ CompleteRollingReleaseRequest,
1735
+ CompleteRollingReleaseResponse,
1736
+ CompleteRollingReleaseError,
1737
+ VercelOpContext
1738
+ > = /*@__PURE__*/ API.make(() => ({
1739
+ input: CompleteRollingReleaseRequest,
1740
+ output: CompleteRollingReleaseResponse,
1741
+ errors: [BadRequest, Forbidden, NotFound],
1742
+ protocol: VercelProtocol,
1743
+ retry: Retry.Retry,
1744
+ }));
1745
+
1746
+ export type DeleteRollingReleaseConfigError =
1747
+ | BadRequest
1748
+ | Forbidden
1749
+ | NotFound
1750
+ | VercelOpError;
1751
+ /** Delete rolling release configuration Disable Rolling Releases for a project means that future deployments will not undergo a rolling release. Changing the config never alters a rollout that's already in-flight—it only affects the next production deployment. If you want to also stop the current rollout, call this endpoint to disable the feature, and then call either the /complete or /abort endpoint. */
1752
+ export const deleteRollingReleaseConfig: API.OperationMethod<
1753
+ DeleteRollingReleaseConfigRequest,
1754
+ DeleteRollingReleaseConfigResponse,
1755
+ DeleteRollingReleaseConfigError,
1756
+ VercelOpContext
1757
+ > = /*@__PURE__*/ API.make(() => ({
1758
+ input: DeleteRollingReleaseConfigRequest,
1759
+ output: DeleteRollingReleaseConfigResponse,
1760
+ errors: [BadRequest, Forbidden, NotFound],
1761
+ protocol: VercelProtocol,
1762
+ retry: Retry.Retry,
1763
+ }));
1764
+
1765
+ export type GetRollingReleaseError =
1766
+ | BadRequest
1767
+ | Forbidden
1768
+ | NotFound
1769
+ | VercelOpError;
1770
+ /** Get the active rolling release information for a project Return the Rolling Release for a project, regardless of whether the rollout is active, aborted, or completed. If the feature is enabled but no deployment has occurred yet, null will be returned. */
1771
+ export const getRollingRelease: API.OperationMethod<
1772
+ GetRollingReleaseRequest,
1773
+ GetRollingReleaseResponse,
1774
+ GetRollingReleaseError,
1775
+ VercelOpContext
1776
+ > = /*@__PURE__*/ API.make(() => ({
1777
+ input: GetRollingReleaseRequest,
1778
+ output: GetRollingReleaseResponse,
1779
+ errors: [BadRequest, Forbidden, NotFound],
1780
+ protocol: VercelProtocol,
1781
+ retry: Retry.Retry,
1782
+ }));
1783
+
1784
+ export type GetRollingReleaseBillingStatusError =
1785
+ | BadRequest
1786
+ | Forbidden
1787
+ | NotFound
1788
+ | VercelOpError;
1789
+ /** Get rolling release billing status Get the Rolling Releases billing status for a project. The team level billing status is used to determine if the project can be configured for rolling releases. */
1790
+ export const getRollingReleaseBillingStatus: API.OperationMethod<
1791
+ GetRollingReleaseBillingStatusRequest,
1792
+ GetRollingReleaseBillingStatusResponse,
1793
+ GetRollingReleaseBillingStatusError,
1794
+ VercelOpContext
1795
+ > = /*@__PURE__*/ API.make(() => ({
1796
+ input: GetRollingReleaseBillingStatusRequest,
1797
+ output: GetRollingReleaseBillingStatusResponse,
1798
+ errors: [BadRequest, Forbidden, NotFound],
1799
+ protocol: VercelProtocol,
1800
+ retry: Retry.Retry,
1801
+ }));
1802
+
1803
+ export type GetRollingReleaseConfigError =
1804
+ | BadRequest
1805
+ | Forbidden
1806
+ | NotFound
1807
+ | VercelOpError;
1808
+ /** Get rolling release configuration Get the Rolling Releases configuration for a project. The project-level config is simply a template that will be used for any future rolling release, and not the configuration for any active rolling release. */
1809
+ export const getRollingReleaseConfig: API.OperationMethod<
1810
+ GetRollingReleaseConfigRequest,
1811
+ GetRollingReleaseConfigResponse,
1812
+ GetRollingReleaseConfigError,
1813
+ VercelOpContext
1814
+ > = /*@__PURE__*/ API.make(() => ({
1815
+ input: GetRollingReleaseConfigRequest,
1816
+ output: GetRollingReleaseConfigResponse,
1817
+ errors: [BadRequest, Forbidden, NotFound],
1818
+ protocol: VercelProtocol,
1819
+ retry: Retry.Retry,
1820
+ }));
1821
+
1822
+ export type StartRollingReleaseError =
1823
+ | BadRequest
1824
+ | Forbidden
1825
+ | NotFound
1826
+ | Conflict
1827
+ | UnprocessableEntity
1828
+ | VercelOpError;
1829
+ /** Start a rolling release for the project Start a rolling release for a deployment. If a rolling release is already active for the same canary deployment, returns the current state without side effects. */
1830
+ export const startRollingRelease: API.OperationMethod<
1831
+ StartRollingReleaseRequest,
1832
+ StartRollingReleaseResponse,
1833
+ StartRollingReleaseError,
1834
+ VercelOpContext
1835
+ > = /*@__PURE__*/ API.make(() => ({
1836
+ input: StartRollingReleaseRequest,
1837
+ output: StartRollingReleaseResponse,
1838
+ errors: [BadRequest, Forbidden, NotFound, Conflict, UnprocessableEntity],
1839
+ protocol: VercelProtocol,
1840
+ retry: Retry.Retry,
1841
+ }));
1842
+
1843
+ export type UpdateRollingReleaseConfigError =
1844
+ | BadRequest
1845
+ | Forbidden
1846
+ | NotFound
1847
+ | VercelOpError;
1848
+ /** Update the rolling release settings for the project Update (or disable) Rolling Releases for a project. When disabling with the resolve-on-disable feature flag enabled, any active rolling release document is resolved using the disableRolloutAction parameter: "abort" to roll back (default), or "complete" to promote the canary to production. When enabling or updating config, changes only affect the next production deployment and do not alter a rollout that's already in-flight. Note: Enabling Rolling Releases automatically enables skew protection on the project with the default value if it wasn't configured already. */
1849
+ export const updateRollingReleaseConfig: API.OperationMethod<
1850
+ UpdateRollingReleaseConfigRequest,
1851
+ UpdateRollingReleaseConfigResponse,
1852
+ UpdateRollingReleaseConfigError,
1853
+ VercelOpContext
1854
+ > = /*@__PURE__*/ API.make(() => ({
1855
+ input: UpdateRollingReleaseConfigRequest,
1856
+ output: UpdateRollingReleaseConfigResponse,
1857
+ errors: [BadRequest, Forbidden, NotFound],
1858
+ protocol: VercelProtocol,
1859
+ retry: Retry.Retry,
1860
+ }));