From a866b919378a0332dd1175c631243d9121efcc10 Mon Sep 17 00:00:00 2001 From: Andrew Jiang Date: Tue, 17 Sep 2024 18:04:43 -0400 Subject: [PATCH] fix: vercel-promote --- clis/vercel-scripts/package.json | 2 +- clis/vercel-scripts/src/cli.ts | 63 +- clis/vercel-scripts/src/commands/promote.ts | 26 + .../src/commands/revalidate-all.ts | 34 + clis/vercel-scripts/src/utils/clean-id.ts | 7 + clis/vercel-scripts/src/utils/deployer.ts | 75 +- clis/vercel-scripts/src/utils/promoter.ts | 47 + clis/vercel-scripts/src/utils/revalidator.ts | 4 +- clis/vercel-scripts/src/utils/safeCommand.ts | 10 + fern/apis/vercel/definition/api.yml | 8 - fern/apis/vercel/definition/v9/domains.yml | 57 - fern/apis/vercel/generators.yml | 1 + fern/apis/vercel/openapi.json | 52431 ++++++++++++++++ pnpm-lock.yaml | 12 +- 14 files changed, 52615 insertions(+), 162 deletions(-) create mode 100644 clis/vercel-scripts/src/commands/promote.ts create mode 100644 clis/vercel-scripts/src/commands/revalidate-all.ts create mode 100644 clis/vercel-scripts/src/utils/clean-id.ts create mode 100644 clis/vercel-scripts/src/utils/promoter.ts create mode 100644 clis/vercel-scripts/src/utils/safeCommand.ts delete mode 100644 fern/apis/vercel/definition/api.yml delete mode 100644 fern/apis/vercel/definition/v9/domains.yml create mode 100644 fern/apis/vercel/openapi.json diff --git a/clis/vercel-scripts/package.json b/clis/vercel-scripts/package.json index 39bbdf6e65..35c84eac34 100644 --- a/clis/vercel-scripts/package.json +++ b/clis/vercel-scripts/package.json @@ -25,7 +25,7 @@ }, "dependencies": { "@fern-fern/fern-docs-sdk": "0.0.5", - "@fern-fern/vercel": "0.0.4607", + "@fern-fern/vercel": "0.0.4650", "ts-essentials": "^10.0.1" } } diff --git a/clis/vercel-scripts/src/cli.ts b/clis/vercel-scripts/src/cli.ts index dd55215583..f22a669c29 100644 --- a/clis/vercel-scripts/src/cli.ts +++ b/clis/vercel-scripts/src/cli.ts @@ -2,9 +2,13 @@ import { VercelClient } from "@fern-fern/vercel"; import { writeFileSync } from "fs"; import yargs from "yargs"; import { hideBin } from "yargs/helpers"; +import { promoteCommand } from "./commands/promote.js"; +import { revalidateAllCommand } from "./commands/revalidate-all.js"; import { cwd } from "./cwd.js"; +import { cleanDeploymentId } from "./utils/clean-id.js"; import { VercelDeployer } from "./utils/deployer.js"; -import { DocsRevalidator } from "./utils/revalidator.js"; +import { FernDocsRevalidator } from "./utils/revalidator.js"; +import { safeCommand } from "./utils/safeCommand.js"; function isValidEnvironment(environment: string): environment is "preview" | "production" { return environment === "preview" || environment === "production"; @@ -49,13 +53,12 @@ void yargs(hideBin(process.argv)) choices: ["preview" as const, "production" as const], }) .option("skip-deploy", { type: "boolean", description: "Skip the deploy step" }) - .option("force", { type: "boolean", description: "Always deploy, even if the project is up-to-date" }) .option("output", { type: "string", description: "The output file to write the preview URLs to", default: "deployment-url.txt", }), - async ({ project, environment, token, teamName, teamId, output, skipDeploy, force }) => { + async ({ project, environment, token, teamName, teamId, output, skipDeploy }) => { if (!isValidEnvironment(environment)) { throw new Error(`Invalid environment: ${environment}`); } @@ -71,13 +74,10 @@ void yargs(hideBin(process.argv)) cwd: cwd(), }); - const result = await cli.buildAndDeployToVercel(project, { skipDeploy, force }); + const result = await cli.buildAndDeployToVercel(project, { skipDeploy }); if (result) { - // eslint-disable-next-line no-console - console.log("Deployed to:", result.deploymentUrl); - - writeFileSync(output, result.deploymentUrl); + writeFileSync(output, result.url); } process.exit(0); @@ -91,46 +91,15 @@ void yargs(hideBin(process.argv)) type: "boolean", description: "Revalidate the deployment (if it's fern docs)", }), - async ({ deploymentUrl, token, teamId, revalidateAll }) => { - const deployment = await new VercelClient({ token }).deployments.getDeployment( - deploymentUrl.replace("https://", ""), - { teamId, withGitRepoInfo: "false" }, - ); - - if (deployment.target !== "production") { - // eslint-disable-next-line no-console - console.error("Deployment is not a production deployment"); - process.exit(1); - } else if (deployment.readySubstate !== "STAGED") { - // eslint-disable-next-line no-console - console.error("Deployment is not staged"); - process.exit(1); - } else if (!deployment.project) { - // eslint-disable-next-line no-console - console.error("Deployment does not have a project"); - process.exit(1); - } - - if (revalidateAll) { - const revalidator = new DocsRevalidator({ token, project: deployment.project.name, teamId }); - - await revalidator.revalidateAll(); - } - - process.exit(0); - }, + async ({ deploymentUrl, token, teamId, revalidateAll }) => + safeCommand(() => promoteCommand({ deploymentIdOrUrl: deploymentUrl, token, teamId, revalidateAll })), ) .command( "revalidate-all ", "Revalidate all docs for a deployment", (argv) => argv.positional("deploymentUrl", { type: "string", demandOption: true }), - async ({ deploymentUrl, token, teamId }) => { - const revalidator = new DocsRevalidator({ token, project: deploymentUrl, teamId }); - - await revalidator.revalidateAll(); - - process.exit(0); - }, + async ({ deploymentUrl, token, teamId }) => + safeCommand(() => revalidateAllCommand({ token, teamId, deploymentIdOrUrl: deploymentUrl })), ) .command( "preview.txt ", @@ -143,7 +112,7 @@ void yargs(hideBin(process.argv)) }), async ({ deploymentUrl, token, teamId, output }) => { const deployment = await new VercelClient({ token }).deployments.getDeployment( - deploymentUrl.replace("https://", ""), + cleanDeploymentId(deploymentUrl), { teamId, withGitRepoInfo: "false" }, ); @@ -151,7 +120,7 @@ void yargs(hideBin(process.argv)) throw new Error("Deployment does not have a project"); } - const revalidator = new DocsRevalidator({ token, project: deployment.project.name, teamId }); + const revalidator = new FernDocsRevalidator({ token, project: deployment.project.name, teamId }); const urls = await revalidator.getPreviewUrls(deploymentUrl); @@ -171,7 +140,7 @@ void yargs(hideBin(process.argv)) }), async ({ deploymentUrl, token, teamId, output }) => { const deployment = await new VercelClient({ token }).deployments.getDeployment( - deploymentUrl.replace("https://", ""), + cleanDeploymentId(deploymentUrl), { teamId, withGitRepoInfo: "false" }, ); @@ -179,7 +148,7 @@ void yargs(hideBin(process.argv)) throw new Error("Deployment does not have a project"); } - const revalidator = new DocsRevalidator({ token, project: deployment.project.name, teamId }); + const revalidator = new FernDocsRevalidator({ token, project: deployment.project.name, teamId }); const urls = await revalidator.getDomains(); diff --git a/clis/vercel-scripts/src/commands/promote.ts b/clis/vercel-scripts/src/commands/promote.ts new file mode 100644 index 0000000000..a5b080745f --- /dev/null +++ b/clis/vercel-scripts/src/commands/promote.ts @@ -0,0 +1,26 @@ +import { VercelClient } from "@fern-fern/vercel"; +import { cleanDeploymentId } from "../utils/clean-id.js"; +import { requestPromote } from "../utils/promoter.js"; +import { revalidateAllCommand } from "./revalidate-all.js"; + +interface PromoteArgs { + deploymentIdOrUrl: string; + token: string; + teamId: string; + revalidateAll?: boolean; +} + +export async function promoteCommand({ deploymentIdOrUrl, token, teamId, revalidateAll }: PromoteArgs): Promise { + const vercel = new VercelClient({ token }); + + const deployment = await vercel.deployments.getDeployment(cleanDeploymentId(deploymentIdOrUrl), { + teamId, + withGitRepoInfo: "false", + }); + + await requestPromote(token, deployment); + + if (revalidateAll) { + await revalidateAllCommand({ token, teamId, deployment }); + } +} diff --git a/clis/vercel-scripts/src/commands/revalidate-all.ts b/clis/vercel-scripts/src/commands/revalidate-all.ts new file mode 100644 index 0000000000..6d8c4e901a --- /dev/null +++ b/clis/vercel-scripts/src/commands/revalidate-all.ts @@ -0,0 +1,34 @@ +import { VercelClient } from "@fern-fern/vercel"; +import { GetDeploymentResponse } from "@fern-fern/vercel/api/index.js"; +import { cleanDeploymentId } from "../utils/clean-id.js"; +import { FernDocsRevalidator } from "../utils/revalidator.js"; + +interface RevalidateAllArgs { + token: string; + teamId: string; + deployment?: GetDeploymentResponse; + deploymentIdOrUrl?: string; +} + +export async function revalidateAllCommand({ + token, + teamId, + deployment, + deploymentIdOrUrl, +}: RevalidateAllArgs): Promise { + if (!deployment) { + if (!deploymentIdOrUrl) { + throw new Error("Either deployment or deploymentIdOrUrl must be provided"); + } + + const vercel = new VercelClient({ token }); + deployment = await vercel.deployments.getDeployment(cleanDeploymentId(deploymentIdOrUrl)); + } + + if (!deployment.project) { + throw new Error("Deployment does not have a project"); + } + + const revalidator = new FernDocsRevalidator({ token, project: deployment.project.id, teamId }); + await revalidator.revalidateAll(); +} diff --git a/clis/vercel-scripts/src/utils/clean-id.ts b/clis/vercel-scripts/src/utils/clean-id.ts new file mode 100644 index 0000000000..6ab5887012 --- /dev/null +++ b/clis/vercel-scripts/src/utils/clean-id.ts @@ -0,0 +1,7 @@ +export function cleanDeploymentId(deploymentIdOrUrl: string): string { + const toReplace = deploymentIdOrUrl.replace("https://", ""); + if (toReplace.length === 0) { + throw new Error(`Invalid deployment ID or URL: ${deploymentIdOrUrl}`); + } + return toReplace; +} diff --git a/clis/vercel-scripts/src/utils/deployer.ts b/clis/vercel-scripts/src/utils/deployer.ts index 6c966b805c..2066a4c9e6 100644 --- a/clis/vercel-scripts/src/utils/deployer.ts +++ b/clis/vercel-scripts/src/utils/deployer.ts @@ -1,8 +1,10 @@ -import { VercelClient } from "@fern-fern/vercel"; +import { Vercel, VercelClient } from "@fern-fern/vercel"; import { readFileSync } from "fs"; import { join } from "path"; import { UnreachableCaseError } from "ts-essentials"; -import { exec } from "./exec.js"; +import { cleanDeploymentId } from "./clean-id.js"; +import { exec, logCommand } from "./exec.js"; +import { requestPromote } from "./promoter.js"; export class VercelDeployer { private token: string; @@ -10,7 +12,7 @@ export class VercelDeployer { private teamId: string; private environment: "preview" | "production"; private cwd: string; - private vercel: VercelClient; + public vercel: VercelClient; constructor({ token, teamName, @@ -72,38 +74,49 @@ export class VercelDeployer { }); } - private deploy(project: { id: string; name: string }): string { + private async deploy(project: { id: string; name: string }): Promise { let command = `pnpx vercel deploy --yes --prebuilt --token=${this.token} --archive=tgz`; if (this.environment === "production") { command += " --prod --skip-domain"; } - return exec(`[${this.environmentName}] Deploy bundle for ${project.name} to Vercel`, command, { + const deploymentUrl = exec(`[${this.environmentName}] Deploy bundle for ${project.name} to Vercel`, command, { stdio: "pipe", env: this.env(project.id), cwd: this.cwd, }).trim(); + + if (!deploymentUrl) { + throw new Error("Deployment failed: no deployment URL returned"); + } + + const deployment = await this.vercel.deployments.getDeployment(cleanDeploymentId(deploymentUrl)); + + logCommand(`[${this.environmentName}] Deployment URL: ${deployment.url}`); + + if ("inspectorUrl" in deployment) { + logCommand(`[${this.environmentName}] Inspector URL: ${deployment.inspectorUrl}`); + } + + // eslint-disable-next-line no-console + console.log("Deployment Source:", deployment.source); + + return deployment; } - public promote(deploymentUrl: string): void { + private async promote(deployment: Vercel.GetDeploymentResponse): Promise { if (this.environment === "production") { - exec( - `[${this.environmentName}] Promote ${deploymentUrl}`, - `pnpx vercel promote ${deploymentUrl} --token=${this.token}`, - { cwd: this.cwd }, - ); + const isDev2 = this.loadEnvFile().includes("registry-dev2.buildwithfern.com"); + if (!isDev2) { + return; + } + await requestPromote(this.token, deployment); } } public async buildAndDeployToVercel( project: string, { skipDeploy = false }: { skipDeploy?: boolean } = {}, - ): Promise< - | { - deploymentUrl: string; - canPromote: boolean; - } - | undefined - > { + ): Promise { const prj = await this.vercel.projects.getProject(project, { teamId: this.teamId }); this.pull(prj); @@ -114,31 +127,11 @@ export class VercelDeployer { return; } - const deploymentUrl = this.deploy(prj); - - if (!deploymentUrl) { - throw new Error("Deployment failed: no deployment URL returned"); - } - - let canPromote = this.environment === "production"; + const deployment = await this.deploy(prj); - if (canPromote) { - /** - * If the deployment is to the dev2 registry, we should automatically promote it - * and not allow manual promotion. - */ - const isDev2 = this.loadEnvFile().includes("registry-dev2.buildwithfern.com"); - - if (isDev2) { - this.promote(deploymentUrl); - canPromote = false; - } - } + await this.promote(deployment); - return { - deploymentUrl, - canPromote, - }; + return deployment; } private loadEnvFile(): string { diff --git a/clis/vercel-scripts/src/utils/promoter.ts b/clis/vercel-scripts/src/utils/promoter.ts new file mode 100644 index 0000000000..4d1a1414c8 --- /dev/null +++ b/clis/vercel-scripts/src/utils/promoter.ts @@ -0,0 +1,47 @@ +import { Vercel } from "@fern-fern/vercel"; +import { logCommand } from "./exec.js"; + +export async function requestPromote(token: string, deployment: Vercel.GetDeploymentResponse): Promise { + logCommand(`[Production] Promote ${deployment.url}`); + + if (deployment.target !== "production") { + throw new Error("Deployment is not a production deployment"); + } + + if (deployment.readyState !== "READY") { + throw new Error("Deployment is not ready"); + } + + if (deployment.readySubstate === "PROMOTED") { + // eslint-disable-next-line no-console + console.log(`Deployment ${deployment.name} is already promoted`); + return; + } + + if (deployment.readySubstate !== "STAGED") { + throw new Error("Deployment is not staged for promotion"); + } + + if (!deployment.project) { + throw new Error("Deployment has no project"); + } + + /** + * The vercel promote cli command does not accept tokens as an argument, so we have to use the API directly + * + * Note: the fern-generated SDK doesn't work for this, so we have to use fetch directly + */ + // await vercel.projects.requestPromote(deployment.project.id, deployment.id, { teamId }); + await fetch(`https://api.vercel.com/v10/projects/${deployment.project.id}/promote/${deployment.id}`, { + method: "POST", + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }, + // required + body: JSON.stringify({}), + }); + + // eslint-disable-next-line no-console + console.log(`Successfully requested promote of ${deployment.name} to ${deployment.project.name}`); +} diff --git a/clis/vercel-scripts/src/utils/revalidator.ts b/clis/vercel-scripts/src/utils/revalidator.ts index bb4f130772..548071ac7c 100644 --- a/clis/vercel-scripts/src/utils/revalidator.ts +++ b/clis/vercel-scripts/src/utils/revalidator.ts @@ -4,7 +4,7 @@ import { logCommand } from "./exec.js"; const BANNED_DOMAINS = ["vercel.app", "buildwithfern.com", "ferndocs.com"]; -export class DocsRevalidator { +export class FernDocsRevalidator { private vercel: VercelClient; private project: string; private teamId: string; @@ -53,6 +53,8 @@ export class DocsRevalidator { } async revalidateAll(): Promise { + logCommand("Revalidating all docs"); + const summary: Record = {}; for await (const domain of this.getProductionDomains()) { diff --git a/clis/vercel-scripts/src/utils/safeCommand.ts b/clis/vercel-scripts/src/utils/safeCommand.ts new file mode 100644 index 0000000000..8b082dc264 --- /dev/null +++ b/clis/vercel-scripts/src/utils/safeCommand.ts @@ -0,0 +1,10 @@ +export async function safeCommand(fn: () => Promise): Promise { + try { + await fn(); + process.exit(0); + } catch (error) { + // eslint-disable-next-line no-console + console.error(error); + process.exit(1); + } +} diff --git a/fern/apis/vercel/definition/api.yml b/fern/apis/vercel/definition/api.yml deleted file mode 100644 index e5c321c7e1..0000000000 --- a/fern/apis/vercel/definition/api.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: vercel -auth: bearer -default-environment: Prod -environments: - Prod: https://api.vercel.com -error-discrimination: - strategy: property - property-name: error diff --git a/fern/apis/vercel/definition/v9/domains.yml b/fern/apis/vercel/definition/v9/domains.yml deleted file mode 100644 index 655054ec95..0000000000 --- a/fern/apis/vercel/definition/v9/domains.yml +++ /dev/null @@ -1,57 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json - -types: - ListDomainsResponse: - properties: - domains: list - - GetConfigResponse: - properties: - misconfigured: boolean - - Domain: - properties: - name: string - verified: boolean - -service: - base-path: /v9 - auth: true - endpoints: - getConfig: - docs: | - See Vercel's docs over here: https://vercel.com/docs/rest-api/endpoints/domains#get-a-domain's-configuration - method: GET - path: /domains/{domain}/config - path-parameters: - domain: string - request: - name: GetConfigRequest - query-parameters: - teamId: - type: string - docs: The team id to filter by - response: GetConfigResponse - - list: - docs: | - See Vercel's docs over here: https://vercel.com/docs/rest-api/endpoints/domains#list-all-the-domains - method: GET - path: /projects/{projectId}/domains - path-parameters: - projectId: string - request: - name: ListDomainsRequest - query-parameters: - limit: - type: integer - docs: | - The limit of domains to return. - teamId: - type: string - docs: The team id to filter by - withGitRepoInfo: - type: boolean - docs: | - If the response should include the Git repository information. - response: ListDomainsResponse diff --git a/fern/apis/vercel/generators.yml b/fern/apis/vercel/generators.yml index 3d72d36b8f..4f0b655d9a 100644 --- a/fern/apis/vercel/generators.yml +++ b/fern/apis/vercel/generators.yml @@ -1,3 +1,4 @@ +openapi: ./openapi.json default-group: sdk groups: sdk: diff --git a/fern/apis/vercel/openapi.json b/fern/apis/vercel/openapi.json new file mode 100644 index 0000000000..51121e1fe8 --- /dev/null +++ b/fern/apis/vercel/openapi.json @@ -0,0 +1,52431 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "Vercel API", + "description": "Vercel combines the best developer experience with an obsessive focus on end-user performance. Our platform enables frontend teams to do their best work.", + "contact": { + "email": "support@vercel.com", + "name": "Vercel Support", + "url": "https://vercel.com/support" + }, + "version": "0.0.1" + }, + "servers": [ + { + "url": "https://api.vercel.com", + "description": "Production API" + } + ], + "paths": { + "/v1/access-groups/{idOrName}": { + "get": { + "description": "Allows to read an access group", + "operationId": "readAccessGroup", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Reads an access group", + "tags": ["access-groups"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "isDsyncManaged": { + "type": "boolean" + }, + "name": { + "type": "string", + "description": "The name of this access group.", + "example": "my-access-group" + }, + "createdAt": { + "type": "string", + "description": "Timestamp in milliseconds when the access group was created.", + "example": 1588720733602 + }, + "teamId": { + "type": "string", + "description": "ID of the team that this access group belongs to.", + "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" + }, + "updatedAt": { + "type": "string", + "description": "Timestamp in milliseconds when the access group was last updated.", + "example": 1588720733602 + }, + "accessGroupId": { + "type": "string", + "description": "ID of the access group.", + "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" + }, + "membersCount": { + "type": "number", + "description": "Number of members in the access group.", + "example": 5 + }, + "projectsCount": { + "type": "number", + "description": "Number of projects in the access group.", + "example": 2 + } + }, + "required": [ + "isDsyncManaged", + "name", + "createdAt", + "teamId", + "updatedAt", + "accessGroupId", + "membersCount", + "projectsCount" + ], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "post": { + "description": "Allows to update an access group metadata", + "operationId": "updateAccessGroup", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update an access group", + "tags": ["access-groups"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccessGroup" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "The name of the access group", + "maxLength": 50, + "pattern": "^[A-z0-9_ -]+$", + "example": "My access group" + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["role", "projectId"], + "properties": { + "projectId": { + "type": "string", + "maxLength": 256, + "example": "prj_ndlgr43fadlPyCtREAqxxdyFK", + "description": "The ID of the project." + }, + "role": { + "type": "string", + "enum": ["ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER", null], + "example": "ADMIN", + "description": "The project role that will be added to this Access Group. \\\"null\\\" will remove this project level role.", + "nullable": true + } + } + } + }, + "membersToAdd": { + "description": "List of members to add to the access group.", + "type": "array", + "items": { + "type": "string" + } + }, + "membersToRemove": { + "description": "List of members to remove from the access group.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "delete": { + "description": "Allows to delete an access group", + "operationId": "deleteAccessGroup", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Deletes an access group", + "tags": ["access-groups"], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/access-groups/{idOrName}/members": { + "get": { + "description": "List members of an access group", + "operationId": "listAccessGroupMembers", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List members of an access group", + "tags": ["access-groups"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "members": { + "items": { + "properties": { + "avatar": { + "type": "string" + }, + "email": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + }, + "name": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "teamRole": { + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "BILLING", "VIEWER", "CONTRIBUTOR"] + } + }, + "required": ["email", "uid", "username", "teamRole"], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "properties": { + "count": { + "type": "number" + }, + "next": { + "nullable": true, + "type": "string" + } + }, + "required": ["count", "next"], + "type": "object" + } + }, + "required": ["members", "pagination"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The ID or name of the Access Group.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The ID or name of the Access Group.", + "example": "ag_pavWOn1iLObbXLRiwVvzmPrTWyTf" + } + }, + { + "name": "limit", + "description": "Limit how many access group members should be returned.", + "in": "query", + "required": false, + "schema": { + "description": "Limit how many access group members should be returned.", + "example": 20, + "type": "integer", + "minimum": 1, + "maximum": 100 + } + }, + { + "name": "next", + "description": "Continuation cursor to retrieve the next page of results.", + "in": "query", + "required": false, + "schema": { + "description": "Continuation cursor to retrieve the next page of results.", + "type": "string" + } + }, + { + "name": "search", + "description": "Search project members by their name, username, and email.", + "in": "query", + "required": false, + "schema": { + "description": "Search project members by their name, username, and email.", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/access-groups": { + "get": { + "description": "List access groups", + "operationId": "listAccessGroups", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List access groups for a team, project or member", + "tags": ["access-groups"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object" + }, + { + "properties": { + "accessGroups": { + "items": { + "properties": { + "members": { + "items": { + "type": "string" + }, + "type": "array" + }, + "projects": { + "items": { + "type": "string" + }, + "type": "array" + }, + "isDsyncManaged": { + "type": "boolean" + }, + "name": { + "type": "string", + "description": "The name of this access group.", + "example": "my-access-group" + }, + "createdAt": { + "type": "string", + "description": "Timestamp in milliseconds when the access group was created.", + "example": 1588720733602 + }, + "teamId": { + "type": "string", + "description": "ID of the team that this access group belongs to.", + "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" + }, + "updatedAt": { + "type": "string", + "description": "Timestamp in milliseconds when the access group was last updated.", + "example": 1588720733602 + }, + "accessGroupId": { + "type": "string", + "description": "ID of the access group.", + "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" + }, + "membersCount": { + "type": "number", + "description": "Number of members in the access group.", + "example": 5 + }, + "projectsCount": { + "type": "number", + "description": "Number of projects in the access group.", + "example": 2 + } + }, + "required": [ + "isDsyncManaged", + "name", + "createdAt", + "teamId", + "updatedAt", + "accessGroupId", + "membersCount", + "projectsCount" + ], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "properties": { + "count": { + "type": "number" + }, + "next": { + "nullable": true, + "type": "string" + } + }, + "required": ["count", "next"], + "type": "object" + } + }, + "required": ["accessGroups", "pagination"], + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "projectId", + "description": "Filter access groups by project.", + "in": "query", + "schema": { + "description": "Filter access groups by project.", + "example": "prj_pavWOn1iLObbx3RowVvzmPrTWyTf", + "type": "string" + } + }, + { + "name": "search", + "description": "Search for access groups by name.", + "in": "query", + "schema": { + "description": "Search for access groups by name.", + "example": "example", + "type": "string" + } + }, + { + "name": "membersLimit", + "description": "Number of members to include in the response.", + "in": "query", + "schema": { + "description": "Number of members to include in the response.", + "example": 20, + "type": "integer", + "minimum": 1, + "maximum": 100 + } + }, + { + "name": "projectsLimit", + "description": "Number of projects to include in the response.", + "in": "query", + "schema": { + "description": "Number of projects to include in the response.", + "example": 20, + "type": "integer", + "minimum": 1, + "maximum": 100 + } + }, + { + "name": "limit", + "description": "Limit how many access group should be returned.", + "in": "query", + "schema": { + "description": "Limit how many access group should be returned.", + "example": 20, + "type": "integer", + "minimum": 1, + "maximum": 100 + } + }, + { + "name": "next", + "description": "Continuation cursor to retrieve the next page of results.", + "in": "query", + "schema": { + "description": "Continuation cursor to retrieve the next page of results.", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "post": { + "description": "Allows to create an access group", + "operationId": "createAccessGroup", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Creates an access group", + "tags": ["access-groups"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "membersCount": { + "type": "number" + }, + "projectsCount": { + "type": "number" + }, + "name": { + "type": "string", + "description": "The name of this access group.", + "example": "my-access-group" + }, + "createdAt": { + "type": "string", + "description": "Timestamp in milliseconds when the access group was created.", + "example": 1588720733602 + }, + "teamId": { + "type": "string", + "description": "ID of the team that this access group belongs to.", + "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" + }, + "updatedAt": { + "type": "string", + "description": "Timestamp in milliseconds when the access group was last updated.", + "example": 1588720733602 + }, + "accessGroupId": { + "type": "string", + "description": "ID of the access group.", + "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" + } + }, + "required": [ + "membersCount", + "projectsCount", + "name", + "createdAt", + "teamId", + "updatedAt", + "accessGroupId" + ], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "name": { + "type": "string", + "description": "The name of the access group", + "maxLength": 50, + "pattern": "^[A-z0-9_ -]+$", + "example": "My access group" + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["role", "projectId"], + "properties": { + "projectId": { + "type": "string", + "maxLength": 256, + "example": "prj_ndlgr43fadlPyCtREAqxxdyFK", + "description": "The ID of the project." + }, + "role": { + "type": "string", + "enum": ["ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER"], + "example": "ADMIN", + "description": "The project role that will be added to this Access Group. \\\"null\\\" will remove this project level role.", + "nullable": true + } + } + } + }, + "membersToAdd": { + "description": "List of members to add to the access group.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/v1/access-groups/{idOrName}/projects": { + "get": { + "description": "List projects of an access group", + "operationId": "listAccessGroupProjects", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List projects of an access group", + "tags": ["access-groups"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "projects": { + "items": { + "properties": { + "projectId": { + "type": "string" + }, + "role": { + "type": "string", + "enum": ["ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER"] + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "project": { + "properties": { + "name": { + "type": "string" + }, + "framework": { + "nullable": true, + "type": "string" + }, + "latestDeploymentId": { + "type": "string" + } + }, + "type": "object" + } + }, + "required": ["projectId", "role", "createdAt", "updatedAt", "project"], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "properties": { + "count": { + "type": "number" + }, + "next": { + "nullable": true, + "type": "string" + } + }, + "required": ["count", "next"], + "type": "object" + } + }, + "required": ["projects", "pagination"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The ID or name of the Access Group.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The ID or name of the Access Group.", + "example": "ag_pavWOn1iLObbXLRiwVvzmPrTWyTf" + } + }, + { + "name": "limit", + "description": "Limit how many access group projects should be returned.", + "in": "query", + "required": false, + "schema": { + "description": "Limit how many access group projects should be returned.", + "example": 20, + "type": "integer", + "minimum": 1, + "maximum": 100 + } + }, + { + "name": "next", + "description": "Continuation cursor to retrieve the next page of results.", + "in": "query", + "required": false, + "schema": { + "description": "Continuation cursor to retrieve the next page of results.", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v8/artifacts/events": { + "post": { + "description": "Records an artifacts cache usage event. The body of this request is an array of cache usage events. The supported event types are `HIT` and `MISS`. The source is either `LOCAL` the cache event was on the users filesystem cache or `REMOTE` if the cache event is for a remote cache. When the event is a `HIT` the request also accepts a number `duration` which is the time taken to generate the artifact in the cache.", + "operationId": "recordEvents", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Record an artifacts cache usage event", + "tags": ["artifacts"], + "responses": { + "200": { + "description": "Success. Event recorded." + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the headers is invalid" + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "The customer has reached their spend cap limit and has been paused. An owner can disable the cap or raise the limit in settings.\nThe Remote Caching usage limit has been reached for this account for this billing cycle.\nRemote Caching has been disabled for this team or user. An owner can enable it in the billing settings.\nYou do not have permission to access this resource." + } + }, + "parameters": [ + { + "in": "header", + "description": "The continuous integration or delivery environment where this artifact is downloaded.", + "schema": { + "type": "string", + "description": "The continuous integration or delivery environment where this artifact is downloaded.", + "example": "VERCEL", + "maxLength": 50 + }, + "name": "x-artifact-client-ci" + }, + { + "in": "header", + "description": "1 if the client is an interactive shell. Otherwise 0", + "schema": { + "type": "integer", + "description": "1 if the client is an interactive shell. Otherwise 0", + "example": 0, + "minimum": 0, + "maximum": 1 + }, + "name": "x-artifact-client-interactive" + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["sessionId", "source", "hash", "event"], + "properties": { + "sessionId": { + "type": "string", + "description": "A UUID (universally unique identifer) for the session that generated this event." + }, + "source": { + "type": "string", + "enum": ["LOCAL", "REMOTE"], + "description": "One of `LOCAL` or `REMOTE`. `LOCAL` specifies that the cache event was from the user's filesystem cache. `REMOTE` specifies that the cache event is from a remote cache." + }, + "event": { + "type": "string", + "enum": ["HIT", "MISS"], + "description": "One of `HIT` or `MISS`. `HIT` specifies that a cached artifact for `hash` was found in the cache. `MISS` specifies that a cached artifact with `hash` was not found." + }, + "hash": { + "type": "string", + "example": "12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "description": "The artifact hash" + }, + "duration": { + "type": "number", + "description": "The time taken to generate the artifact. This should be sent as a body parameter on `HIT` events.", + "example": 400 + } + } + } + } + } + } + } + } + }, + "/v8/artifacts/status": { + "get": { + "description": "Check the status of Remote Caching for this principal. Returns a JSON-encoded status indicating if Remote Caching is enabled, disabled, or disabled due to usage limits.", + "operationId": "status", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get status of Remote Caching for this principal", + "tags": ["artifacts"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "status": { + "type": "string", + "enum": ["disabled", "enabled", "over_limit", "paused"] + } + }, + "required": ["status"], + "type": "object" + } + } + } + }, + "400": { + "description": "" + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v8/artifacts/{hash}": { + "put": { + "x-fern-ignore": true, + "description": "Uploads a cache artifact identified by the `hash` specified on the path. The cache artifact can then be downloaded with the provided `hash`.", + "operationId": "uploadArtifact", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Upload a cache artifact", + "tags": ["artifacts"], + "responses": { + "202": { + "description": "File successfully uploaded", + "content": { + "application/json": { + "schema": { + "properties": { + "urls": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Array of URLs where the artifact was updated", + "example": ["https://api.vercel.com/v2/now/artifact/12HKQaOmR5t5Uy6vdcQsNIiZgHGB"] + } + }, + "required": ["urls"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid.\nOne of the provided values in the headers is invalid\nFile size is not valid" + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "The customer has reached their spend cap limit and has been paused. An owner can disable the cap or raise the limit in settings.\nThe Remote Caching usage limit has been reached for this account for this billing cycle.\nRemote Caching has been disabled for this team or user. An owner can enable it in the billing settings.\nYou do not have permission to access this resource." + } + }, + "parameters": [ + { + "in": "header", + "description": "The artifact size in bytes", + "required": true, + "schema": { + "description": "The artifact size in bytes", + "type": "number" + }, + "name": "Content-Length" + }, + { + "in": "header", + "description": "The time taken to generate the uploaded artifact in milliseconds.", + "required": false, + "schema": { + "type": "number", + "description": "The time taken to generate the uploaded artifact in milliseconds.", + "example": 400 + }, + "name": "x-artifact-duration" + }, + { + "in": "header", + "description": "The continuous integration or delivery environment where this artifact was generated.", + "required": false, + "schema": { + "type": "string", + "description": "The continuous integration or delivery environment where this artifact was generated.", + "example": "VERCEL", + "maxLength": 50 + }, + "name": "x-artifact-client-ci" + }, + { + "in": "header", + "description": "1 if the client is an interactive shell. Otherwise 0", + "required": false, + "schema": { + "type": "integer", + "description": "1 if the client is an interactive shell. Otherwise 0", + "example": 0, + "minimum": 0, + "maximum": 1 + }, + "name": "x-artifact-client-interactive" + }, + { + "in": "header", + "description": "The base64 encoded tag for this artifact. The value is sent back to clients when the artifact is downloaded as the header `x-artifact-tag`", + "required": false, + "schema": { + "type": "string", + "description": "The base64 encoded tag for this artifact. The value is sent back to clients when the artifact is downloaded as the header `x-artifact-tag`", + "example": "Tc0BmHvJYMIYJ62/zx87YqO0Flxk+5Ovip25NY825CQ=", + "maxLength": 600 + }, + "name": "x-artifact-tag" + }, + { + "name": "hash", + "description": "The artifact hash", + "in": "path", + "required": true, + "schema": { + "example": "12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "description": "The artifact hash", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + }, + "get": { + "description": "Downloads a cache artifact indentified by its `hash` specified on the request path. The artifact is downloaded as an octet-stream. The client should verify the content-length header and response body.", + "operationId": "downloadArtifact", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Download a cache artifact", + "tags": ["artifacts"], + "responses": { + "200": { + "description": "The artifact was found and is downloaded as a stream. Content-Length should be verified.", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary", + "description": "An octet stream response that will be piped to the response stream." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid.\nOne of the provided values in the headers is invalid" + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "The customer has reached their spend cap limit and has been paused. An owner can disable the cap or raise the limit in settings.\nThe Remote Caching usage limit has been reached for this account for this billing cycle.\nRemote Caching has been disabled for this team or user. An owner can enable it in the billing settings.\nYou do not have permission to access this resource." + }, + "404": { + "description": "The artifact was not found" + } + }, + "parameters": [ + { + "in": "header", + "description": "The continuous integration or delivery environment where this artifact is downloaded.", + "schema": { + "type": "string", + "description": "The continuous integration or delivery environment where this artifact is downloaded.", + "example": "VERCEL", + "maxLength": 50 + }, + "name": "x-artifact-client-ci" + }, + { + "in": "header", + "description": "1 if the client is an interactive shell. Otherwise 0", + "schema": { + "type": "integer", + "description": "1 if the client is an interactive shell. Otherwise 0", + "example": 0, + "minimum": 0, + "maximum": 1 + }, + "name": "x-artifact-client-interactive" + }, + { + "name": "hash", + "description": "The artifact hash", + "in": "path", + "required": true, + "schema": { + "example": "12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "description": "The artifact hash", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "head": { + "description": "Check that a cache artifact with the given `hash` exists. This request returns response headers only and is equivalent to a `GET` request to this endpoint where the response contains no body.", + "operationId": "artifactExists", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Check if a cache artifact exists", + "tags": ["artifacts"], + "responses": { + "200": { + "description": "The artifact was found and headers are returned" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "The customer has reached their spend cap limit and has been paused. An owner can disable the cap or raise the limit in settings.\nThe Remote Caching usage limit has been reached for this account for this billing cycle.\nRemote Caching has been disabled for this team or user. An owner can enable it in the billing settings.\nYou do not have permission to access this resource." + }, + "404": { + "description": "The artifact was not found" + } + }, + "parameters": [ + { + "name": "hash", + "description": "The artifact hash", + "in": "path", + "required": true, + "schema": { + "example": "12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "description": "The artifact hash", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v8/artifacts": { + "post": { + "description": "Query information about an array of artifacts.", + "operationId": "artifactQuery", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Query information about an artifact", + "tags": ["artifacts"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "additionalProperties": { + "nullable": true, + "oneOf": [ + { + "properties": { + "size": { + "type": "number" + }, + "taskDurationMs": { + "type": "number" + }, + "tag": { + "type": "string" + } + }, + "required": ["size", "taskDurationMs"], + "type": "object" + }, + { + "properties": { + "error": { + "properties": { + "message": { + "type": "string" + } + }, + "required": ["message"], + "type": "object" + } + }, + "required": ["error"], + "type": "object" + } + ] + }, + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "The customer has reached their spend cap limit and has been paused. An owner can disable the cap or raise the limit in settings.\nThe Remote Caching usage limit has been reached for this account for this billing cycle.\nRemote Caching has been disabled for this team or user. An owner can enable it in the billing settings.\nYou do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["hashes"], + "properties": { + "hashes": { + "items": { + "type": "string" + }, + "description": "artifact hashes", + "type": "array" + } + } + } + } + } + } + } + }, + "/deployments/{deploymentId}/builds": { + "get": { + "description": "Retrieves the list of builds given their deployment's unique identifier. No longer listed as public API as of May 2023.", + "security": [], + "tags": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "builds": { + "items": { + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the Build" + }, + "deploymentId": { + "type": "string", + "description": "The unique identifier of the deployment" + }, + "entrypoint": { + "type": "string", + "description": "The entrypoint of the deployment" + }, + "readyState": { + "type": "string", + "enum": [ + "INITIALIZING", + "BUILDING", + "UPLOADING", + "DEPLOYING", + "READY", + "ARCHIVED", + "ERROR", + "QUEUED", + "CANCELED" + ], + "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state" + }, + "readyStateAt": { + "type": "number", + "description": "The time at which the Build state was last modified" + }, + "scheduledAt": { + "nullable": true, + "type": "number", + "description": "The time at which the Build was scheduled to be built" + }, + "createdAt": { + "type": "number", + "description": "The time at which the Build was created" + }, + "deployedAt": { + "type": "number", + "description": "The time at which the Build was deployed" + }, + "createdIn": { + "type": "string", + "description": "The region where the Build was first created" + }, + "use": { + "type": "string", + "description": "The Runtime the Build used to generate the output" + }, + "config": { + "properties": { + "distDir": { + "type": "string" + }, + "forceBuildIn": { + "type": "string" + }, + "reuseWorkPathFrom": { + "type": "string" + }, + "zeroConfig": { + "type": "boolean" + } + }, + "type": "object", + "description": "An object that contains the Build's configuration" + }, + "output": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": ["lambda", "file", "edge"], + "description": "The type of the output" + }, + "path": { + "type": "string", + "description": "The absolute path of the file or Serverless Function" + }, + "digest": { + "type": "string", + "description": "The SHA1 of the file" + }, + "mode": { + "type": "number", + "description": "The POSIX file permissions" + }, + "size": { + "type": "number", + "description": "The size of the file in bytes" + }, + "lambda": { + "nullable": true, + "properties": { + "functionName": { + "type": "string" + }, + "deployedTo": { + "items": { + "type": "string" + }, + "type": "array" + }, + "memorySize": { + "type": "number" + }, + "timeout": { + "type": "number" + }, + "layers": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["functionName", "deployedTo"], + "type": "object", + "description": "If the output is a Serverless Function, an object containing the name, location and memory size of the function" + }, + "edge": { + "nullable": true, + "properties": { + "regions": { + "nullable": true, + "items": { + "type": "string" + }, + "type": "array", + "description": "The regions where the edge function will be invoked. Only exists if the edge function as a regional edge function, see: https://vercel.com/docs/concepts/edge-network/regions#setting-edge-function-regions" + } + }, + "required": ["regions"], + "type": "object", + "description": "Exists if the output is an edge function." + } + }, + "required": ["path", "digest", "mode"], + "type": "object", + "description": "A list of outputs for the Build that can be either Serverless Functions or static files" + }, + "type": "array", + "description": "A list of outputs for the Build that can be either Serverless Functions or static files" + }, + "fingerprint": { + "nullable": true, + "type": "string", + "description": "If the Build uses the `@vercel/static` Runtime, it contains a hashed string of all outputs" + }, + "copiedFrom": { + "type": "string" + } + }, + "required": ["id", "deploymentId", "entrypoint", "readyState", "output"], + "type": "object", + "description": "An object representing a Build on Vercel" + }, + "type": "array" + } + }, + "required": ["builds"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "Deployment was not found" + } + }, + "parameters": [ + { + "name": "deploymentId", + "description": "The deployment unique identifier", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The deployment unique identifier" + } + } + ] + } + }, + "/v1/deployments/{deploymentId}/checks": { + "post": { + "description": "Creates a new check. This endpoint must be called with an OAuth2 or it will produce a 400 error.", + "operationId": "createCheck", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Creates a new Check", + "tags": ["checks"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "status": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "conclusion": { + "type": "string", + "enum": ["canceled", "failed", "neutral", "succeeded", "skipped", "stale"] + }, + "blocking": { + "type": "boolean" + }, + "output": { + "properties": { + "metrics": { + "properties": { + "FCP": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "LCP": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "CLS": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "TBT": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "virtualExperienceScore": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + } + }, + "required": ["FCP", "LCP", "CLS", "TBT"], + "type": "object" + } + }, + "type": "object" + }, + "detailsUrl": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "deploymentId": { + "type": "string" + }, + "externalId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "startedAt": { + "type": "number" + }, + "completedAt": { + "type": "number" + }, + "rerequestable": { + "type": "boolean" + } + }, + "required": [ + "id", + "name", + "status", + "blocking", + "integrationId", + "deploymentId", + "createdAt", + "updatedAt" + ], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nCannot create check for finished deployment\nThe provided token is not from an OAuth2 Client" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The deployment was not found" + } + }, + "parameters": [ + { + "name": "deploymentId", + "description": "The deployment to create the check for.", + "in": "path", + "required": true, + "schema": { + "description": "The deployment to create the check for.", + "example": "dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "The name of the check being created", + "maxLength": 100, + "example": "Performance Check", + "type": "string" + }, + "path": { + "description": "Path of the page that is being checked", + "type": "string", + "maxLength": 255, + "example": "/" + }, + "blocking": { + "description": "Whether the check should block a deployment from succeeding", + "type": "boolean", + "example": true + }, + "detailsUrl": { + "description": "URL to display for further details", + "type": "string", + "example": "http://example.com" + }, + "externalId": { + "description": "An identifier that can be used as an external reference", + "type": "string", + "example": "1234abc" + }, + "rerequestable": { + "description": "Whether a user should be able to request for the check to be rerun if it fails", + "type": "boolean", + "example": true + } + }, + "required": ["name", "blocking"], + "type": "object" + } + } + } + } + }, + "get": { + "description": "List all of the checks created for a deployment.", + "operationId": "getAllChecks", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Retrieve a list of all checks", + "tags": ["checks"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "checks": { + "items": { + "properties": { + "completedAt": { + "type": "number" + }, + "conclusion": { + "type": "string", + "enum": ["canceled", "failed", "neutral", "succeeded", "skipped", "stale"] + }, + "createdAt": { + "type": "number" + }, + "detailsUrl": { + "type": "string" + }, + "id": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "output": { + "properties": { + "metrics": { + "properties": { + "FCP": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "LCP": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "CLS": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "TBT": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "virtualExperienceScore": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + } + }, + "required": ["FCP", "LCP", "CLS", "TBT"], + "type": "object" + } + }, + "type": "object" + }, + "path": { + "type": "string" + }, + "rerequestable": { + "type": "boolean" + }, + "startedAt": { + "type": "number" + }, + "status": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "updatedAt": { + "type": "number" + } + }, + "required": [ + "createdAt", + "id", + "integrationId", + "name", + "rerequestable", + "status", + "updatedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": ["checks"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The deployment was not found" + } + }, + "parameters": [ + { + "name": "deploymentId", + "description": "The deployment to get all checks for", + "in": "path", + "required": true, + "schema": { + "description": "The deployment to get all checks for", + "example": "dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/deployments/{deploymentId}/checks/{checkId}": { + "get": { + "description": "Return a detailed response for a single check.", + "operationId": "getCheck", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get a single check", + "tags": ["checks"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "status": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "conclusion": { + "type": "string", + "enum": ["canceled", "failed", "neutral", "succeeded", "skipped", "stale"] + }, + "blocking": { + "type": "boolean" + }, + "output": { + "properties": { + "metrics": { + "properties": { + "FCP": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "LCP": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "CLS": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "TBT": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "virtualExperienceScore": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + } + }, + "required": ["FCP", "LCP", "CLS", "TBT"], + "type": "object" + } + }, + "type": "object" + }, + "detailsUrl": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "deploymentId": { + "type": "string" + }, + "externalId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "startedAt": { + "type": "number" + }, + "completedAt": { + "type": "number" + }, + "rerequestable": { + "type": "boolean" + } + }, + "required": [ + "id", + "name", + "status", + "blocking", + "integrationId", + "deploymentId", + "createdAt", + "updatedAt" + ], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource.\nThe provided token is not from an OAuth2 Client that created the Check" + }, + "404": { + "description": "Check was not found\nThe deployment was not found" + } + }, + "parameters": [ + { + "name": "deploymentId", + "description": "The deployment to get the check for.", + "in": "path", + "required": true, + "schema": { + "description": "The deployment to get the check for.", + "example": "dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6", + "type": "string" + } + }, + { + "name": "checkId", + "description": "The check to fetch", + "in": "path", + "required": true, + "schema": { + "description": "The check to fetch", + "example": "check_2qn7PZrx89yxY34vEZPD31Y9XVj6", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "patch": { + "description": "Update an existing check. This endpoint must be called with an OAuth2 or it will produce a 400 error.", + "operationId": "updateCheck", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update a check", + "tags": ["checks"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "status": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "conclusion": { + "type": "string", + "enum": ["canceled", "failed", "neutral", "succeeded", "skipped", "stale"] + }, + "blocking": { + "type": "boolean" + }, + "output": { + "properties": { + "metrics": { + "properties": { + "FCP": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "LCP": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "CLS": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "TBT": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + }, + "virtualExperienceScore": { + "properties": { + "value": { + "nullable": true, + "type": "number" + }, + "previousValue": { + "type": "number" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + }, + "required": ["value", "source"], + "type": "object" + } + }, + "required": ["FCP", "LCP", "CLS", "TBT"], + "type": "object" + } + }, + "type": "object" + }, + "detailsUrl": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "deploymentId": { + "type": "string" + }, + "externalId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "startedAt": { + "type": "number" + }, + "completedAt": { + "type": "number" + }, + "rerequestable": { + "type": "boolean" + } + }, + "required": [ + "id", + "name", + "status", + "blocking", + "integrationId", + "deploymentId", + "createdAt", + "updatedAt" + ], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nThe provided token is not from an OAuth2 Client" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "Check was not found\nThe deployment was not found" + }, + "413": { + "description": "The output provided is too large" + } + }, + "parameters": [ + { + "name": "deploymentId", + "description": "The deployment to update the check for.", + "in": "path", + "required": true, + "schema": { + "description": "The deployment to update the check for.", + "example": "dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6", + "type": "string" + } + }, + { + "name": "checkId", + "description": "The check being updated", + "in": "path", + "required": true, + "schema": { + "description": "The check being updated", + "example": "check_2qn7PZrx89yxY34vEZPD31Y9XVj6", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "The name of the check being created", + "maxLength": 100, + "example": "Performance Check", + "type": "string" + }, + "path": { + "description": "Path of the page that is being checked", + "type": "string", + "maxLength": 255, + "example": "/" + }, + "status": { + "description": "The current status of the check", + "enum": ["running", "completed"] + }, + "conclusion": { + "description": "The result of the check being run", + "enum": ["canceled", "failed", "neutral", "succeeded", "skipped"] + }, + "detailsUrl": { + "description": "A URL a user may visit to see more information about the check", + "type": "string", + "example": "https://example.com/check/run/1234abc" + }, + "output": { + "description": "The results of the check Run", + "type": "object", + "properties": { + "metrics": { + "type": "object", + "description": "Metrics about the page", + "required": ["FCP", "LCP", "CLS", "TBT"], + "additionalProperties": false, + "properties": { + "FCP": { + "type": "object", + "required": ["value", "source"], + "properties": { + "value": { + "type": "number", + "example": 1200, + "description": "First Contentful Paint value", + "nullable": true + }, + "previousValue": { + "type": "number", + "example": 900, + "description": "Previous First Contentful Paint value to display a delta" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + } + }, + "LCP": { + "type": "object", + "required": ["value", "source"], + "properties": { + "value": { + "type": "number", + "example": 1200, + "description": "Largest Contentful Paint value", + "nullable": true + }, + "previousValue": { + "type": "number", + "example": 1000, + "description": "Previous Largest Contentful Paint value to display a delta" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + } + }, + "CLS": { + "type": "object", + "required": ["value", "source"], + "properties": { + "value": { + "type": "number", + "example": 4, + "description": "Cumulative Layout Shift value", + "nullable": true + }, + "previousValue": { + "type": "number", + "example": 2, + "description": "Previous Cumulative Layout Shift value to display a delta" + }, + "source": { + "type": "string", + "enum": ["web-vitals"] + } + } + }, + "TBT": { + "type": "object", + "required": ["value", "source"], + "properties": { + "value": { + "type": "number", + "example": 3000, + "description": "Total Blocking Time value", + "nullable": true + }, + "previousValue": { + "type": "number", + "example": 3500, + "description": "Previous Total Blocking Time value to display a delta" + }, + "source": { + "enum": ["web-vitals"] + } + } + }, + "virtualExperienceScore": { + "type": "object", + "required": ["value", "source"], + "properties": { + "value": { + "type": "integer", + "maximum": 100, + "minimum": 0, + "example": 30, + "description": "The calculated Virtual Experience Score value, between 0 and 100", + "nullable": true + }, + "previousValue": { + "type": "integer", + "maximum": 100, + "minimum": 0, + "example": 35, + "description": "A previous Virtual Experience Score value to display a delta, between 0 and 100" + }, + "source": { + "enum": ["web-vitals"] + } + } + } + } + } + } + }, + "externalId": { + "description": "An identifier that can be used as an external reference", + "type": "string", + "example": "1234abc" + } + }, + "type": "object" + } + } + } + } + } + }, + "/v1/deployments/{deploymentId}/checks/{checkId}/rerequest": { + "post": { + "description": "Rerequest a selected check that has failed.", + "operationId": "rerequestCheck", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Rerequest a check", + "tags": ["checks"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The deployment was not found\nCheck was not found" + } + }, + "parameters": [ + { + "name": "deploymentId", + "description": "The deployment to rerun the check for.", + "in": "path", + "required": true, + "schema": { + "description": "The deployment to rerun the check for.", + "example": "dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6", + "type": "string" + } + }, + { + "name": "checkId", + "description": "The check to rerun", + "in": "path", + "required": true, + "schema": { + "description": "The check to rerun", + "example": "check_2qn7PZrx89yxY34vEZPD31Y9XVj6", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/data-cache/purge-all": { + "delete": { + "description": "", + "security": [], + "tags": [], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "projectIdOrName", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ] + } + }, + "/data-cache/billing-settings": { + "patch": { + "description": "", + "security": [], + "tags": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "excessBillingEnabled": { + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "excessBillingEnabled": { + "type": "boolean" + } + } + } + } + } + } + } + }, + "/v1/data-cache/projects/{projectId}": { + "patch": { + "description": "Update the data cache feature on a project.", + "operationId": "updateProjectDataCache", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update the data cache feature", + "tags": ["projects"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "accountId": { + "type": "string" + }, + "analytics": { + "properties": { + "id": { + "type": "string" + }, + "canceledAt": { + "nullable": true, + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "paidAt": { + "type": "number" + }, + "sampleRatePercent": { + "nullable": true, + "type": "number" + }, + "spendLimitInDollars": { + "nullable": true, + "type": "number" + } + }, + "required": ["id", "disabledAt", "enabledAt"], + "type": "object" + }, + "speedInsights": { + "properties": { + "id": { + "type": "string" + }, + "enabledAt": { + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + }, + "paidAt": { + "type": "number" + } + }, + "required": ["id"], + "type": "object" + }, + "autoExposeSystemEnvs": { + "type": "boolean" + }, + "autoAssignCustomDomains": { + "type": "boolean" + }, + "autoAssignCustomDomainsUpdatedBy": { + "type": "string" + }, + "buildCommand": { + "nullable": true, + "type": "string" + }, + "commandForIgnoringBuildStep": { + "nullable": true, + "type": "string" + }, + "connectConfigurationId": { + "nullable": true, + "type": "string" + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "customerSupportCodeVisibility": { + "type": "boolean" + }, + "crons": { + "properties": { + "enabledAt": { + "type": "number", + "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." + }, + "disabledAt": { + "nullable": true, + "type": "number", + "description": "The time the feature was disabled for this project." + }, + "updatedAt": { + "type": "number" + }, + "deploymentId": { + "nullable": true, + "type": "string", + "description": "The ID of the Deployment from which the definitions originated." + }, + "definitions": { + "items": { + "properties": { + "host": { + "type": "string", + "description": "The hostname that should be used.", + "example": "vercel.com" + }, + "path": { + "type": "string", + "description": "The path that should be called for the cronjob.", + "example": "/api/crons/sync-something?hello=world" + }, + "schedule": { + "type": "string", + "description": "The cron expression.", + "example": "0 0 * * *" + } + }, + "required": ["host", "path", "schedule"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["enabledAt", "disabledAt", "updatedAt", "deploymentId", "definitions"], + "type": "object" + }, + "dataCache": { + "properties": { + "userDisabled": { + "type": "boolean" + }, + "storageSizeBytes": { + "nullable": true, + "type": "number" + }, + "unlimited": { + "type": "boolean" + } + }, + "required": ["userDisabled"], + "type": "object" + }, + "deploymentExpiration": { + "nullable": true, + "properties": { + "expirationDays": { + "type": "number" + }, + "expirationDaysProduction": { + "type": "number" + }, + "expirationDaysCanceled": { + "type": "number" + }, + "expirationDaysErrored": { + "type": "number" + }, + "deploymentsToKeep": { + "type": "number" + } + }, + "type": "object" + }, + "devCommand": { + "nullable": true, + "type": "string" + }, + "directoryListing": { + "type": "boolean" + }, + "installCommand": { + "nullable": true, + "type": "string" + }, + "env": { + "items": { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["secret", "system", "encrypted", "plain", "sensitive"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["type", "key", "value"], + "type": "object" + }, + "type": "array" + }, + "customEnvironments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["production", "preview", "development"] + }, + "description": { + "type": "string" + }, + "branchMatcher": { + "properties": { + "type": { + "type": "string", + "enum": ["endsWith", "startsWith", "equals"] + }, + "pattern": { + "type": "string" + } + }, + "required": ["type", "pattern"], + "type": "object" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "currentDeploymentAliases": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "name", "slug", "type", "createdAt", "updatedAt"], + "type": "object" + }, + "type": "array" + }, + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "gitForkProtection": { + "type": "boolean" + }, + "gitLFS": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "latestDeployments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "array" + }, + "link": { + "oneOf": [ + { + "properties": { + "org": { + "type": "string" + }, + "repoOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." + }, + "repo": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["github"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "projectId": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "projectNameWithNamespace": { + "type": "string" + }, + "projectNamespace": { + "type": "string" + }, + "projectOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." + }, + "projectUrl": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "uuid": { + "type": "string" + }, + "workspaceUuid": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + } + ] + }, + "name": { + "type": "string" + }, + "nodeVersion": { + "type": "string", + "enum": ["20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x"] + }, + "optionsAllowlist": { + "nullable": true, + "properties": { + "paths": { + "items": { + "properties": { + "value": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["paths"], + "type": "object" + }, + "outputDirectory": { + "nullable": true, + "type": "string" + }, + "passiveConnectConfigurationId": { + "nullable": true, + "type": "string" + }, + "passwordProtection": { + "nullable": true, + "type": "object" + }, + "productionDeploymentsFastLane": { + "type": "boolean" + }, + "publicSource": { + "nullable": true, + "type": "boolean" + }, + "resourceConfig": { + "properties": { + "functionDefaultTimeout": { + "type": "number" + }, + "functionDefaultMemoryType": { + "type": "string", + "enum": ["standard_legacy", "standard", "performance"] + } + }, + "type": "object" + }, + "rootDirectory": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionRegion": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionZeroConfigFailover": { + "type": "boolean" + }, + "skewProtectionBoundaryAt": { + "type": "number" + }, + "skewProtectionMaxAge": { + "type": "number" + }, + "skipGitConnectDuringLink": { + "type": "boolean" + }, + "sourceFilesOutsideRootDirectory": { + "type": "boolean" + }, + "enableAffectedProjectsDeployments": { + "type": "boolean" + }, + "ssoProtection": { + "nullable": true, + "properties": { + "deploymentType": { + "type": "string", + "enum": ["preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + }, + "targets": { + "additionalProperties": { + "nullable": true, + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "object" + }, + "transferCompletedAt": { + "type": "number" + }, + "transferStartedAt": { + "type": "number" + }, + "transferToAccountId": { + "type": "string" + }, + "transferredFromAccountId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "live": { + "type": "boolean" + }, + "enablePreviewFeedback": { + "nullable": true, + "type": "boolean" + }, + "enableProductionFeedback": { + "nullable": true, + "type": "boolean" + }, + "permissions": { + "properties": { + "accessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "auditLog": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingAddress": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInformation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceEmailRecipient": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceLanguage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPurchaseOrder": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingTaxId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blob": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "budget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifact": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifactUsageEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "codeChecks": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "concurrentBuilds": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connect": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAcceptDelegation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAuthCodes": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCertificate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainRecord": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ownEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sensitiveEnvironmentVariablePolicy": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "fileUpload": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "gitRepository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ipBlocking": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationAccount": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationProjects": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationVercelConfigurationOverride": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationRole": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResource": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceSecrets": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInstallationMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceBillingData": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "jobGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logDrain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "Monitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringQuery": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringChart": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDeploymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainExpire": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainMoved": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainRenewal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainUnverified": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "NotificationMonitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationPaymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationUsageAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationCustomerBudget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationStatementOfReasons": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Connection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "openTelemetryEndpoint": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "paymentMethod": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "permissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgres": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "previewDeploymentSuffix": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "proTrialOnboarding": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "space": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "spaceRun": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtectionInvoiceItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "rateLimit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redis": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "repository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "remoteCaching": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "samlConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "secret": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redisStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blobStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgresStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceReplCommand": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "storeTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheBillingSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "team": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamAccessRequest": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamFellowMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamGitExclusivity": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInvite": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInviteCode": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamJoin": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembershipDisconnectSAML": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "token": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usageCycle": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "user": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "userConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "vpcPeeringConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalyticsPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAuthn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigSchema": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigToken": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook-event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "endpointVerification": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Application": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProject": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "productionAliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfigurationLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheNamespace": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deployment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheck": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckReRunFromProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentProductionGit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPrivate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPromote": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentRollback": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "environments": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logs": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logsPreset": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "optionsAllowlist": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "job": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "project": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAccessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentHook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsUnownedByIntegration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectFlags": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectIntegrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMonitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectPermissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferOut": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentExpiration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTier": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "seawallConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "skewProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "trustedIps": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sonar": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + } + }, + "type": "object" + }, + "lastRollbackTarget": { + "nullable": true, + "type": "object" + }, + "lastAliasRequest": { + "nullable": true, + "properties": { + "fromDeploymentId": { + "type": "string" + }, + "toDeploymentId": { + "type": "string" + }, + "jobStatus": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "pending", "in-progress"] + }, + "requestedAt": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["promote", "rollback"] + } + }, + "required": ["fromDeploymentId", "toDeploymentId", "jobStatus", "requestedAt", "type"], + "type": "object" + }, + "hasFloatingAliases": { + "type": "boolean" + }, + "protectionBypass": { + "additionalProperties": { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["automation-bypass"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object" + }, + "type": "object" + }, + "hasActiveBranches": { + "type": "boolean" + }, + "trustedIps": { + "nullable": true, + "oneOf": [ + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + }, + "addresses": { + "items": { + "properties": { + "value": { + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + }, + "protectionMode": { + "type": "string", + "enum": ["additional", "exclusive"] + } + }, + "required": ["deploymentType", "addresses", "protectionMode"], + "type": "object" + }, + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + } + ] + }, + "gitComments": { + "properties": { + "onPullRequest": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on PRs" + }, + "onCommit": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on commits" + } + }, + "required": ["onPullRequest", "onCommit"], + "type": "object" + }, + "paused": { + "type": "boolean" + }, + "concurrencyBucketName": { + "type": "string" + }, + "webAnalytics": { + "properties": { + "id": { + "type": "string" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + } + }, + "required": ["id"], + "type": "object" + }, + "security": { + "properties": { + "attackModeEnabled": { + "type": "boolean" + }, + "attackModeUpdatedAt": { + "type": "number" + }, + "firewallEnabled": { + "type": "boolean" + }, + "firewallUpdatedAt": { + "type": "number" + }, + "attackModeActiveUntil": { + "nullable": true, + "type": "number" + }, + "firewallConfigVersion": { + "type": "number" + }, + "firewallRoutes": { + "items": { + "properties": { + "src": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + }, + "has": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "missing": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "dest": { + "type": "string" + }, + "status": { + "type": "number" + }, + "handle": { + "type": "string", + "enum": ["init", "finalize"] + }, + "mitigate": { + "properties": { + "action": { + "type": "string", + "enum": ["deny", "challenge", "log", "bypass", "rate_limit", "redirect"] + }, + "rule_id": { + "type": "string" + }, + "ttl": { + "type": "number" + }, + "erl": { + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["algo", "window", "limit", "keys"], + "type": "object" + } + }, + "required": ["action", "rule_id"], + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "firewallSeawallEnabled": { + "type": "boolean" + }, + "ja3Enabled": { + "type": "boolean" + }, + "ja4Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "oidcTokenConfig": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"], + "type": "object" + }, + "tier": { + "type": "string", + "enum": ["standard", "advanced", "critical"] + } + }, + "required": ["accountId", "directoryListing", "id", "name", "nodeVersion"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "projectId", + "description": "The unique project identifier", + "in": "path", + "required": true, + "schema": { + "example": "prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "description": "The unique project identifier", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "example": true, + "description": "Enable or disable data cache for the project - default: false" + } + } + } + } + } + } + } + }, + "/v3/deployments/{idOrUrl}/events": { + "get": { + "description": "Get the build logs of a deployment by deployment ID and build ID. It can work as an infinite stream of logs or as a JSON endpoint depending on the input parameters.", + "operationId": "getDeploymentEvents", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get deployment events", + "tags": ["deployments"], + "responses": { + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "500": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrUrl", + "description": "The unique identifier or hostname of the deployment.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd", + "description": "The unique identifier or hostname of the deployment." + } + }, + { + "name": "direction", + "description": "Order of the returned events based on the timestamp.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": ["backward", "forward"], + "default": "forward", + "example": "backward", + "description": "Order of the returned events based on the timestamp." + } + }, + { + "name": "follow", + "description": "When enabled, this endpoint will return live events as they happen.", + "in": "query", + "required": false, + "schema": { + "type": "number", + "enum": [0, 1], + "example": 1, + "description": "When enabled, this endpoint will return live events as they happen." + } + }, + { + "name": "limit", + "description": "Maximum number of events to return. Provide `-1` to return all available logs.", + "in": "query", + "required": false, + "schema": { + "type": "number", + "example": 100, + "description": "Maximum number of events to return. Provide `-1` to return all available logs." + } + }, + { + "name": "name", + "description": "Deployment build ID.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "example": "bld_cotnkcr76", + "description": "Deployment build ID." + } + }, + { + "name": "since", + "description": "Timestamp for when build logs should be pulled from.", + "in": "query", + "required": false, + "schema": { + "type": "number", + "example": 1540095775941, + "description": "Timestamp for when build logs should be pulled from." + } + }, + { + "name": "until", + "description": "Timestamp for when the build logs should be pulled up until.", + "in": "query", + "required": false, + "schema": { + "type": "number", + "example": 1540106318643, + "description": "Timestamp for when the build logs should be pulled up until." + } + }, + { + "name": "statusCode", + "description": "HTTP status code range to filter events by.", + "in": "query", + "required": false, + "schema": { + "example": "5xx", + "description": "HTTP status code range to filter events by.", + "oneOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + } + }, + { + "name": "delimiter", + "in": "query", + "required": false, + "schema": { + "type": "number", + "enum": [0, 1], + "example": 1 + } + }, + { + "name": "builds", + "in": "query", + "required": false, + "schema": { + "type": "number", + "enum": [0, 1], + "example": 1 + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v13/deployments/{idOrUrl}": { + "get": { + "description": "Retrieves information for a deployment either by supplying its ID (`id` property) or Hostname (`url` property). Additional details will be included when the authenticated user or team is an owner of the deployment.", + "operationId": "getDeployment", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get a deployment by ID or URL", + "tags": ["deployments"], + "responses": { + "200": { + "description": "The deployment including only public information\nThe deployment including both public and private information", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "properties": { + "aliasAssignedAt": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "alwaysRefuseToBuild": { + "type": "boolean" + }, + "build": { + "properties": { + "env": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["env"], + "type": "object" + }, + "buildArtifactUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "builds": { + "items": { + "type": "object" + }, + "type": "array" + }, + "env": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inspectorUrl": { + "nullable": true, + "type": "string" + }, + "isInConcurrentBuildsQueue": { + "type": "boolean" + }, + "projectSettings": { + "properties": { + "buildCommand": { + "nullable": true, + "type": "string" + }, + "devCommand": { + "nullable": true, + "type": "string" + }, + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "commandForIgnoringBuildStep": { + "nullable": true, + "type": "string" + }, + "installCommand": { + "nullable": true, + "type": "string" + }, + "outputDirectory": { + "nullable": true, + "type": "string" + }, + "speedInsights": { + "properties": { + "id": { + "type": "string" + }, + "enabledAt": { + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + }, + "paidAt": { + "type": "number" + } + }, + "required": ["id"], + "type": "object" + }, + "webAnalytics": { + "properties": { + "id": { + "type": "string" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + } + }, + "required": ["id"], + "type": "object" + } + }, + "type": "object" + }, + "readyStateReason": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "type": "boolean" + }, + "bootedAt": { + "type": "number" + }, + "buildingAt": { + "type": "number" + }, + "buildSkipped": { + "type": "boolean" + }, + "creator": { + "properties": { + "uid": { + "type": "string" + }, + "username": { + "type": "string" + }, + "avatar": { + "type": "string" + } + }, + "required": ["uid"], + "type": "object" + }, + "initReadyAt": { + "type": "number" + }, + "isFirstBranchDeployment": { + "type": "boolean" + }, + "lambdas": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "entrypoint": { + "nullable": true, + "type": "string" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "READY"] + }, + "readyStateAt": { + "type": "number" + }, + "output": { + "items": { + "properties": { + "path": { + "type": "string" + }, + "functionName": { + "type": "string" + } + }, + "required": ["path", "functionName"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["output"], + "type": "object", + "description": "A partial representation of a Build used by the deployment endpoint." + }, + "type": "array" + }, + "public": { + "type": "boolean" + }, + "ready": { + "type": "number" + }, + "status": { + "type": "string", + "enum": ["QUEUED", "BUILDING", "ERROR", "INITIALIZING", "READY", "CANCELED"] + }, + "team": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "avatar": { + "type": "string" + } + }, + "required": ["id", "name", "slug"], + "type": "object" + }, + "userAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "previewCommentsEnabled": { + "type": "boolean" + }, + "ttyBuildLogs": { + "type": "boolean" + }, + "customEnvironment": { + "oneOf": [ + { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["production", "preview", "development"] + }, + "description": { + "type": "string" + }, + "branchMatcher": { + "properties": { + "type": { + "type": "string", + "enum": ["startsWith", "equals", "endsWith"] + }, + "pattern": { + "type": "string" + } + }, + "required": ["type", "pattern"], + "type": "object" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "currentDeploymentAliases": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "name", "slug", "type", "createdAt", "updatedAt"], + "type": "object" + }, + { + "properties": { + "id": { + "type": "string" + } + }, + "required": ["id"], + "type": "object" + } + ] + }, + "aliasWarning": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "link": { + "type": "string" + }, + "action": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "createdAt": { + "type": "number" + }, + "name": { + "type": "string" + }, + "readyState": { + "type": "string", + "enum": ["QUEUED", "BUILDING", "ERROR", "INITIALIZING", "READY", "CANCELED"] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "autoAssignCustomDomains": { + "type": "boolean", + "description": "applies to custom domains only, defaults to `true`" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildErrorAt": { + "type": "number" + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "deletedAt": { + "nullable": true, + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "errorCode": { + "type": "string" + }, + "errorLink": { + "type": "string" + }, + "errorMessage": { + "nullable": true, + "type": "string" + }, + "errorStep": { + "type": "string" + }, + "passiveRegions": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service" + }, + "gitSource": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "repoId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "repoId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "org": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "org", "repo"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "projectId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "projectId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "workspaceUuid": { + "type": "string" + }, + "repoUuid": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "repoUuid"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "owner": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "owner", "slug"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["custom"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "gitUrl": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "gitUrl"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "org": { + "type": "string" + }, + "repo": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "repoId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "projectId": { + "type": "number" + } + }, + "required": ["type", "ref", "sha", "projectId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "workspaceUuid": { + "type": "string" + }, + "repoUuid": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "workspaceUuid", "repoUuid"], + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "project": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "framework": { + "nullable": true, + "type": "string" + } + }, + "required": ["id", "name"], + "type": "object" + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"], + "description": "Since June 2023 Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - PROMOTED: has seen production traffic" + }, + "regions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "softDeletedByRetention": { + "type": "boolean" + }, + "source": { + "type": "string", + "enum": [ + "api-trigger-git-deploy", + "cli", + "clone/repo", + "git", + "import", + "import/repo", + "redeploy" + ] + }, + "target": { + "nullable": true, + "type": "string", + "enum": ["staging", "production"] + }, + "undeletedAt": { + "type": "number" + }, + "url": { + "type": "string" + }, + "version": { + "type": "number", + "enum": [2] + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "projectId": { + "type": "string" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdIn": { + "type": "string" + }, + "crons": { + "items": { + "properties": { + "schedule": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": ["schedule", "path"], + "type": "object" + }, + "type": "array" + }, + "functions": { + "nullable": true, + "additionalProperties": { + "properties": { + "memory": { + "type": "number" + }, + "maxDuration": { + "type": "number" + }, + "runtime": { + "type": "string" + }, + "includeFiles": { + "type": "string" + }, + "excludeFiles": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "passiveConnectConfigurationId": { + "type": "string", + "description": "Since November 2023 this field defines a connect configuration that will only be used to deploy passive lambdas to (as in passiveRegions)" + }, + "routes": { + "nullable": true, + "items": { + "oneOf": [ + { + "properties": { + "src": { + "type": "string" + }, + "dest": { + "type": "string" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "methods": { + "items": { + "type": "string" + }, + "type": "array" + }, + "continue": { + "type": "boolean" + }, + "override": { + "type": "boolean" + }, + "caseSensitive": { + "type": "boolean" + }, + "check": { + "type": "boolean" + }, + "important": { + "type": "boolean" + }, + "status": { + "type": "number" + }, + "has": { + "items": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["host"] + }, + "value": { + "type": "string" + } + }, + "required": ["type", "value"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["header", "cookie", "query"] + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["type", "key"], + "type": "object" + } + ] + }, + "type": "array" + }, + "missing": { + "items": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["host"] + }, + "value": { + "type": "string" + } + }, + "required": ["type", "value"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["header", "cookie", "query"] + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["type", "key"], + "type": "object" + } + ] + }, + "type": "array" + }, + "locale": { + "properties": { + "redirect": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "cookie": { + "type": "string" + } + }, + "type": "object" + }, + "middlewarePath": { + "type": "string", + "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." + }, + "middlewareRawSrc": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The original middleware matchers." + }, + "middleware": { + "type": "number", + "description": "A middleware index in the `middleware` key under the build result" + } + }, + "required": ["src"], + "type": "object" + }, + { + "properties": { + "handle": { + "type": "string", + "enum": ["error", "filesystem", "hit", "miss", "rewrite", "resource"] + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + }, + "status": { + "type": "number" + } + }, + "required": ["handle"], + "type": "object" + }, + { + "properties": { + "src": { + "type": "string" + }, + "continue": { + "type": "boolean" + }, + "middleware": { + "type": "number", + "enum": [0] + } + }, + "required": ["src", "continue", "middleware"], + "type": "object" + } + ] + }, + "type": "array" + }, + "gitRepo": { + "nullable": true, + "oneOf": [ + { + "properties": { + "namespace": { + "type": "string" + }, + "projectId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "url": { + "type": "string" + }, + "path": { + "type": "string" + }, + "defaultBranch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "ownerType": { + "type": "string", + "enum": ["team", "user"] + } + }, + "required": [ + "namespace", + "projectId", + "type", + "url", + "path", + "defaultBranch", + "name", + "private", + "ownerType" + ], + "type": "object" + }, + { + "properties": { + "org": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["github"] + }, + "repoOwnerId": { + "type": "number" + }, + "path": { + "type": "string" + }, + "defaultBranch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "ownerType": { + "type": "string", + "enum": ["team", "user"] + } + }, + "required": [ + "org", + "repo", + "repoId", + "type", + "repoOwnerId", + "path", + "defaultBranch", + "name", + "private", + "ownerType" + ], + "type": "object" + }, + { + "properties": { + "owner": { + "type": "string" + }, + "repoUuid": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "workspaceUuid": { + "type": "string" + }, + "path": { + "type": "string" + }, + "defaultBranch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "ownerType": { + "type": "string", + "enum": ["team", "user"] + } + }, + "required": [ + "owner", + "repoUuid", + "slug", + "type", + "workspaceUuid", + "path", + "defaultBranch", + "name", + "private", + "ownerType" + ], + "type": "object" + } + ] + }, + "flags": { + "oneOf": [ + { + "properties": { + "definitions": { + "additionalProperties": { + "properties": { + "options": { + "items": { + "properties": { + "label": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + }, + "url": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + } + }, + "required": ["definitions"], + "type": "object", + "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." + }, + { + "items": { + "type": "object", + "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." + }, + "type": "array", + "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." + } + ] + } + }, + "required": [ + "build", + "env", + "inspectorUrl", + "isInConcurrentBuildsQueue", + "projectSettings", + "aliasAssigned", + "bootedAt", + "buildingAt", + "buildSkipped", + "creator", + "public", + "status", + "id", + "type", + "createdAt", + "name", + "readyState", + "meta", + "regions", + "url", + "version", + "projectId", + "plan", + "createdIn", + "ownerId", + "routes" + ], + "type": "object", + "description": "The deployment including both public and private information" + }, + { + "properties": { + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "type": "boolean" + }, + "bootedAt": { + "type": "number" + }, + "buildingAt": { + "type": "number" + }, + "buildSkipped": { + "type": "boolean" + }, + "creator": { + "properties": { + "uid": { + "type": "string" + }, + "username": { + "type": "string" + }, + "avatar": { + "type": "string" + } + }, + "required": ["uid"], + "type": "object" + }, + "initReadyAt": { + "type": "number" + }, + "isFirstBranchDeployment": { + "type": "boolean" + }, + "lambdas": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "entrypoint": { + "nullable": true, + "type": "string" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "READY"] + }, + "readyStateAt": { + "type": "number" + }, + "output": { + "items": { + "properties": { + "path": { + "type": "string" + }, + "functionName": { + "type": "string" + } + }, + "required": ["path", "functionName"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["output"], + "type": "object", + "description": "A partial representation of a Build used by the deployment endpoint." + }, + "type": "array" + }, + "public": { + "type": "boolean" + }, + "ready": { + "type": "number" + }, + "status": { + "type": "string", + "enum": ["QUEUED", "BUILDING", "ERROR", "INITIALIZING", "READY", "CANCELED"] + }, + "team": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "avatar": { + "type": "string" + } + }, + "required": ["id", "name", "slug"], + "type": "object" + }, + "userAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "previewCommentsEnabled": { + "type": "boolean" + }, + "ttyBuildLogs": { + "type": "boolean" + }, + "customEnvironment": { + "oneOf": [ + { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["production", "preview", "development"] + }, + "description": { + "type": "string" + }, + "branchMatcher": { + "properties": { + "type": { + "type": "string", + "enum": ["startsWith", "equals", "endsWith"] + }, + "pattern": { + "type": "string" + } + }, + "required": ["type", "pattern"], + "type": "object" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "currentDeploymentAliases": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "name", "slug", "type", "createdAt", "updatedAt"], + "type": "object" + }, + { + "properties": { + "id": { + "type": "string" + } + }, + "required": ["id"], + "type": "object" + } + ] + }, + "aliasWarning": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "link": { + "type": "string" + }, + "action": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "createdAt": { + "type": "number" + }, + "name": { + "type": "string" + }, + "readyState": { + "type": "string", + "enum": ["QUEUED", "BUILDING", "ERROR", "INITIALIZING", "READY", "CANCELED"] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "autoAssignCustomDomains": { + "type": "boolean", + "description": "applies to custom domains only, defaults to `true`" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildErrorAt": { + "type": "number" + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "deletedAt": { + "nullable": true, + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "errorCode": { + "type": "string" + }, + "errorLink": { + "type": "string" + }, + "errorMessage": { + "nullable": true, + "type": "string" + }, + "errorStep": { + "type": "string" + }, + "passiveRegions": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service" + }, + "gitSource": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "repoId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "repoId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "org": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "org", "repo"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "projectId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "projectId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "workspaceUuid": { + "type": "string" + }, + "repoUuid": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "repoUuid"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "owner": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "owner", "slug"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["custom"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "gitUrl": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "gitUrl"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "org": { + "type": "string" + }, + "repo": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "repoId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "projectId": { + "type": "number" + } + }, + "required": ["type", "ref", "sha", "projectId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "workspaceUuid": { + "type": "string" + }, + "repoUuid": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "workspaceUuid", "repoUuid"], + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "project": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "framework": { + "nullable": true, + "type": "string" + } + }, + "required": ["id", "name"], + "type": "object" + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"], + "description": "Since June 2023 Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - PROMOTED: has seen production traffic" + }, + "regions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "softDeletedByRetention": { + "type": "boolean" + }, + "source": { + "type": "string", + "enum": [ + "api-trigger-git-deploy", + "cli", + "clone/repo", + "git", + "import", + "import/repo", + "redeploy" + ] + }, + "target": { + "nullable": true, + "type": "string", + "enum": ["staging", "production"] + }, + "undeletedAt": { + "type": "number" + }, + "url": { + "type": "string" + }, + "version": { + "type": "number", + "enum": [2] + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + } + }, + "required": [ + "aliasAssigned", + "bootedAt", + "buildingAt", + "buildSkipped", + "creator", + "public", + "status", + "id", + "type", + "createdAt", + "name", + "readyState", + "meta", + "regions", + "url", + "version" + ], + "type": "object", + "description": "The deployment including only public information" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The deployment was not found" + } + }, + "parameters": [ + { + "name": "idOrUrl", + "description": "The unique identifier or hostname of the deployment.", + "in": "path", + "required": true, + "schema": { + "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ", + "description": "The unique identifier or hostname of the deployment.", + "type": "string" + } + }, + { + "name": "withGitRepoInfo", + "description": "Whether to add in gitRepo information.", + "in": "query", + "required": false, + "schema": { + "description": "Whether to add in gitRepo information.", + "type": "string", + "example": "true" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v13/deployments": { + "post": { + "description": "Create a new deployment with all the required and intended data. If the deployment is not a git deployment, all files must be provided with the request, either referenced or inlined. Additionally, a deployment id can be specified to redeploy a previous deployment.", + "operationId": "createDeployment", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Create a new deployment", + "tags": ["deployments"], + "responses": { + "200": { + "description": "The successfully created deployment", + "content": { + "application/json": { + "schema": { + "properties": { + "aliasAssignedAt": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "alwaysRefuseToBuild": { + "type": "boolean" + }, + "build": { + "properties": { + "env": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["env"], + "type": "object" + }, + "buildArtifactUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "builds": { + "items": { + "type": "object" + }, + "type": "array" + }, + "env": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inspectorUrl": { + "nullable": true, + "type": "string" + }, + "isInConcurrentBuildsQueue": { + "type": "boolean" + }, + "projectSettings": { + "properties": { + "buildCommand": { + "nullable": true, + "type": "string" + }, + "commandForIgnoringBuildStep": { + "nullable": true, + "type": "string" + }, + "devCommand": { + "nullable": true, + "type": "string" + }, + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "installCommand": { + "nullable": true, + "type": "string" + }, + "outputDirectory": { + "nullable": true, + "type": "string" + }, + "speedInsights": { + "properties": { + "id": { + "type": "string" + }, + "enabledAt": { + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + }, + "paidAt": { + "type": "number" + } + }, + "required": ["id"], + "type": "object" + }, + "webAnalytics": { + "properties": { + "id": { + "type": "string" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + } + }, + "required": ["id"], + "type": "object" + } + }, + "type": "object" + }, + "readyStateReason": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "type": "boolean" + }, + "bootedAt": { + "type": "number" + }, + "buildingAt": { + "type": "number" + }, + "buildSkipped": { + "type": "boolean" + }, + "creator": { + "properties": { + "uid": { + "type": "string" + }, + "username": { + "type": "string" + }, + "avatar": { + "type": "string" + } + }, + "required": ["uid"], + "type": "object" + }, + "initReadyAt": { + "type": "number" + }, + "isFirstBranchDeployment": { + "type": "boolean" + }, + "lambdas": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "entrypoint": { + "nullable": true, + "type": "string" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "READY"] + }, + "readyStateAt": { + "type": "number" + }, + "output": { + "items": { + "properties": { + "path": { + "type": "string" + }, + "functionName": { + "type": "string" + } + }, + "required": ["path", "functionName"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["output"], + "type": "object", + "description": "A partial representation of a Build used by the deployment endpoint." + }, + "type": "array" + }, + "public": { + "type": "boolean" + }, + "ready": { + "type": "number" + }, + "status": { + "type": "string", + "enum": ["CANCELED", "ERROR", "QUEUED", "BUILDING", "INITIALIZING", "READY"] + }, + "team": { + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "avatar": { + "type": "string" + } + }, + "required": ["name", "id", "slug"], + "type": "object" + }, + "userAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "previewCommentsEnabled": { + "type": "boolean" + }, + "ttyBuildLogs": { + "type": "boolean" + }, + "customEnvironment": { + "oneOf": [ + { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["production", "preview", "development"] + }, + "description": { + "type": "string" + }, + "branchMatcher": { + "properties": { + "type": { + "type": "string", + "enum": ["startsWith", "equals", "endsWith"] + }, + "pattern": { + "type": "string" + } + }, + "required": ["type", "pattern"], + "type": "object" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "currentDeploymentAliases": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "name", "slug", "type", "createdAt", "updatedAt"], + "type": "object" + }, + { + "properties": { + "id": { + "type": "string" + } + }, + "required": ["id"], + "type": "object" + } + ] + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "createdAt": { + "type": "number" + }, + "name": { + "type": "string" + }, + "deletedAt": { + "nullable": true, + "type": "number" + }, + "id": { + "type": "string" + }, + "version": { + "type": "number", + "enum": [2] + }, + "autoAssignCustomDomains": { + "type": "boolean", + "description": "applies to custom domains only, defaults to `true`" + }, + "gitSource": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "repoId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "repoId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "org": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "org", "repo"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "projectId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "projectId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "workspaceUuid": { + "type": "string" + }, + "repoUuid": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "repoUuid"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "owner": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "owner", "slug"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["custom"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "gitUrl": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "gitUrl"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "org": { + "type": "string" + }, + "repo": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "repoId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "projectId": { + "type": "number" + } + }, + "required": ["type", "ref", "sha", "projectId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "workspaceUuid": { + "type": "string" + }, + "repoUuid": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "workspaceUuid", "repoUuid"], + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "project": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "framework": { + "nullable": true, + "type": "string" + } + }, + "required": ["id", "name"], + "type": "object" + }, + "readyState": { + "type": "string", + "enum": ["CANCELED", "ERROR", "QUEUED", "BUILDING", "INITIALIZING", "READY"] + }, + "source": { + "type": "string", + "enum": [ + "cli", + "git", + "import", + "import/repo", + "clone/repo", + "api-trigger-git-deploy", + "redeploy" + ] + }, + "target": { + "nullable": true, + "type": "string", + "enum": ["staging", "production"] + }, + "passiveRegions": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service" + }, + "regions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "errorMessage": { + "nullable": true, + "type": "string" + }, + "aliasWarning": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "link": { + "type": "string" + }, + "action": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildErrorAt": { + "type": "number" + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "canceledAt": { + "type": "number" + }, + "errorCode": { + "type": "string" + }, + "errorLink": { + "type": "string" + }, + "errorStep": { + "type": "string" + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"], + "description": "Since June 2023 Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - PROMOTED: has seen production traffic" + }, + "softDeletedByRetention": { + "type": "boolean" + }, + "undeletedAt": { + "type": "number" + }, + "url": { + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": ["sub", "scope", "aud", "owner", "owner_id", "project", "project_id", "environment"], + "type": "object" + }, + "projectId": { + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "functions": { + "nullable": true, + "additionalProperties": { + "properties": { + "memory": { + "type": "number" + }, + "maxDuration": { + "type": "number" + }, + "runtime": { + "type": "string" + }, + "includeFiles": { + "type": "string" + }, + "excludeFiles": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "routes": { + "nullable": true, + "items": { + "oneOf": [ + { + "properties": { + "src": { + "type": "string" + }, + "dest": { + "type": "string" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "methods": { + "items": { + "type": "string" + }, + "type": "array" + }, + "continue": { + "type": "boolean" + }, + "override": { + "type": "boolean" + }, + "caseSensitive": { + "type": "boolean" + }, + "check": { + "type": "boolean" + }, + "important": { + "type": "boolean" + }, + "status": { + "type": "number" + }, + "has": { + "items": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["host"] + }, + "value": { + "type": "string" + } + }, + "required": ["type", "value"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["header", "cookie", "query"] + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["type", "key"], + "type": "object" + } + ] + }, + "type": "array" + }, + "missing": { + "items": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["host"] + }, + "value": { + "type": "string" + } + }, + "required": ["type", "value"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["header", "cookie", "query"] + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["type", "key"], + "type": "object" + } + ] + }, + "type": "array" + }, + "locale": { + "properties": { + "redirect": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "cookie": { + "type": "string" + } + }, + "type": "object" + }, + "middlewarePath": { + "type": "string", + "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." + }, + "middlewareRawSrc": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The original middleware matchers." + }, + "middleware": { + "type": "number", + "description": "A middleware index in the `middleware` key under the build result" + } + }, + "required": ["src"], + "type": "object" + }, + { + "properties": { + "handle": { + "type": "string", + "enum": ["error", "filesystem", "hit", "miss", "rewrite", "resource"] + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + }, + "status": { + "type": "number" + } + }, + "required": ["handle"], + "type": "object" + }, + { + "properties": { + "src": { + "type": "string" + }, + "continue": { + "type": "boolean" + }, + "middleware": { + "type": "number", + "enum": [0] + } + }, + "required": ["src", "continue", "middleware"], + "type": "object" + } + ] + }, + "type": "array" + }, + "crons": { + "items": { + "properties": { + "schedule": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": ["schedule", "path"], + "type": "object" + }, + "type": "array" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdIn": { + "type": "string" + }, + "passiveConnectConfigurationId": { + "type": "string", + "description": "Since November 2023 this field defines a connect configuration that will only be used to deploy passive lambdas to (as in passiveRegions)" + }, + "gitRepo": { + "nullable": true, + "oneOf": [ + { + "properties": { + "namespace": { + "type": "string" + }, + "projectId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "url": { + "type": "string" + }, + "path": { + "type": "string" + }, + "defaultBranch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "ownerType": { + "type": "string", + "enum": ["team", "user"] + } + }, + "required": [ + "namespace", + "projectId", + "type", + "url", + "path", + "defaultBranch", + "name", + "private", + "ownerType" + ], + "type": "object" + }, + { + "properties": { + "org": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["github"] + }, + "repoOwnerId": { + "type": "number" + }, + "path": { + "type": "string" + }, + "defaultBranch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "ownerType": { + "type": "string", + "enum": ["team", "user"] + } + }, + "required": [ + "org", + "repo", + "repoId", + "type", + "repoOwnerId", + "path", + "defaultBranch", + "name", + "private", + "ownerType" + ], + "type": "object" + }, + { + "properties": { + "owner": { + "type": "string" + }, + "repoUuid": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "workspaceUuid": { + "type": "string" + }, + "path": { + "type": "string" + }, + "defaultBranch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "ownerType": { + "type": "string", + "enum": ["team", "user"] + } + }, + "required": [ + "owner", + "repoUuid", + "slug", + "type", + "workspaceUuid", + "path", + "defaultBranch", + "name", + "private", + "ownerType" + ], + "type": "object" + } + ] + }, + "flags": { + "oneOf": [ + { + "properties": { + "definitions": { + "additionalProperties": { + "properties": { + "options": { + "items": { + "properties": { + "label": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + }, + "url": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + } + }, + "required": ["definitions"], + "type": "object", + "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." + }, + { + "items": { + "type": "object", + "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." + }, + "type": "array", + "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." + } + ] + } + }, + "required": [ + "build", + "env", + "inspectorUrl", + "isInConcurrentBuildsQueue", + "projectSettings", + "aliasAssigned", + "bootedAt", + "buildingAt", + "buildSkipped", + "creator", + "public", + "status", + "type", + "createdAt", + "name", + "id", + "version", + "meta", + "readyState", + "regions", + "url", + "projectId", + "ownerId", + "routes", + "plan", + "createdIn" + ], + "type": "object", + "description": "The successfully created deployment" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated\nDeploying to Serverless Functions to multiple regions requires a plan update" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "The deployment project is being transferred" + } + }, + "parameters": [ + { + "name": "forceNew", + "description": "Forces a new deployment even if there is a previous similar deployment", + "in": "query", + "schema": { + "description": "Forces a new deployment even if there is a previous similar deployment", + "enum": ["0", "1"] + } + }, + { + "name": "skipAutoDetectionConfirmation", + "description": "Allows to skip framework detection so the API would not fail to ask for confirmation", + "in": "query", + "schema": { + "description": "Allows to skip framework detection so the API would not fail to ask for confirmation", + "enum": ["0", "1"] + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "properties": { + "deploymentId": { + "description": "An deployment id for an existing deployment to redeploy", + "type": "string" + }, + "files": { + "description": "A list of objects with the files to be deployed", + "items": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Used in the case you want to inline a file inside the request", + "properties": { + "data": { + "description": "The file content, it could be either a `base64` (useful for images, etc.) of the files or the plain content for source code", + "type": "string" + }, + "encoding": { + "description": "The file content encoding, it could be either a base64 (useful for images, etc.) of the files or the plain text for source code.", + "enum": ["base64", "utf-8"] + }, + "file": { + "description": "The file name including the whole path", + "example": "folder/file.js", + "type": "string" + } + }, + "required": ["file", "data"], + "title": "InlinedFile", + "type": "object" + }, + { + "additionalProperties": false, + "description": "Used in the case you want to reference a file that was already uploaded", + "properties": { + "file": { + "description": "The file path relative to the project root", + "example": "folder/file.js", + "type": "string" + }, + "sha": { + "description": "The file contents hashed with SHA1, used to check the integrity", + "type": "string" + }, + "size": { + "description": "The file size in bytes", + "type": "integer" + } + }, + "required": ["file"], + "title": "UploadedFile", + "type": "object" + } + ] + }, + "type": "array" + }, + "gitMetadata": { + "description": "Populates initial git metadata for different git providers.", + "additionalProperties": false, + "type": "object", + "properties": { + "remoteUrl": { + "type": "string", + "description": "The git repository's remote origin url", + "example": "https://github.com/vercel/next.js" + }, + "commitAuthorName": { + "type": "string", + "description": "The name of the author of the commit", + "example": "kyliau" + }, + "commitMessage": { + "type": "string", + "description": "The commit message", + "example": "add method to measure Interaction to Next Paint (INP) (#36490)" + }, + "commitRef": { + "type": "string", + "description": "The branch on which the commit was made", + "example": "main" + }, + "commitSha": { + "type": "string", + "description": "The hash of the commit", + "example": "dc36199b2234c6586ebe05ec94078a895c707e29" + }, + "dirty": { + "type": "boolean", + "description": "Whether or not there have been modifications to the working tree since the latest commit", + "example": true + } + } + }, + "gitSource": { + "description": "Defines the Git Repository source to be deployed. This property can not be used in combination with `files`.", + "anyOf": [ + { + "properties": { + "ref": { + "type": "string" + }, + "repoId": { + "oneOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "sha": { + "type": "string" + }, + "type": { + "enum": ["github"], + "type": "string" + } + }, + "required": ["type", "ref", "repoId"], + "type": "object" + }, + { + "properties": { + "org": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "type": { + "enum": ["github"], + "type": "string" + } + }, + "required": ["type", "ref", "org", "repo"], + "type": "object" + }, + { + "properties": { + "projectId": { + "oneOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "type": { + "enum": ["gitlab"], + "type": "string" + } + }, + "required": ["type", "ref", "projectId"], + "type": "object" + }, + { + "properties": { + "ref": { + "type": "string" + }, + "repoUuid": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "type": { + "enum": ["bitbucket"], + "type": "string" + }, + "workspaceUuid": { + "type": "string" + } + }, + "required": ["type", "ref", "repoUuid"], + "type": "object" + }, + { + "properties": { + "owner": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "enum": ["bitbucket"], + "type": "string" + } + }, + "required": ["type", "ref", "owner", "slug"], + "type": "object" + } + ] + }, + "meta": { + "additionalProperties": { + "maxLength": 65536, + "type": "string" + }, + "description": "An object containing the deployment's metadata. Multiple key-value pairs can be attached to a deployment", + "example": { + "foo": "bar" + }, + "maxProperties": 100, + "type": "object" + }, + "monorepoManager": { + "description": "The monorepo manager that is being used for this deployment. When `null` is used no monorepo manager is selected", + "type": "string", + "nullable": true + }, + "name": { + "description": "A string with the project name used in the deployment URL", + "example": "my-instant-deployment", + "type": "string" + }, + "project": { + "description": "The target project identifier in which the deployment will be created. When defined, this parameter overrides name", + "example": "my-deployment-project", + "type": "string" + }, + "projectSettings": { + "additionalProperties": false, + "description": "Project settings that will be applied to the deployment. It is required for the first deployment of a project and will be saved for any following deployments", + "properties": { + "buildCommand": { + "description": "The build command for this project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "commandForIgnoringBuildStep": { + "maxLength": 256, + "type": "string", + "nullable": true + }, + "devCommand": { + "description": "The dev command for this project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "framework": { + "description": "The framework that is being used for this project. When `null` is used no framework is selected", + "type": "string", + "enum": [ + null, + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ], + "nullable": true + }, + "installCommand": { + "description": "The install command for this project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "nodeVersion": { + "description": "Override the Node.js version that should be used for this deployment", + "enum": ["20.x", "18.x", "16.x"], + "type": "string" + }, + "outputDirectory": { + "description": "The output directory of the project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "rootDirectory": { + "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "serverlessFunctionRegion": { + "description": "The region to deploy Serverless Functions in this project", + "maxLength": 4, + "type": "string", + "nullable": true + }, + "skipGitConnectDuringLink": { + "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`.", + "type": "boolean", + "deprecated": true + }, + "sourceFilesOutsideRootDirectory": { + "description": "Indicates if there are source files outside of the root directory, typically used for monorepos", + "type": "boolean" + } + }, + "type": "object" + }, + "target": { + "description": "Either not defined, `staging`, or `production`. If `staging`, a staging alias in the format `-.vercel.app` will be assigned. If `production`, any aliases defined in `alias` will be assigned. If omitted, the target will be `preview`", + "enum": ["staging", "production"], + "type": "string" + }, + "withLatestCommit": { + "description": "When `true` and `deploymentId` is passed in, the sha from the previous deployment's `gitSource` is removed forcing the latest commit to be used.", + "type": "boolean" + } + }, + "required": ["name"], + "type": "object" + } + } + } + } + } + }, + "/v12/deployments/{id}/cancel": { + "patch": { + "description": "This endpoint allows you to cancel a deployment which is currently building, by supplying its `id` in the URL.", + "operationId": "cancelDeployment", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Cancel a deployment", + "tags": ["deployments"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "aliasAssignedAt": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "alwaysRefuseToBuild": { + "type": "boolean" + }, + "build": { + "properties": { + "env": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["env"], + "type": "object" + }, + "buildArtifactUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "builds": { + "items": { + "type": "object" + }, + "type": "array" + }, + "env": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inspectorUrl": { + "nullable": true, + "type": "string" + }, + "isInConcurrentBuildsQueue": { + "type": "boolean" + }, + "projectSettings": { + "properties": { + "buildCommand": { + "nullable": true, + "type": "string" + }, + "devCommand": { + "nullable": true, + "type": "string" + }, + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "commandForIgnoringBuildStep": { + "nullable": true, + "type": "string" + }, + "installCommand": { + "nullable": true, + "type": "string" + }, + "outputDirectory": { + "nullable": true, + "type": "string" + }, + "speedInsights": { + "properties": { + "id": { + "type": "string" + }, + "enabledAt": { + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + }, + "paidAt": { + "type": "number" + } + }, + "required": ["id"], + "type": "object" + }, + "webAnalytics": { + "properties": { + "id": { + "type": "string" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + } + }, + "required": ["id"], + "type": "object" + } + }, + "type": "object" + }, + "readyStateReason": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "type": "boolean" + }, + "bootedAt": { + "type": "number" + }, + "buildingAt": { + "type": "number" + }, + "buildSkipped": { + "type": "boolean" + }, + "creator": { + "properties": { + "uid": { + "type": "string" + }, + "username": { + "type": "string" + }, + "avatar": { + "type": "string" + } + }, + "required": ["uid"], + "type": "object" + }, + "initReadyAt": { + "type": "number" + }, + "isFirstBranchDeployment": { + "type": "boolean" + }, + "lambdas": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "entrypoint": { + "nullable": true, + "type": "string" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "READY"] + }, + "readyStateAt": { + "type": "number" + }, + "output": { + "items": { + "properties": { + "path": { + "type": "string" + }, + "functionName": { + "type": "string" + } + }, + "required": ["path", "functionName"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["output"], + "type": "object", + "description": "A partial representation of a Build used by the deployment endpoint." + }, + "type": "array" + }, + "public": { + "type": "boolean" + }, + "ready": { + "type": "number" + }, + "status": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "team": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": ["id", "name", "slug"], + "type": "object" + }, + "userAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "previewCommentsEnabled": { + "type": "boolean" + }, + "ttyBuildLogs": { + "type": "boolean" + }, + "customEnvironment": { + "oneOf": [ + { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["production", "preview", "development"] + }, + "description": { + "type": "string" + }, + "branchMatcher": { + "properties": { + "type": { + "type": "string", + "enum": ["startsWith", "equals", "endsWith"] + }, + "pattern": { + "type": "string" + } + }, + "required": ["type", "pattern"], + "type": "object" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "currentDeploymentAliases": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "name", "slug", "type", "createdAt", "updatedAt"], + "type": "object" + }, + { + "properties": { + "id": { + "type": "string" + } + }, + "required": ["id"], + "type": "object" + } + ] + }, + "id": { + "type": "string" + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "aliasWarning": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "link": { + "type": "string" + }, + "action": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "autoAssignCustomDomains": { + "type": "boolean", + "description": "applies to custom domains only, defaults to `true`" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildErrorAt": { + "type": "number" + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "createdAt": { + "type": "number" + }, + "deletedAt": { + "nullable": true, + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "errorCode": { + "type": "string" + }, + "errorLink": { + "type": "string" + }, + "errorMessage": { + "nullable": true, + "type": "string" + }, + "errorStep": { + "type": "string" + }, + "passiveRegions": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service" + }, + "gitSource": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "repoId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "repoId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "org": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "org", "repo"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "projectId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "projectId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "workspaceUuid": { + "type": "string" + }, + "repoUuid": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "repoUuid"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "owner": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "ref": { + "nullable": true, + "type": "string" + }, + "sha": { + "type": "string" + }, + "prId": { + "nullable": true, + "type": "number" + } + }, + "required": ["type", "owner", "slug"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["custom"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "gitUrl": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "gitUrl"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["github"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "org": { + "type": "string" + }, + "repo": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "repoId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "projectId": { + "type": "number" + } + }, + "required": ["type", "ref", "sha", "projectId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "ref": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "workspaceUuid": { + "type": "string" + }, + "repoUuid": { + "type": "string" + } + }, + "required": ["type", "ref", "sha", "workspaceUuid", "repoUuid"], + "type": "object" + } + ] + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "project": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "framework": { + "nullable": true, + "type": "string" + } + }, + "required": ["id", "name"], + "type": "object" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"], + "description": "Since June 2023 Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - PROMOTED: has seen production traffic" + }, + "regions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "softDeletedByRetention": { + "type": "boolean" + }, + "source": { + "type": "string", + "enum": [ + "api-trigger-git-deploy", + "cli", + "clone/repo", + "git", + "import", + "import/repo", + "redeploy" + ] + }, + "target": { + "nullable": true, + "type": "string", + "enum": ["staging", "production"] + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "undeletedAt": { + "type": "number" + }, + "url": { + "type": "string" + }, + "version": { + "type": "number", + "enum": [2] + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": ["sub", "scope", "aud", "owner", "owner_id", "project", "project_id", "environment"], + "type": "object" + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdIn": { + "type": "string" + }, + "crons": { + "items": { + "properties": { + "schedule": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": ["schedule", "path"], + "type": "object" + }, + "type": "array" + }, + "functions": { + "nullable": true, + "additionalProperties": { + "properties": { + "memory": { + "type": "number" + }, + "maxDuration": { + "type": "number" + }, + "runtime": { + "type": "string" + }, + "includeFiles": { + "type": "string" + }, + "excludeFiles": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "passiveConnectConfigurationId": { + "type": "string", + "description": "Since November 2023 this field defines a connect configuration that will only be used to deploy passive lambdas to (as in passiveRegions)" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "projectId": { + "type": "string" + }, + "routes": { + "nullable": true, + "items": { + "oneOf": [ + { + "properties": { + "src": { + "type": "string" + }, + "dest": { + "type": "string" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "methods": { + "items": { + "type": "string" + }, + "type": "array" + }, + "continue": { + "type": "boolean" + }, + "override": { + "type": "boolean" + }, + "caseSensitive": { + "type": "boolean" + }, + "check": { + "type": "boolean" + }, + "important": { + "type": "boolean" + }, + "status": { + "type": "number" + }, + "has": { + "items": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["host"] + }, + "value": { + "type": "string" + } + }, + "required": ["type", "value"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["header", "cookie", "query"] + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["type", "key"], + "type": "object" + } + ] + }, + "type": "array" + }, + "missing": { + "items": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["host"] + }, + "value": { + "type": "string" + } + }, + "required": ["type", "value"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["header", "cookie", "query"] + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["type", "key"], + "type": "object" + } + ] + }, + "type": "array" + }, + "locale": { + "properties": { + "redirect": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "cookie": { + "type": "string" + } + }, + "type": "object" + }, + "middlewarePath": { + "type": "string", + "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." + }, + "middlewareRawSrc": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The original middleware matchers." + }, + "middleware": { + "type": "number", + "description": "A middleware index in the `middleware` key under the build result" + } + }, + "required": ["src"], + "type": "object" + }, + { + "properties": { + "handle": { + "type": "string", + "enum": ["error", "filesystem", "hit", "miss", "rewrite", "resource"] + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + }, + "status": { + "type": "number" + } + }, + "required": ["handle"], + "type": "object" + }, + { + "properties": { + "src": { + "type": "string" + }, + "continue": { + "type": "boolean" + }, + "middleware": { + "type": "number", + "enum": [0] + } + }, + "required": ["src", "continue", "middleware"], + "type": "object" + } + ] + }, + "type": "array" + }, + "gitRepo": { + "nullable": true, + "oneOf": [ + { + "properties": { + "namespace": { + "type": "string" + }, + "projectId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "url": { + "type": "string" + }, + "path": { + "type": "string" + }, + "defaultBranch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "ownerType": { + "type": "string", + "enum": ["team", "user"] + } + }, + "required": [ + "namespace", + "projectId", + "type", + "url", + "path", + "defaultBranch", + "name", + "private", + "ownerType" + ], + "type": "object" + }, + { + "properties": { + "org": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["github"] + }, + "repoOwnerId": { + "type": "number" + }, + "path": { + "type": "string" + }, + "defaultBranch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "ownerType": { + "type": "string", + "enum": ["team", "user"] + } + }, + "required": [ + "org", + "repo", + "repoId", + "type", + "repoOwnerId", + "path", + "defaultBranch", + "name", + "private", + "ownerType" + ], + "type": "object" + }, + { + "properties": { + "owner": { + "type": "string" + }, + "repoUuid": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "workspaceUuid": { + "type": "string" + }, + "path": { + "type": "string" + }, + "defaultBranch": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "ownerType": { + "type": "string", + "enum": ["team", "user"] + } + }, + "required": [ + "owner", + "repoUuid", + "slug", + "type", + "workspaceUuid", + "path", + "defaultBranch", + "name", + "private", + "ownerType" + ], + "type": "object" + } + ] + }, + "flags": { + "oneOf": [ + { + "properties": { + "definitions": { + "additionalProperties": { + "properties": { + "options": { + "items": { + "properties": { + "label": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + }, + "url": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + } + }, + "required": ["definitions"], + "type": "object", + "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." + }, + { + "items": { + "type": "object", + "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." + }, + "type": "array", + "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." + } + ] + } + }, + "required": [ + "build", + "env", + "inspectorUrl", + "isInConcurrentBuildsQueue", + "projectSettings", + "aliasAssigned", + "bootedAt", + "buildingAt", + "buildSkipped", + "creator", + "public", + "status", + "id", + "createdAt", + "name", + "meta", + "readyState", + "regions", + "type", + "url", + "version", + "createdIn", + "ownerId", + "plan", + "projectId", + "routes" + ], + "type": "object", + "description": "The private deployment representation of a Deployment." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "id", + "description": "The unique identifier of the deployment.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd", + "description": "The unique identifier of the deployment." + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v5/domains/buy": { + "post": { + "description": "Allows to purchase the specified domain.", + "operationId": "buyDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Purchase a domain", + "tags": ["domains"], + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "domain": { + "properties": { + "uid": { + "type": "string" + }, + "ns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verified": { + "type": "boolean" + }, + "created": { + "type": "number" + }, + "pending": { + "type": "boolean" + } + }, + "required": ["uid", "ns", "verified", "created", "pending"], + "type": "object" + } + }, + "required": ["domain"], + "type": "object" + } + } + } + }, + "202": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "domain": { + "properties": { + "uid": { + "type": "string" + }, + "ns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verified": { + "type": "boolean" + }, + "created": { + "type": "number" + }, + "pending": { + "type": "boolean" + } + }, + "required": ["uid", "ns", "verified", "created", "pending"], + "type": "object" + } + }, + "required": ["domain"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "409": { + "description": "" + }, + "429": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "country", + "firstName", + "lastName", + "address1", + "city", + "state", + "postalCode", + "phone", + "email" + ], + "properties": { + "name": { + "description": "The domain name to purchase.", + "type": "string", + "example": "example.com" + }, + "expectedPrice": { + "description": "The price you expect to be charged for the purchase.", + "type": "number", + "example": 10 + }, + "renew": { + "description": "Indicates whether the domain should be automatically renewed.", + "type": "boolean", + "example": true + }, + "country": { + "description": "The country of the domain registrant", + "type": "string", + "example": "US" + }, + "orgName": { + "description": "The company name of the domain registrant", + "type": "string", + "example": "Acme Inc." + }, + "firstName": { + "description": "The first name of the domain registrant", + "type": "string", + "example": "Jane" + }, + "lastName": { + "description": "The last name of the domain registrant", + "type": "string", + "example": "Doe" + }, + "address1": { + "description": "The street address of the domain registrant", + "type": "string", + "example": "340 S Lemon Ave Suite 4133" + }, + "city": { + "description": "The city of the domain registrant", + "type": "string", + "example": "San Francisco" + }, + "state": { + "description": "The state of the domain registrant", + "type": "string", + "example": "CA" + }, + "postalCode": { + "description": "The postal code of the domain registrant", + "type": "string", + "example": "91789" + }, + "phone": { + "description": "The phone number of the domain registrant", + "type": "string", + "example": "+1.4158551452" + }, + "email": { + "description": "The email of the domain registrant", + "type": "string", + "example": "jane.doe@someplace.com" + } + } + } + } + } + } + } + }, + "/v4/domains/price": { + "get": { + "description": "Check the price to purchase a domain and how long a single purchase period is.", + "operationId": "checkDomainPrice", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Check the price for a domain", + "tags": ["domains"], + "responses": { + "200": { + "description": "Successful response which returns the price of the domain and the period.", + "content": { + "application/json": { + "schema": { + "properties": { + "price": { + "type": "number", + "description": "The domain price in USD.", + "example": 20 + }, + "period": { + "type": "number", + "description": "The number of years the domain could be held before paying again.", + "example": 1 + } + }, + "required": ["price", "period"], + "type": "object", + "description": "Successful response which returns the price of the domain and the period." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "name", + "description": "The name of the domain for which the price needs to be checked.", + "in": "query", + "required": true, + "schema": { + "description": "The name of the domain for which the price needs to be checked.", + "type": "string", + "example": "example.com" + } + }, + { + "name": "type", + "description": "In which status of the domain the price needs to be checked.", + "in": "query", + "required": false, + "schema": { + "description": "In which status of the domain the price needs to be checked.", + "type": "string", + "enum": ["new", "renewal", "transfer"], + "example": "new" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v4/domains/{domain}/records": { + "get": { + "description": "Retrieves a list of DNS records created for a domain name. By default it returns 20 records if no limit is provided. The rest can be retrieved using the pagination options.", + "operationId": "getRecords", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List existing DNS records", + "tags": ["dns"], + "responses": { + "200": { + "description": "Successful response retrieving a list of paginated DNS records.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "records": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "SRV", "TXT", "NS"] + }, + "value": { + "type": "string" + }, + "mxPriority": { + "type": "number" + }, + "priority": { + "type": "number" + }, + "creator": { + "type": "string" + }, + "created": { + "nullable": true, + "type": "number" + }, + "updated": { + "nullable": true, + "type": "number" + }, + "createdAt": { + "nullable": true, + "type": "number" + }, + "updatedAt": { + "nullable": true, + "type": "number" + } + }, + "required": [ + "id", + "slug", + "name", + "type", + "value", + "creator", + "created", + "updated", + "createdAt", + "updatedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": ["records"], + "type": "object" + }, + { + "properties": { + "records": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "SRV", "TXT", "NS"] + }, + "value": { + "type": "string" + }, + "mxPriority": { + "type": "number" + }, + "priority": { + "type": "number" + }, + "creator": { + "type": "string" + }, + "created": { + "nullable": true, + "type": "number" + }, + "updated": { + "nullable": true, + "type": "number" + }, + "createdAt": { + "nullable": true, + "type": "number" + }, + "updatedAt": { + "nullable": true, + "type": "number" + } + }, + "required": [ + "id", + "slug", + "name", + "type", + "value", + "creator", + "created", + "updated", + "createdAt", + "updatedAt" + ], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["records", "pagination"], + "type": "object", + "description": "Successful response retrieving a list of paginated DNS records." + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "domain", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "example.com" + } + }, + { + "name": "limit", + "description": "Maximum number of records to list from a request.", + "in": "query", + "required": false, + "schema": { + "description": "Maximum number of records to list from a request.", + "type": "string", + "example": 20 + } + }, + { + "name": "since", + "description": "Get records created after this JavaScript timestamp.", + "in": "query", + "required": false, + "schema": { + "description": "Get records created after this JavaScript timestamp.", + "type": "string", + "example": 1609499532000 + } + }, + { + "name": "until", + "description": "Get records created before this JavaScript timestamp.", + "in": "query", + "required": false, + "schema": { + "description": "Get records created before this JavaScript timestamp.", + "type": "string", + "example": 1612264332000 + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v2/domains/{domain}/records": { + "post": { + "description": "Creates a DNS record for a domain.", + "operationId": "createRecord", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Create a DNS record", + "tags": ["dns"], + "responses": { + "200": { + "description": "Successful response showing the uid of the newly created DNS record.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "properties": { + "uid": { + "type": "string" + }, + "updated": { + "type": "number" + } + }, + "required": ["uid", "updated"], + "type": "object" + }, + { + "properties": { + "uid": { + "type": "string", + "description": "The id of the newly created DNS record", + "example": "rec_V0fra8eEgQwEpFhYG2vTzC3K" + } + }, + "required": ["uid"], + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "domain", + "description": "The domain used to create the DNS record.", + "in": "path", + "required": true, + "schema": { + "description": "The domain used to create the DNS record.", + "type": "string", + "example": "example.com" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": ["type"], + "properties": { + "type": { + "description": "The type of record, it could be one of the valid DNS records.", + "type": "string", + "enum": ["A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "SRV", "TXT", "NS"] + } + }, + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["type", "value", "name"], + "properties": { + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "type": "string", + "example": "subdomain" + }, + "type": { + "description": "Must be of type `A`.", + "type": "string", + "enum": ["A"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "value": { + "description": "The record value must be a valid IPv4 address.", + "type": "string", + "format": "ipv4", + "example": "192.0.2.42" + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["type", "value", "name"], + "properties": { + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "type": "string", + "example": "subdomain" + }, + "type": { + "description": "Must be of type `AAAA`.", + "type": "string", + "enum": ["AAAA"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "value": { + "description": "An AAAA record pointing to an IPv6 address.", + "type": "string", + "format": "ipv6", + "example": "2001:DB8::42" + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["type", "value", "name"], + "properties": { + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "type": "string", + "example": "subdomain" + }, + "type": { + "description": "Must be of type `ALIAS`.", + "type": "string", + "enum": ["ALIAS"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "value": { + "description": "An ALIAS virtual record pointing to a hostname resolved to an A record on server side.", + "type": "string", + "example": "cname.vercel-dns.com" + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["type", "value", "name"], + "properties": { + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "type": "string", + "example": "subdomain" + }, + "type": { + "description": "Must be of type `CAA`.", + "type": "string", + "enum": ["CAA"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "value": { + "description": "A CAA record to specify which Certificate Authorities (CAs) are allowed to issue certificates for the domain.", + "type": "string", + "example": "0 issue \\\"letsencrypt.org\\\"" + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["type", "name"], + "properties": { + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "type": "string", + "example": "subdomain" + }, + "type": { + "description": "Must be of type `CNAME`.", + "type": "string", + "enum": ["CNAME"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "value": { + "description": "A CNAME record mapping to another domain name.", + "type": "string", + "example": "cname.vercel-dns.com" + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["type", "value", "name", "mxPriority"], + "properties": { + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "type": "string", + "example": "subdomain" + }, + "type": { + "description": "Must be of type `MX`.", + "type": "string", + "enum": ["MX"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "value": { + "description": "An MX record specifying the mail server responsible for accepting messages on behalf of the domain name.", + "type": "string", + "example": "10 mail.example.com." + }, + "mxPriority": { + "type": "number", + "minimum": 0, + "maximum": 65535, + "example": 10 + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["type", "name", "srv"], + "properties": { + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "type": "string", + "title": "subdomain" + }, + "type": { + "description": "Must be of type `SRV`.", + "type": "string", + "enum": ["SRV"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "srv": { + "type": "object", + "additionalProperties": false, + "required": ["weight", "port", "priority", "target"], + "properties": { + "priority": { + "anyOf": [ + { + "type": "number", + "minimum": 0, + "maximum": 65535, + "example": 10, + "nullable": true + } + ] + }, + "weight": { + "anyOf": [ + { + "type": "number", + "minimum": 0, + "maximum": 65535, + "example": 10, + "nullable": true + } + ] + }, + "port": { + "anyOf": [ + { + "type": "number", + "minimum": 0, + "maximum": 65535, + "example": 5000, + "nullable": true + } + ] + }, + "target": { + "type": "string", + "example": "host.example.com" + } + } + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["type", "value", "name"], + "properties": { + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "type": "string", + "title": "subdomain" + }, + "type": { + "description": "Must be of type `TXT`.", + "type": "string", + "enum": ["TXT"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "value": { + "description": "A TXT record containing arbitrary text.", + "type": "string", + "example": "hello" + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["type", "name"], + "properties": { + "name": { + "description": "A subdomain name.", + "type": "string", + "example": "subdomain" + }, + "type": { + "description": "Must be of type `NS`.", + "type": "string", + "enum": ["NS"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "value": { + "description": "An NS domain value.", + "type": "string", + "example": "ns1.example.com" + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["type", "name", "https"], + "properties": { + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "type": "string", + "title": "subdomain" + }, + "type": { + "description": "Must be of type `HTTPS`.", + "type": "string", + "enum": ["HTTPS"] + }, + "ttl": { + "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", + "type": "number", + "minimum": 60, + "maximum": 2147483647, + "example": 60 + }, + "https": { + "type": "object", + "additionalProperties": false, + "required": ["priority", "target"], + "properties": { + "priority": { + "anyOf": [ + { + "type": "number", + "minimum": 0, + "maximum": 65535, + "example": 10, + "nullable": true + } + ] + }, + "target": { + "type": "string", + "example": "host.example.com" + }, + "params": { + "type": "string", + "example": "alpn=h2,h3" + } + } + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + } + } + ] + } + } + } + } + } + }, + "/v1/domains/records/{recordId}": { + "patch": { + "description": "Updates an existing DNS record for a domain name.", + "operationId": "updateRecord", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update an existing DNS record", + "tags": ["dns"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "createdAt": { + "nullable": true, + "type": "number" + }, + "creator": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "recordType": { + "type": "string", + "enum": ["A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "SRV", "TXT", "NS"] + }, + "ttl": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["record", "record-sys"] + }, + "value": { + "type": "string" + }, + "comment": { + "type": "string" + } + }, + "required": ["creator", "domain", "id", "name", "recordType", "type", "value"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "recordId", + "description": "The id of the DNS record", + "in": "path", + "required": true, + "schema": { + "description": "The id of the DNS record", + "example": "rec_2qn7pzrx89yxy34vezpd31y9", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "type": "string", + "description": "The name of the DNS record", + "example": "example-1", + "nullable": true + }, + "value": { + "type": "string", + "description": "The value of the DNS record", + "example": "google.com", + "nullable": true + }, + "type": { + "enum": ["A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "SRV", "TXT", "NS"], + "type": "string", + "description": "The type of the DNS record", + "example": "A", + "maxLength": 255, + "nullable": true + }, + "ttl": { + "type": "integer", + "description": "The Time to live (TTL) value of the DNS record", + "example": "60", + "minimum": 60, + "maximum": 2147483647, + "nullable": true + }, + "mxPriority": { + "type": "integer", + "description": "The MX priority value of the DNS record", + "nullable": true + }, + "srv": { + "additionalProperties": false, + "required": ["target", "weight", "port", "priority"], + "properties": { + "target": { + "type": "string", + "description": "", + "example": "example2.com.", + "maxLength": 255, + "nullable": true + }, + "weight": { + "description": "", + "type": "integer", + "nullable": true + }, + "port": { + "description": "", + "type": "integer", + "nullable": true + }, + "priority": { + "description": "", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "nullable": true + }, + "https": { + "additionalProperties": false, + "required": ["priority", "target"], + "properties": { + "priority": { + "description": "", + "type": "integer", + "nullable": true + }, + "target": { + "type": "string", + "description": "", + "example": "example2.com.", + "maxLength": 255, + "nullable": true + }, + "params": { + "description": "", + "type": "string", + "nullable": true + } + }, + "type": "object", + "nullable": true + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500 + } + }, + "type": "object" + } + } + } + } + } + }, + "/v2/domains/{domain}/records/{recordId}": { + "delete": { + "description": "Removes an existing DNS record from a domain name.", + "operationId": "removeRecord", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete a DNS record", + "tags": ["dns"], + "responses": { + "200": { + "description": "Successful response by removing the specified DNS record.", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "domain", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "example.com" + } + }, + { + "name": "recordId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "rec_V0fra8eEgQwEpFhYG2vTzC3K" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v4/domains/status": { + "get": { + "description": "Check if a domain name is available for purchase.", + "operationId": "checkDomainStatus", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Check a Domain Availability", + "tags": ["domains"], + "responses": { + "200": { + "description": "Successful response checking if a Domain's name is available.", + "content": { + "application/json": { + "schema": { + "properties": { + "available": { + "type": "boolean" + } + }, + "required": ["available"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "name", + "description": "The name of the domain for which we would like to check the status.", + "in": "query", + "required": true, + "schema": { + "description": "The name of the domain for which we would like to check the status.", + "type": "string", + "example": "example.com" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/domains/{domain}/registry": { + "get": { + "description": "Fetch domain transfer availability or transfer status if a transfer is in progress.", + "operationId": "getDomainTransfer", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get domain transfer info.", + "tags": ["domains"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "transferable": { + "type": "boolean", + "description": "Whether or not the domain is transferable" + }, + "transferPolicy": { + "nullable": true, + "type": "string", + "enum": ["charge-and-renew", "no-charge-no-change", "no-change", "new-term", "not-supported"], + "description": "The domain's transfer policy (depends on TLD requirements). `charge-and-renew`: transfer will charge for renewal and will renew the existing domain's registration. `no-charge-no-change`: transfer will have no change to registration period and does not require charge. `no-change`: transfer charge is required, but no change in registration period. `new-term`: transfer charge is required and a new registry term is set based on the transfer date. `not-supported`: transfers are not supported for this domain or TLD. `null`: This TLD is not supported by Vercel's Registrar." + }, + "reason": { + "type": "string", + "description": "Description associated with transferable state." + }, + "status": { + "type": "string", + "enum": [ + "pending_owner", + "pending_admin", + "pending_registry", + "completed", + "cancelled", + "undef", + "unknown" + ], + "description": "The current state of an ongoing transfer. `pending_owner`: Awaiting approval by domain's admin contact (every transfer begins with this status). If approval is not given within five days, the transfer is cancelled. `pending_admin`: Waiting for approval by Vercel Registrar admin. `pending_registry`: Awaiting registry approval (the transfer completes after 7 days unless it is declined by the current registrar). `completed`: The transfer completed successfully. `cancelled`: The transfer was cancelled. `undef`: No transfer exists for this domain. `unknown`: This TLD is not supported by Vercel's Registrar." + } + }, + "required": ["transferable", "transferPolicy", "reason", "status"], + "type": "object" + } + } + } + }, + "400": { + "description": "" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "domain", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "example.com" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v6/domains/{domain}/config": { + "get": { + "description": "Get a Domain's configuration.", + "operationId": "getDomainConfig", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get a Domain's configuration", + "tags": ["domains"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "configuredBy": { + "nullable": true, + "type": "string", + "enum": ["CNAME", "A", "http", "dns-01"], + "description": "How we see the domain's configuration. - `CNAME`: Domain has a CNAME pointing to Vercel. - `A`: Domain's A record is resolving to Vercel. - `http`: Domain is resolving to Vercel but may be behind a Proxy. - `dns-01`: Domain is not resolving to Vercel but dns-01 challenge is enabled. - `null`: Domain is not resolving to Vercel." + }, + "acceptedChallenges": { + "items": { + "type": "string", + "enum": ["dns-01", "http-01"], + "description": "Which challenge types the domain can use for issuing certs." + }, + "type": "array", + "description": "Which challenge types the domain can use for issuing certs." + }, + "misconfigured": { + "type": "boolean", + "description": "Whether or not the domain is configured AND we can automatically generate a TLS certificate." + } + }, + "required": ["misconfigured"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "domain", + "description": "The name of the domain.", + "in": "path", + "required": true, + "schema": { + "description": "The name of the domain.", + "type": "string", + "example": "example.com" + } + }, + { + "name": "strict", + "description": "When true, the response will only include the nameservers assigned directly to the specified domain. When false and there are no nameservers assigned directly to the specified domain, the response will include the nameservers of the domain's parent zone.", + "in": "query", + "required": false, + "schema": { + "enum": ["true", "false"], + "description": "When true, the response will only include the nameservers assigned directly to the specified domain. When false and there are no nameservers assigned directly to the specified domain, the response will include the nameservers of the domain's parent zone." + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v5/domains/{domain}": { + "get": { + "description": "Get information for a single domain in an account or team.", + "operationId": "getDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get Information for a Single Domain", + "tags": ["domains"], + "responses": { + "200": { + "description": "Successful response retrieving an information for a specific domains.", + "content": { + "application/json": { + "schema": { + "properties": { + "domain": { + "properties": { + "suffix": { + "type": "boolean" + }, + "verified": { + "type": "boolean", + "description": "If the domain has the ownership verified.", + "example": true + }, + "nameservers": { + "items": { + "type": "string" + }, + "type": "array", + "description": "A list of the current nameservers of the domain.", + "example": ["ns1.nameserver.net", "ns2.nameserver.net"] + }, + "intendedNameservers": { + "items": { + "type": "string" + }, + "type": "array", + "description": "A list of the intended nameservers for the domain to point to Vercel DNS.", + "example": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] + }, + "customNameservers": { + "items": { + "type": "string" + }, + "type": "array", + "description": "A list of custom nameservers for the domain to point to. Only applies to domains purchased with Vercel.", + "example": ["ns1.nameserver.net", "ns2.nameserver.net"] + }, + "creator": { + "properties": { + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "customerId": { + "nullable": true, + "type": "string" + }, + "isDomainReseller": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "required": ["username", "email", "id"], + "type": "object", + "description": "An object containing information of the domain creator, including the user's id, username, and email.", + "example": { + "id": "ZspSRT4ljIEEmMHgoDwKWDei", + "username": "vercel_user", + "email": "demo@example.com" + } + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "userId": { + "type": "string" + }, + "boughtAt": { + "nullable": true, + "type": "number", + "description": "If it was purchased through Vercel, the timestamp in milliseconds when it was purchased.", + "example": 1613602938882 + }, + "createdAt": { + "type": "number", + "description": "Timestamp in milliseconds when the domain was created in the registry.", + "example": 1613602938882 + }, + "expiresAt": { + "nullable": true, + "type": "number", + "description": "Timestamp in milliseconds at which the domain is set to expire. `null` if not bought with Vercel.", + "example": 1613602938882 + }, + "id": { + "type": "string", + "description": "The unique identifier of the domain.", + "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" + }, + "name": { + "type": "string", + "description": "The domain name.", + "example": "example.com" + }, + "orderedAt": { + "type": "number", + "description": "Timestamp in milliseconds at which the domain was ordered.", + "example": 1613602938882 + }, + "renew": { + "type": "boolean", + "description": "Indicates whether the domain is set to automatically renew.", + "example": true + }, + "serviceType": { + "type": "string", + "enum": ["zeit.world", "external", "na"], + "description": "The type of service the domain is handled by. `external` if the DNS is externally handled, `zeit.world` if handled with Vercel, or `na` if the service is not available.", + "example": "zeit.world" + }, + "transferredAt": { + "nullable": true, + "type": "number", + "description": "Timestamp in milliseconds at which the domain was successfully transferred into Vercel. `null` if the transfer is still processing or was never transferred in.", + "example": 1613602938882 + }, + "transferStartedAt": { + "type": "number", + "description": "If transferred into Vercel, timestamp in milliseconds when the domain transfer was initiated.", + "example": 1613602938882 + } + }, + "required": [ + "suffix", + "verified", + "nameservers", + "intendedNameservers", + "creator", + "teamId", + "userId", + "boughtAt", + "createdAt", + "expiresAt", + "id", + "name", + "serviceType" + ], + "type": "object" + } + }, + "required": ["domain"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "domain", + "description": "The name of the domain.", + "in": "path", + "required": true, + "schema": { + "description": "The name of the domain.", + "type": "string", + "example": "example.com" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v5/domains": { + "get": { + "description": "Retrieves a list of domains registered for the authenticated user or team. By default it returns the last 20 domains if no limit is provided.", + "operationId": "getDomains", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List all the domains", + "tags": ["domains"], + "responses": { + "200": { + "description": "Successful response retrieving a list of domains.", + "content": { + "application/json": { + "schema": { + "properties": { + "domains": { + "items": { + "properties": { + "verified": { + "type": "boolean", + "description": "If the domain has the ownership verified.", + "example": true + }, + "nameservers": { + "items": { + "type": "string" + }, + "type": "array", + "description": "A list of the current nameservers of the domain.", + "example": ["ns1.nameserver.net", "ns2.nameserver.net"] + }, + "intendedNameservers": { + "items": { + "type": "string" + }, + "type": "array", + "description": "A list of the intended nameservers for the domain to point to Vercel DNS.", + "example": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] + }, + "customNameservers": { + "items": { + "type": "string" + }, + "type": "array", + "description": "A list of custom nameservers for the domain to point to. Only applies to domains purchased with Vercel.", + "example": ["ns1.nameserver.net", "ns2.nameserver.net"] + }, + "creator": { + "properties": { + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "customerId": { + "nullable": true, + "type": "string" + }, + "isDomainReseller": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "required": ["username", "email", "id"], + "type": "object", + "description": "An object containing information of the domain creator, including the user's id, username, and email.", + "example": { + "id": "ZspSRT4ljIEEmMHgoDwKWDei", + "username": "vercel_user", + "email": "demo@example.com" + } + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number", + "description": "Timestamp in milliseconds when the domain was created in the registry.", + "example": 1613602938882 + }, + "boughtAt": { + "nullable": true, + "type": "number", + "description": "If it was purchased through Vercel, the timestamp in milliseconds when it was purchased.", + "example": 1613602938882 + }, + "expiresAt": { + "nullable": true, + "type": "number", + "description": "Timestamp in milliseconds at which the domain is set to expire. `null` if not bought with Vercel.", + "example": 1613602938882 + }, + "id": { + "type": "string", + "description": "The unique identifier of the domain.", + "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" + }, + "name": { + "type": "string", + "description": "The domain name.", + "example": "example.com" + }, + "orderedAt": { + "type": "number", + "description": "Timestamp in milliseconds at which the domain was ordered.", + "example": 1613602938882 + }, + "renew": { + "type": "boolean", + "description": "Indicates whether the domain is set to automatically renew.", + "example": true + }, + "serviceType": { + "type": "string", + "enum": ["zeit.world", "external", "na"], + "description": "The type of service the domain is handled by. `external` if the DNS is externally handled, `zeit.world` if handled with Vercel, or `na` if the service is not available.", + "example": "zeit.world" + }, + "transferredAt": { + "nullable": true, + "type": "number", + "description": "Timestamp in milliseconds at which the domain was successfully transferred into Vercel. `null` if the transfer is still processing or was never transferred in.", + "example": 1613602938882 + }, + "transferStartedAt": { + "type": "number", + "description": "If transferred into Vercel, timestamp in milliseconds when the domain transfer was initiated.", + "example": 1613602938882 + }, + "userId": { + "type": "string" + } + }, + "required": [ + "verified", + "nameservers", + "intendedNameservers", + "creator", + "teamId", + "createdAt", + "boughtAt", + "expiresAt", + "id", + "name", + "serviceType", + "userId" + ], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["domains", "pagination"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "limit", + "description": "Maximum number of domains to list from a request.", + "in": "query", + "schema": { + "description": "Maximum number of domains to list from a request.", + "type": "number", + "example": 20 + } + }, + { + "name": "since", + "description": "Get domains created after this JavaScript timestamp.", + "in": "query", + "schema": { + "description": "Get domains created after this JavaScript timestamp.", + "type": "number", + "example": 1609499532000 + } + }, + { + "name": "until", + "description": "Get domains created before this JavaScript timestamp.", + "in": "query", + "schema": { + "description": "Get domains created before this JavaScript timestamp.", + "type": "number", + "example": 1612264332000 + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "post": { + "description": "This endpoint is used for adding a new apex domain name with Vercel for the authenticating user. Can also be used for initiating a domain transfer request from an external Registrar to Vercel.", + "operationId": "createOrTransferDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Register or transfer-in a new Domain", + "tags": ["domains"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "domain": { + "properties": { + "verified": { + "type": "boolean", + "description": "If the domain has the ownership verified.", + "example": true + }, + "nameservers": { + "items": { + "type": "string" + }, + "type": "array", + "description": "A list of the current nameservers of the domain.", + "example": ["ns1.nameserver.net", "ns2.nameserver.net"] + }, + "intendedNameservers": { + "items": { + "type": "string" + }, + "type": "array", + "description": "A list of the intended nameservers for the domain to point to Vercel DNS.", + "example": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] + }, + "customNameservers": { + "items": { + "type": "string" + }, + "type": "array", + "description": "A list of custom nameservers for the domain to point to. Only applies to domains purchased with Vercel.", + "example": ["ns1.nameserver.net", "ns2.nameserver.net"] + }, + "creator": { + "properties": { + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "customerId": { + "nullable": true, + "type": "string" + }, + "isDomainReseller": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "required": ["username", "email", "id"], + "type": "object", + "description": "An object containing information of the domain creator, including the user's id, username, and email.", + "example": { + "id": "ZspSRT4ljIEEmMHgoDwKWDei", + "username": "vercel_user", + "email": "demo@example.com" + } + }, + "name": { + "type": "string", + "description": "The domain name.", + "example": "example.com" + }, + "boughtAt": { + "nullable": true, + "type": "number", + "description": "If it was purchased through Vercel, the timestamp in milliseconds when it was purchased.", + "example": 1613602938882 + }, + "createdAt": { + "type": "number", + "description": "Timestamp in milliseconds when the domain was created in the registry.", + "example": 1613602938882 + }, + "expiresAt": { + "nullable": true, + "type": "number", + "description": "Timestamp in milliseconds at which the domain is set to expire. `null` if not bought with Vercel.", + "example": 1613602938882 + }, + "id": { + "type": "string", + "description": "The unique identifier of the domain.", + "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" + }, + "orderedAt": { + "type": "number", + "description": "Timestamp in milliseconds at which the domain was ordered.", + "example": 1613602938882 + }, + "renew": { + "type": "boolean", + "description": "Indicates whether the domain is set to automatically renew.", + "example": true + }, + "serviceType": { + "type": "string", + "enum": ["zeit.world", "external", "na"], + "description": "The type of service the domain is handled by. `external` if the DNS is externally handled, `zeit.world` if handled with Vercel, or `na` if the service is not available.", + "example": "zeit.world" + }, + "transferredAt": { + "nullable": true, + "type": "number", + "description": "Timestamp in milliseconds at which the domain was successfully transferred into Vercel. `null` if the transfer is still processing or was never transferred in.", + "example": 1613602938882 + }, + "transferStartedAt": { + "type": "number", + "description": "If transferred into Vercel, timestamp in milliseconds when the domain transfer was initiated.", + "example": 1613602938882 + }, + "userId": { + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "verified", + "nameservers", + "intendedNameservers", + "creator", + "name", + "boughtAt", + "createdAt", + "expiresAt", + "id", + "serviceType", + "userId", + "teamId" + ], + "type": "object" + } + }, + "required": ["domain"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "" + }, + "500": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "method": { + "description": "The domain operation to perform. It can be either `add` or `transfer-in`.", + "type": "string", + "example": "transfer-in" + } + }, + "oneOf": [ + { + "additionalProperties": false, + "type": "object", + "description": "add", + "required": ["name"], + "properties": { + "name": { + "description": "The domain name you want to add.", + "type": "string", + "example": "example.com" + }, + "cdnEnabled": { + "description": "Whether the domain has the Vercel Edge Network enabled or not.", + "type": "boolean", + "example": true + }, + "zone": { + "type": "boolean" + }, + "method": { + "description": "The domain operation to perform.", + "type": "string", + "example": "add" + } + } + }, + { + "additionalProperties": false, + "type": "object", + "description": "move-in", + "required": ["method", "name"], + "properties": { + "name": { + "description": "The domain name you want to add.", + "type": "string", + "example": "example.com" + }, + "method": { + "description": "The domain operation to perform.", + "type": "string", + "example": "move-in" + }, + "token": { + "description": "The move-in token from Move Requested email.", + "type": "string", + "example": "fdhfr820ad#@FAdlj$$" + } + } + }, + { + "additionalProperties": false, + "type": "object", + "description": "transfer-in", + "required": ["method", "name"], + "properties": { + "name": { + "description": "The domain name you want to add.", + "type": "string", + "example": "example.com" + }, + "method": { + "description": "The domain operation to perform.", + "type": "string", + "example": "transfer-in" + }, + "authCode": { + "description": "The authorization code assigned to the domain.", + "type": "string", + "example": "fdhfr820ad#@FAdlj$$" + }, + "expectedPrice": { + "description": "The price you expect to be charged for the required 1 year renewal.", + "type": "number", + "example": 8 + } + } + } + ] + } + } + } + } + } + }, + "/v3/domains/{domain}": { + "patch": { + "description": "Update or move apex domain.", + "operationId": "patchDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update or move apex domain", + "tags": ["domains"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "properties": { + "moved": { + "type": "boolean" + } + }, + "required": ["moved"], + "type": "object" + }, + { + "properties": { + "moved": { + "type": "boolean" + }, + "token": { + "type": "string" + } + }, + "required": ["moved", "token"], + "type": "object" + }, + { + "properties": { + "renew": { + "type": "boolean" + }, + "customNameservers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "zone": { + "type": "boolean" + } + }, + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "domain", + "in": "path", + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "description": "update", + "additionalProperties": false, + "properties": { + "op": { + "example": "update", + "type": "string" + }, + "renew": { + "description": "Specifies whether domain should be renewed.", + "type": "boolean" + }, + "customNameservers": { + "description": "The custom nameservers for this project.", + "items": { + "type": "string" + }, + "maxItems": 4, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "zone": { + "description": "Specifies whether this is a DNS zone that intends to use Vercel's nameservers.", + "type": "boolean" + } + } + }, + { + "type": "object", + "description": "move-out", + "additionalProperties": false, + "properties": { + "op": { + "example": "move-out", + "type": "string" + }, + "destination": { + "description": "User or team to move domain to", + "type": "string" + } + } + } + ] + } + } + } + } + } + }, + "/v6/domains/{domain}": { + "delete": { + "description": "Delete a previously registered domain name from Vercel. Deleting a domain will automatically remove any associated aliases.", + "operationId": "deleteDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Remove a domain by name", + "tags": ["domains"], + "responses": { + "200": { + "description": "Successful response removing a domain.", + "content": { + "application/json": { + "schema": { + "properties": { + "uid": { + "type": "string", + "description": "The id of the newly created DNS record", + "example": "rec_V0fra8eEgQwEpFhYG2vTzC3K" + } + }, + "required": ["uid"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "domain", + "description": "The name of the domain.", + "in": "path", + "required": true, + "schema": { + "description": "The name of the domain.", + "type": "string", + "example": "example.com" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/edge-config": { + "get": { + "description": "Returns all Edge Configs.", + "operationId": "getEdgeConfigs", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get Edge Configs", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "List of all edge configs.", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "ownerId": { + "type": "string" + }, + "slug": { + "type": "string", + "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." + }, + "updatedAt": { + "type": "number" + }, + "digest": { + "type": "string" + }, + "transfer": { + "properties": { + "fromAccountId": { + "type": "string" + }, + "startedAt": { + "type": "number" + }, + "doneAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["fromAccountId", "startedAt", "doneAt"], + "type": "object", + "description": "Keeps track of the current state of the Edge Config while it gets transferred." + }, + "schema": { + "type": "object" + }, + "purpose": { + "properties": { + "type": { + "type": "string", + "enum": ["flags"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + }, + "sizeInBytes": { + "type": "number" + }, + "itemCount": { + "type": "number" + } + }, + "required": ["sizeInBytes", "itemCount"], + "type": "object", + "description": "List of all edge configs." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "post": { + "description": "Creates an Edge Config.", + "operationId": "createEdgeConfig", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Create an Edge Config", + "tags": ["edge-config"], + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "slug": { + "type": "string", + "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." + }, + "ownerId": { + "type": "string" + }, + "digest": { + "type": "string" + }, + "transfer": { + "properties": { + "fromAccountId": { + "type": "string" + }, + "startedAt": { + "type": "number" + }, + "doneAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["fromAccountId", "startedAt", "doneAt"], + "type": "object", + "description": "Keeps track of the current state of the Edge Config while it gets transferred." + }, + "schema": { + "type": "object" + }, + "purpose": { + "properties": { + "type": { + "type": "string", + "enum": ["flags"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + }, + "sizeInBytes": { + "type": "number" + }, + "itemCount": { + "type": "number" + } + }, + "required": ["sizeInBytes", "itemCount"], + "type": "object", + "description": "An Edge Config" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["slug"], + "properties": { + "slug": { + "maxLength": 32, + "pattern": "^[\\\\w-]+$", + "type": "string" + }, + "items": { + "type": "object", + "propertyNames": { + "maxLength": 256, + "pattern": "^[\\\\w-]+$", + "type": "string" + }, + "additionalProperties": { + "oneOf": [ + { + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "object" + } + ] + }, + { + "type": "array", + "items": { + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "object" + } + ] + } + } + ] + } + } + } + } + } + } + } + } + }, + "/v1/edge-config/{edgeConfigId}": { + "get": { + "description": "Returns an Edge Config.", + "operationId": "getEdgeConfig", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get an Edge Config", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "The EdgeConfig.", + "content": { + "application/json": { + "schema": { + "properties": { + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "slug": { + "type": "string", + "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." + }, + "ownerId": { + "type": "string" + }, + "digest": { + "type": "string" + }, + "transfer": { + "properties": { + "fromAccountId": { + "type": "string" + }, + "startedAt": { + "type": "number" + }, + "doneAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["fromAccountId", "startedAt", "doneAt"], + "type": "object", + "description": "Keeps track of the current state of the Edge Config while it gets transferred." + }, + "schema": { + "type": "object" + }, + "purpose": { + "properties": { + "type": { + "type": "string", + "enum": ["flags"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + }, + "sizeInBytes": { + "type": "number" + }, + "itemCount": { + "type": "number" + } + }, + "required": ["sizeInBytes", "itemCount"], + "type": "object", + "description": "The EdgeConfig." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "put": { + "description": "Updates an Edge Config.", + "operationId": "updateEdgeConfig", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update an Edge Config", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "slug": { + "type": "string", + "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." + }, + "ownerId": { + "type": "string" + }, + "digest": { + "type": "string" + }, + "transfer": { + "properties": { + "fromAccountId": { + "type": "string" + }, + "startedAt": { + "type": "number" + }, + "doneAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["fromAccountId", "startedAt", "doneAt"], + "type": "object", + "description": "Keeps track of the current state of the Edge Config while it gets transferred." + }, + "schema": { + "type": "object" + }, + "purpose": { + "properties": { + "type": { + "type": "string", + "enum": ["flags"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + }, + "sizeInBytes": { + "type": "number" + }, + "itemCount": { + "type": "number" + } + }, + "required": ["sizeInBytes", "itemCount"], + "type": "object", + "description": "An Edge Config" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["slug"], + "properties": { + "slug": { + "maxLength": 32, + "pattern": "^[\\\\w-]+$", + "type": "string" + } + } + } + } + } + } + }, + "delete": { + "description": "Delete an Edge Config by id.", + "operationId": "deleteEdgeConfig", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete an Edge Config", + "tags": ["edge-config"], + "responses": { + "204": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/edge-config/{edgeConfigId}/items": { + "get": { + "x-fern-ignore": true, + "description": "Returns all items of an Edge Config.", + "operationId": "getEdgeConfigItems", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get Edge Config items", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "The EdgeConfig.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EdgeConfigItem" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^ecfg_" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "patch": { + "description": "Update multiple Edge Config Items in batch.", + "operationId": "patchEdgeConfigItems", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update Edge Config items in batch", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "status": { + "type": "string" + } + }, + "required": ["status"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^ecfg_" + } + }, + { + "name": "edgeConfigId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dryRun", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["items", "definition"], + "properties": { + "items": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "operation": { + "enum": ["create", "update", "upsert", "delete"] + }, + "key": { + "maxLength": 256, + "pattern": "^[\\\\w-]+$", + "type": "string" + }, + "value": { + "oneOf": [ + { + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "object" + } + ] + }, + { + "type": "array", + "items": { + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "description": { + "nullable": true, + "oneOf": [ + { + "type": "string", + "maxLength": 512 + } + ] + } + }, + "anyOf": [ + { + "properties": { + "operation": { + "const": "create" + } + }, + "required": ["operation", "key", "value"] + }, + { + "properties": { + "operation": { + "enum": ["update", "upsert"] + } + }, + "required": ["operation", "key", "value"] + }, + { + "properties": { + "operation": { + "enum": ["update", "upsert"] + } + }, + "required": ["operation", "key", "description"] + }, + { + "properties": { + "operation": { + "enum": ["delete"] + } + }, + "required": ["operation", "key"], + "not": { + "required": ["value", "description"] + } + } + ] + } + ] + } + }, + "definition": {} + } + } + } + } + } + } + }, + "/v1/edge-config/{edgeConfigId}/schema": { + "get": { + "description": "Returns the schema of an Edge Config.", + "operationId": "getEdgeConfigSchema", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get Edge Config schema", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "The EdgeConfig.", + "content": { + "application/json": { + "schema": { + "nullable": true, + "type": "object", + "description": "The EdgeConfig." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "post": { + "description": "Update an Edge Config's schema.", + "operationId": "patchEdgeConfigSchema", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update Edge Config schema", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "nullable": true, + "type": "object", + "description": "The JSON schema uploaded by the user" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dryRun", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["definition"], + "properties": { + "definition": {} + } + } + } + } + } + }, + "delete": { + "description": "Deletes the schema of existing Edge Config.", + "operationId": "deleteEdgeConfigSchema", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete an Edge Config's schema", + "tags": ["edge-config"], + "responses": { + "204": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/edge-config/{edgeConfigId}/item/{edgeConfigItemKey}": { + "get": { + "description": "Returns a specific Edge Config Item.", + "operationId": "getEdgeConfigItem", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get an Edge Config item", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "The EdgeConfig.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EdgeConfigItem" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^ecfg_" + } + }, + { + "name": "edgeConfigItemKey", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/edge-config/{edgeConfigId}/tokens": { + "get": { + "description": "Returns all tokens of an Edge Config.", + "operationId": "getEdgeConfigTokens", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get all tokens of an Edge Config", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "The EdgeConfig.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EdgeConfigToken" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "description": "Deletes one or more tokens of an existing Edge Config.", + "operationId": "deleteEdgeConfigTokens", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete one or more Edge Config tokens", + "tags": ["edge-config"], + "responses": { + "204": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["tokens"], + "properties": { + "tokens": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/v1/edge-config/{edgeConfigId}/token/{token}": { + "get": { + "description": "Return meta data about an Edge Config token.", + "operationId": "getEdgeConfigToken", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get Edge Config token meta data", + "tags": ["edge-config"], + "responses": { + "200": { + "description": "The EdgeConfig.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EdgeConfigToken" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/edge-config/{edgeConfigId}/token": { + "post": { + "description": "Adds a token to an existing Edge Config.", + "operationId": "createEdgeConfigToken", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Create an Edge Config token", + "tags": ["edge-config"], + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "token": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": ["token", "id"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "edgeConfigId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["label"], + "properties": { + "label": { + "maxLength": 52, + "type": "string" + } + } + } + } + } + } + } + }, + "/v3/events": { + "get": { + "description": "Retrieves a list of \"events\" generated by the User on Vercel. Events are generated when the User performs a particular action, such as logging in, creating a deployment, and joining a Team (just to name a few). When the `teamId` parameter is supplied, then the events that are returned will be in relation to the Team that was specified.", + "operationId": "listUserEvents", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List User Events", + "tags": ["user"], + "responses": { + "200": { + "description": "Successful response.", + "content": { + "application/json": { + "schema": { + "properties": { + "events": { + "items": { + "$ref": "#/components/schemas/UserEvent" + }, + "type": "array", + "description": "Array of events generated by the User." + } + }, + "required": ["events"], + "type": "object", + "description": "Successful response." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "limit", + "description": "Maximum number of items which may be returned.", + "in": "query", + "schema": { + "description": "Maximum number of items which may be returned.", + "example": 20, + "type": "number" + } + }, + { + "name": "since", + "description": "Timestamp to only include items created since then.", + "in": "query", + "schema": { + "description": "Timestamp to only include items created since then.", + "example": "2019-12-08T10:00:38.976Z", + "type": "string" + } + }, + { + "name": "until", + "description": "Timestamp to only include items created until then.", + "in": "query", + "schema": { + "description": "Timestamp to only include items created until then.", + "example": "2019-12-09T23:00:38.976Z", + "type": "string" + } + }, + { + "name": "types", + "description": "Comma-delimited list of event \\\"types\\\" to filter the results by.", + "in": "query", + "schema": { + "description": "Comma-delimited list of event \\\"types\\\" to filter the results by.", + "example": "login,team-member-join,domain-buy", + "type": "string" + } + }, + { + "name": "userId", + "description": "When retrieving events for a Team, the `userId` parameter may be specified to filter events generated by a specific member of the Team.", + "in": "query", + "schema": { + "description": "When retrieving events for a Team, the `userId` parameter may be specified to filter events generated by a specific member of the Team.", + "example": "aeIInYVk59zbFF2SxfyxxmuO", + "type": "string" + } + }, + { + "name": "withPayload", + "description": "When set to `true`, the response will include the `payload` field for each event.", + "in": "query", + "schema": { + "description": "When set to `true`, the response will include the `payload` field for each event.", + "example": "true", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/integrations/configurations": { + "get": { + "x-fern-ignore": true, + "description": "Allows to retrieve all configurations for an authenticated integration. When the `project` view is used, configurations generated for the authorization flow will be filtered out of the results.", + "operationId": "getConfigurations", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get configurations for the authenticated user or team", + "tags": ["integrations"], + "responses": { + "200": { + "description": "The list of configurations for the authenticated user", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "items": { + "properties": { + "completedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was installed successfully", + "example": 1558531915505 + }, + "createdAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was created", + "example": 1558531915505 + }, + "id": { + "type": "string", + "description": "The unique identifier of the configuration", + "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" + }, + "integrationId": { + "type": "string", + "description": "The unique identifier of the app the configuration was created for", + "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" + }, + "ownerId": { + "type": "string", + "description": "The user or team ID that owns the configuration", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "projects": { + "items": { + "type": "string" + }, + "type": "array", + "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", + "example": ["prj_xQxbutw1HpL6HLYPAzt5h75m8NjO"] + }, + "source": { + "type": "string", + "enum": ["marketplace", "deploy-button", "external"], + "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", + "example": "marketplace" + }, + "removedLogDrainsAt": { + "type": "number" + }, + "removedProjectEnvsAt": { + "type": "number" + }, + "removedTokensAt": { + "type": "number" + }, + "removedWebhooksAt": { + "type": "number" + }, + "slug": { + "type": "string", + "description": "The slug of the integration the configuration is created for.", + "example": "slack" + }, + "teamId": { + "nullable": true, + "type": "string", + "description": "When the configuration was created for a team, this will show the ID of the team.", + "example": "team_nLlpyC6RE1qxydlFKbrxDlud" + }, + "type": { + "type": "string", + "enum": ["integration-configuration"] + }, + "updatedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was updated.", + "example": 1558531915505 + }, + "userId": { + "type": "string", + "description": "The ID of the user that created the configuration.", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The resources that are allowed to be accessed by the configuration.", + "example": ["read:project", "read-write:log-drain"] + }, + "scopesQueue": { + "items": { + "properties": { + "scopes": { + "properties": { + "added": { + "items": { + "type": "string", + "enum": [ + "read:integration-configuration", + "read-write:integration-configuration", + "read:deployment", + "read-write:deployment", + "read-write:deployment-check", + "read:project", + "read-write:project", + "read-write:project-env-vars", + "read-write:global-project-env-vars", + "read:team", + "read:user", + "read-write:log-drain", + "read:domain", + "read-write:domain", + "read-write:edge-config", + "read-write:otel-endpoint", + "read:monitoring", + "read-write:integration-resource" + ] + }, + "type": "array" + }, + "upgraded": { + "items": { + "type": "string", + "enum": [ + "read:integration-configuration", + "read-write:integration-configuration", + "read:deployment", + "read-write:deployment", + "read-write:deployment-check", + "read:project", + "read-write:project", + "read-write:project-env-vars", + "read-write:global-project-env-vars", + "read:team", + "read:user", + "read-write:log-drain", + "read:domain", + "read-write:domain", + "read-write:edge-config", + "read-write:otel-endpoint", + "read:monitoring", + "read-write:integration-resource" + ] + }, + "type": "array" + } + }, + "required": ["added", "upgraded"], + "type": "object" + }, + "note": { + "type": "string" + }, + "requestedAt": { + "type": "number" + }, + "confirmedAt": { + "type": "number" + } + }, + "required": ["scopes", "note", "requestedAt"], + "type": "object" + }, + "type": "array" + }, + "disabledAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.", + "example": 1558531915505 + }, + "deletedAt": { + "nullable": true, + "type": "number", + "description": "A timestamp that tells you when the configuration was deleted.", + "example": 1558531915505 + }, + "deleteRequestedAt": { + "nullable": true, + "type": "number", + "description": "A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.", + "example": 1558531915505 + }, + "disabledReason": { + "type": "string", + "enum": [ + "disabled-by-owner", + "feature-not-available", + "disabled-by-admin", + "original-owner-left-the-team", + "account-plan-downgrade", + "original-owner-role-downgraded" + ] + }, + "northstarMigratedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was migrated as part of the Northstar migration. In the future, if we allow integration configurations to be transferred between teams, this field should be cleared upon transfer." + }, + "installationType": { + "type": "string", + "enum": ["marketplace", "external"], + "description": "Defines the installation type. - 'external' integrations are installed via the existing integrations flow - 'marketplace' integrations are natively installed: - when accepting the TOS of a partner during the store creation process - if undefined, assume 'external'" + }, + "adminRoleAssignments": { + "items": { + "type": "string" + }, + "type": "array" + }, + "billingPlan": { + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["prepayment", "subscription"] + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["installation", "resource"] + }, + "description": { + "type": "string" + }, + "paymentMethodRequired": { + "type": "boolean" + }, + "cost": { + "type": "string" + }, + "details": { + "items": { + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["label"], + "type": "object" + }, + "type": "array" + }, + "heightlightedDetails": { + "items": { + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["label"], + "type": "object" + }, + "type": "array" + }, + "quote": { + "items": { + "properties": { + "line": { + "type": "string" + }, + "amount": { + "type": "string" + } + }, + "required": ["line", "amount"], + "type": "object" + }, + "type": "array" + }, + "effectiveDate": { + "type": "string" + } + }, + "required": ["id", "type", "name", "description"], + "type": "object" + }, + "billingTotal": { + "type": "string" + }, + "periodStart": { + "type": "string" + }, + "periodEnd": { + "type": "string" + } + }, + "type": "object", + "description": "The list of configurations for the authenticated user" + }, + "type": "array", + "description": "The list of configurations for the authenticated user" + }, + { + "items": { + "properties": { + "integration": { + "properties": { + "name": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "category": { + "type": "string" + }, + "isLegacy": { + "type": "boolean" + }, + "flags": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assignedBetaLabelAt": { + "type": "number" + } + }, + "required": ["name", "icon", "category", "isLegacy"], + "type": "object" + }, + "completedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was installed successfully", + "example": 1558531915505 + }, + "createdAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was created", + "example": 1558531915505 + }, + "id": { + "type": "string", + "description": "The unique identifier of the configuration", + "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" + }, + "integrationId": { + "type": "string", + "description": "The unique identifier of the app the configuration was created for", + "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" + }, + "ownerId": { + "type": "string", + "description": "The user or team ID that owns the configuration", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "projects": { + "items": { + "type": "string" + }, + "type": "array", + "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", + "example": ["prj_xQxbutw1HpL6HLYPAzt5h75m8NjO"] + }, + "source": { + "type": "string", + "enum": ["marketplace", "deploy-button", "external"], + "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", + "example": "marketplace" + }, + "removedLogDrainsAt": { + "type": "number" + }, + "removedProjectEnvsAt": { + "type": "number" + }, + "removedTokensAt": { + "type": "number" + }, + "removedWebhooksAt": { + "type": "number" + }, + "slug": { + "type": "string", + "description": "The slug of the integration the configuration is created for.", + "example": "slack" + }, + "teamId": { + "nullable": true, + "type": "string", + "description": "When the configuration was created for a team, this will show the ID of the team.", + "example": "team_nLlpyC6RE1qxydlFKbrxDlud" + }, + "type": { + "type": "string", + "enum": ["integration-configuration"] + }, + "updatedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was updated.", + "example": 1558531915505 + }, + "userId": { + "type": "string", + "description": "The ID of the user that created the configuration.", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The resources that are allowed to be accessed by the configuration.", + "example": ["read:project", "read-write:log-drain"] + }, + "scopesQueue": { + "items": { + "properties": { + "scopes": { + "properties": { + "added": { + "items": { + "type": "string", + "enum": [ + "read:integration-configuration", + "read-write:integration-configuration", + "read:deployment", + "read-write:deployment", + "read-write:deployment-check", + "read:project", + "read-write:project", + "read-write:project-env-vars", + "read-write:global-project-env-vars", + "read:team", + "read:user", + "read-write:log-drain", + "read:domain", + "read-write:domain", + "read-write:edge-config", + "read-write:otel-endpoint", + "read:monitoring", + "read-write:integration-resource" + ] + }, + "type": "array" + }, + "upgraded": { + "items": { + "type": "string", + "enum": [ + "read:integration-configuration", + "read-write:integration-configuration", + "read:deployment", + "read-write:deployment", + "read-write:deployment-check", + "read:project", + "read-write:project", + "read-write:project-env-vars", + "read-write:global-project-env-vars", + "read:team", + "read:user", + "read-write:log-drain", + "read:domain", + "read-write:domain", + "read-write:edge-config", + "read-write:otel-endpoint", + "read:monitoring", + "read-write:integration-resource" + ] + }, + "type": "array" + } + }, + "required": ["added", "upgraded"], + "type": "object" + }, + "note": { + "type": "string" + }, + "requestedAt": { + "type": "number" + }, + "confirmedAt": { + "type": "number" + } + }, + "required": ["scopes", "note", "requestedAt"], + "type": "object" + }, + "type": "array" + }, + "disabledAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.", + "example": 1558531915505 + }, + "deletedAt": { + "nullable": true, + "type": "number", + "description": "A timestamp that tells you when the configuration was deleted.", + "example": 1558531915505 + }, + "deleteRequestedAt": { + "nullable": true, + "type": "number", + "description": "A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.", + "example": 1558531915505 + }, + "disabledReason": { + "type": "string", + "enum": [ + "disabled-by-owner", + "feature-not-available", + "disabled-by-admin", + "original-owner-left-the-team", + "account-plan-downgrade", + "original-owner-role-downgraded" + ] + }, + "northstarMigratedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was migrated as part of the Northstar migration. In the future, if we allow integration configurations to be transferred between teams, this field should be cleared upon transfer." + }, + "installationType": { + "type": "string", + "enum": ["marketplace", "external"], + "description": "Defines the installation type. - 'external' integrations are installed via the existing integrations flow - 'marketplace' integrations are natively installed: - when accepting the TOS of a partner during the store creation process - if undefined, assume 'external'" + }, + "adminRoleAssignments": { + "items": { + "type": "string" + }, + "type": "array" + }, + "billingPlan": { + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["prepayment", "subscription"] + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["installation", "resource"] + }, + "description": { + "type": "string" + }, + "paymentMethodRequired": { + "type": "boolean" + }, + "cost": { + "type": "string" + }, + "details": { + "items": { + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["label"], + "type": "object" + }, + "type": "array" + }, + "heightlightedDetails": { + "items": { + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["label"], + "type": "object" + }, + "type": "array" + }, + "quote": { + "items": { + "properties": { + "line": { + "type": "string" + }, + "amount": { + "type": "string" + } + }, + "required": ["line", "amount"], + "type": "object" + }, + "type": "array" + }, + "effectiveDate": { + "type": "string" + } + }, + "required": ["id", "type", "name", "description"], + "type": "object" + }, + "billingTotal": { + "type": "string" + }, + "periodStart": { + "type": "string" + }, + "periodEnd": { + "type": "string" + } + }, + "required": [ + "integration", + "createdAt", + "id", + "integrationId", + "ownerId", + "slug", + "type", + "updatedAt", + "userId", + "scopes" + ], + "type": "object" + }, + "type": "array" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "view", + "in": "query", + "required": true, + "schema": { + "type": "string", + "enum": ["account", "project"] + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/integrations/configuration/{id}": { + "get": { + "description": "Allows to retrieve a the configuration with the provided id in case it exists. The authenticated user or team must be the owner of the config in order to access it.", + "operationId": "getConfiguration", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Retrieve an integration configuration", + "tags": ["integrations"], + "responses": { + "200": { + "description": "The configuration with the provided id", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "properties": { + "billingPlan": { + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["prepayment", "subscription"] + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["installation", "resource"] + }, + "description": { + "type": "string" + }, + "paymentMethodRequired": { + "type": "boolean" + }, + "cost": { + "type": "string" + }, + "details": { + "items": { + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["label"], + "type": "object" + }, + "type": "array" + }, + "heightlightedDetails": { + "items": { + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["label"], + "type": "object" + }, + "type": "array" + }, + "quote": { + "items": { + "properties": { + "line": { + "type": "string" + }, + "amount": { + "type": "string" + } + }, + "required": ["line", "amount"], + "type": "object" + }, + "type": "array" + }, + "effectiveDate": { + "type": "string" + } + }, + "required": ["id", "type", "name", "description"], + "type": "object" + }, + "billingTotal": { + "type": "string" + }, + "periodStart": { + "type": "string" + }, + "periodEnd": { + "type": "string" + }, + "completedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was installed successfully", + "example": 1558531915505 + }, + "createdAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was created", + "example": 1558531915505 + }, + "id": { + "type": "string", + "description": "The unique identifier of the configuration", + "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" + }, + "integrationId": { + "type": "string", + "description": "The unique identifier of the app the configuration was created for", + "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" + }, + "ownerId": { + "type": "string", + "description": "The user or team ID that owns the configuration", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "projects": { + "items": { + "type": "string" + }, + "type": "array", + "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", + "example": ["prj_xQxbutw1HpL6HLYPAzt5h75m8NjO"] + }, + "source": { + "type": "string", + "enum": ["marketplace", "deploy-button", "external"], + "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", + "example": "marketplace" + }, + "removedLogDrainsAt": { + "type": "number" + }, + "removedProjectEnvsAt": { + "type": "number" + }, + "removedTokensAt": { + "type": "number" + }, + "removedWebhooksAt": { + "type": "number" + }, + "slug": { + "type": "string", + "description": "The slug of the integration the configuration is created for.", + "example": "slack" + }, + "teamId": { + "nullable": true, + "type": "string", + "description": "When the configuration was created for a team, this will show the ID of the team.", + "example": "team_nLlpyC6RE1qxydlFKbrxDlud" + }, + "type": { + "type": "string", + "enum": ["integration-configuration"] + }, + "updatedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was updated.", + "example": 1558531915505 + }, + "userId": { + "type": "string", + "description": "The ID of the user that created the configuration.", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The resources that are allowed to be accessed by the configuration.", + "example": ["read:project", "read-write:log-drain"] + }, + "scopesQueue": { + "items": { + "properties": { + "scopes": { + "properties": { + "added": { + "items": { + "type": "string", + "enum": [ + "read:integration-configuration", + "read-write:integration-configuration", + "read:deployment", + "read-write:deployment", + "read-write:deployment-check", + "read:project", + "read-write:project", + "read-write:project-env-vars", + "read-write:global-project-env-vars", + "read:team", + "read:user", + "read-write:log-drain", + "read:domain", + "read-write:domain", + "read-write:edge-config", + "read-write:otel-endpoint", + "read:monitoring", + "read-write:integration-resource" + ] + }, + "type": "array" + }, + "upgraded": { + "items": { + "type": "string", + "enum": [ + "read:integration-configuration", + "read-write:integration-configuration", + "read:deployment", + "read-write:deployment", + "read-write:deployment-check", + "read:project", + "read-write:project", + "read-write:project-env-vars", + "read-write:global-project-env-vars", + "read:team", + "read:user", + "read-write:log-drain", + "read:domain", + "read-write:domain", + "read-write:edge-config", + "read-write:otel-endpoint", + "read:monitoring", + "read-write:integration-resource" + ] + }, + "type": "array" + } + }, + "required": ["added", "upgraded"], + "type": "object" + }, + "note": { + "type": "string" + }, + "requestedAt": { + "type": "number" + }, + "confirmedAt": { + "type": "number" + } + }, + "required": ["scopes", "note", "requestedAt"], + "type": "object" + }, + "type": "array" + }, + "disabledAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.", + "example": 1558531915505 + }, + "deletedAt": { + "nullable": true, + "type": "number", + "description": "A timestamp that tells you when the configuration was deleted.", + "example": 1558531915505 + }, + "deleteRequestedAt": { + "nullable": true, + "type": "number", + "description": "A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.", + "example": 1558531915505 + }, + "disabledReason": { + "type": "string", + "enum": [ + "disabled-by-owner", + "feature-not-available", + "disabled-by-admin", + "original-owner-left-the-team", + "account-plan-downgrade", + "original-owner-role-downgraded" + ] + }, + "northstarMigratedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was migrated as part of the Northstar migration. In the future, if we allow integration configurations to be transferred between teams, this field should be cleared upon transfer." + }, + "installationType": { + "type": "string", + "enum": ["marketplace", "external"], + "description": "Defines the installation type. - 'external' integrations are installed via the existing integrations flow - 'marketplace' integrations are natively installed: - when accepting the TOS of a partner during the store creation process - if undefined, assume 'external'" + }, + "adminRoleAssignments": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "createdAt", + "id", + "integrationId", + "ownerId", + "slug", + "type", + "updatedAt", + "userId", + "scopes" + ], + "type": "object", + "description": "The configuration with the provided id" + }, + { + "properties": { + "projectSelection": { + "type": "string", + "enum": ["selected", "all"], + "description": "A string representing the permission for projects. Possible values are `all` or `selected`.", + "example": "all" + }, + "projects": { + "items": { + "type": "string" + }, + "type": "array", + "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", + "example": ["prj_xQxbutw1HpL6HLYPAzt5h75m8NjO"] + }, + "completedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was installed successfully", + "example": 1558531915505 + }, + "createdAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was created", + "example": 1558531915505 + }, + "id": { + "type": "string", + "description": "The unique identifier of the configuration", + "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" + }, + "integrationId": { + "type": "string", + "description": "The unique identifier of the app the configuration was created for", + "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" + }, + "ownerId": { + "type": "string", + "description": "The user or team ID that owns the configuration", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "source": { + "type": "string", + "enum": ["marketplace", "deploy-button", "external"], + "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", + "example": "marketplace" + }, + "removedLogDrainsAt": { + "type": "number" + }, + "removedProjectEnvsAt": { + "type": "number" + }, + "removedTokensAt": { + "type": "number" + }, + "removedWebhooksAt": { + "type": "number" + }, + "slug": { + "type": "string", + "description": "The slug of the integration the configuration is created for.", + "example": "slack" + }, + "teamId": { + "nullable": true, + "type": "string", + "description": "When the configuration was created for a team, this will show the ID of the team.", + "example": "team_nLlpyC6RE1qxydlFKbrxDlud" + }, + "type": { + "type": "string", + "enum": ["integration-configuration"] + }, + "updatedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was updated.", + "example": 1558531915505 + }, + "userId": { + "type": "string", + "description": "The ID of the user that created the configuration.", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The resources that are allowed to be accessed by the configuration.", + "example": ["read:project", "read-write:log-drain"] + }, + "scopesQueue": { + "items": { + "properties": { + "scopes": { + "properties": { + "added": { + "items": { + "type": "string", + "enum": [ + "read:integration-configuration", + "read-write:integration-configuration", + "read:deployment", + "read-write:deployment", + "read-write:deployment-check", + "read:project", + "read-write:project", + "read-write:project-env-vars", + "read-write:global-project-env-vars", + "read:team", + "read:user", + "read-write:log-drain", + "read:domain", + "read-write:domain", + "read-write:edge-config", + "read-write:otel-endpoint", + "read:monitoring", + "read-write:integration-resource" + ] + }, + "type": "array" + }, + "upgraded": { + "items": { + "type": "string", + "enum": [ + "read:integration-configuration", + "read-write:integration-configuration", + "read:deployment", + "read-write:deployment", + "read-write:deployment-check", + "read:project", + "read-write:project", + "read-write:project-env-vars", + "read-write:global-project-env-vars", + "read:team", + "read:user", + "read-write:log-drain", + "read:domain", + "read-write:domain", + "read-write:edge-config", + "read-write:otel-endpoint", + "read:monitoring", + "read-write:integration-resource" + ] + }, + "type": "array" + } + }, + "required": ["added", "upgraded"], + "type": "object" + }, + "note": { + "type": "string" + }, + "requestedAt": { + "type": "number" + }, + "confirmedAt": { + "type": "number" + } + }, + "required": ["scopes", "note", "requestedAt"], + "type": "object" + }, + "type": "array" + }, + "disabledAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.", + "example": 1558531915505 + }, + "deletedAt": { + "nullable": true, + "type": "number", + "description": "A timestamp that tells you when the configuration was deleted.", + "example": 1558531915505 + }, + "deleteRequestedAt": { + "nullable": true, + "type": "number", + "description": "A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.", + "example": 1558531915505 + }, + "disabledReason": { + "type": "string", + "enum": [ + "disabled-by-owner", + "feature-not-available", + "disabled-by-admin", + "original-owner-left-the-team", + "account-plan-downgrade", + "original-owner-role-downgraded" + ] + }, + "northstarMigratedAt": { + "type": "number", + "description": "A timestamp that tells you when the configuration was migrated as part of the Northstar migration. In the future, if we allow integration configurations to be transferred between teams, this field should be cleared upon transfer." + }, + "installationType": { + "type": "string", + "enum": ["marketplace", "external"], + "description": "Defines the installation type. - 'external' integrations are installed via the existing integrations flow - 'marketplace' integrations are natively installed: - when accepting the TOS of a partner during the store creation process - if undefined, assume 'external'" + }, + "adminRoleAssignments": { + "items": { + "type": "string" + }, + "type": "array" + }, + "canConfigureOpenTelemetry": { + "type": "boolean" + } + }, + "required": [ + "projectSelection", + "createdAt", + "id", + "integrationId", + "ownerId", + "slug", + "type", + "updatedAt", + "userId", + "scopes" + ], + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The configuration was not found" + } + }, + "parameters": [ + { + "name": "id", + "description": "ID of the configuration to check", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "ID of the configuration to check", + "example": "icfg_cuwj0AdCdH3BwWT4LPijCC7t" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "description": "Allows to remove the configuration with the `id` provided in the parameters. The configuration and all of its resources will be removed. This includes Webhooks, LogDrains and Project Env variables.", + "operationId": "deleteConfiguration", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete an integration configuration", + "tags": ["integrations"], + "responses": { + "204": { + "description": "The configuration was successfully removed" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The configuration was not found" + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v2/integrations/log-drains": { + "get": { + "description": "Retrieves a list of all Integration log drains that are defined for the authenticated user or team. When using an OAuth2 token, the list is limited to log drains created by the authenticated integration.", + "operationId": "getIntegrationLogDrains", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Retrieves a list of Integration log drains", + "tags": ["logDrains"], + "responses": { + "200": { + "description": "A list of log drains", + "content": { + "application/json": { + "schema": { + "items": { + "properties": { + "clientId": { + "type": "string", + "description": "The oauth2 client application id that created this log drain", + "example": "oac_xRhY4LAB7yLhUADD69EvV7ct" + }, + "configurationId": { + "type": "string", + "description": "The client configuration this log drain was created with", + "example": "icfg_cuwj0AdCdH3BwWT4LPijCC7t" + }, + "createdAt": { + "type": "number", + "description": "A timestamp that tells you when the log drain was created", + "example": 1558531915505 + }, + "id": { + "type": "string", + "description": "The unique identifier of the log drain. Always prefixed with `ld_`", + "example": "ld_nBuA7zCID8g4QZ8g" + }, + "deliveryFormat": { + "type": "string", + "enum": ["json", "ndjson", "syslog"], + "description": "The delivery log format", + "example": "json" + }, + "name": { + "type": "string", + "description": "The name of the log drain", + "example": "My first log drain" + }, + "ownerId": { + "type": "string", + "description": "The identifier of the team or user whose events will trigger the log drain", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "projectId": { + "nullable": true, + "type": "string", + "example": "AbCgVkqoxXeXCDWehVir51LHGrrcWL4mkYm14W6UBPWQeb" + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The identifier of the projects this log drain is associated with", + "example": "AbCgVkqoxXeXCDWehVir51LHGrrcWL4mkYm14W6UBPWQeb" + }, + "url": { + "type": "string", + "description": "The URL to call when logs are generated", + "example": "https://example.com/log-drain" + }, + "sources": { + "items": { + "type": "string", + "enum": ["build", "edge", "lambda", "static", "external", "firewall"], + "description": "The sources from which logs are currently being delivered to this log drain.", + "example": ["build", "edge"] + }, + "type": "array", + "description": "The sources from which logs are currently being delivered to this log drain.", + "example": ["build", "edge"] + }, + "createdFrom": { + "type": "string", + "enum": ["self-served", "integration"], + "description": "Whether the log drain was created by an integration or by a user", + "example": "integration" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "description": "The headers to send with the request", + "example": "{\"Authorization\": \"Bearer 123\"}" + }, + "environments": { + "items": { + "type": "string", + "enum": ["production", "preview"], + "description": "The environment of log drain", + "example": ["production"] + }, + "type": "array", + "description": "The environment of log drain", + "example": ["production"] + }, + "branch": { + "type": "string", + "description": "The branch regexp of log drain", + "example": "feature/*" + }, + "samplingRate": { + "type": "number", + "description": "The sampling rate of log drain", + "example": 0.5 + } + }, + "required": ["createdAt", "id", "name", "ownerId", "url", "environments"], + "type": "object" + }, + "type": "array" + } + } + } + }, + "400": { + "description": "" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "post": { + "description": "Creates an Integration log drain. This endpoint must be called with an OAuth2 client (integration), since log drains are tied to integrations. If it is called with a different token type it will produce a 400 error.", + "operationId": "createLogDrain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Creates a new Integration Log Drain", + "tags": ["logDrains"], + "responses": { + "200": { + "description": "The log drain was successfully created", + "content": { + "application/json": { + "schema": { + "properties": { + "clientId": { + "type": "string", + "description": "The oauth2 client application id that created this log drain", + "example": "oac_xRhY4LAB7yLhUADD69EvV7ct" + }, + "configurationId": { + "type": "string", + "description": "The client configuration this log drain was created with", + "example": "icfg_cuwj0AdCdH3BwWT4LPijCC7t" + }, + "createdAt": { + "type": "number", + "description": "A timestamp that tells you when the log drain was created", + "example": 1558531915505 + }, + "id": { + "type": "string", + "description": "The unique identifier of the log drain. Always prefixed with `ld_`", + "example": "ld_nBuA7zCID8g4QZ8g" + }, + "deliveryFormat": { + "type": "string", + "enum": ["json", "ndjson", "syslog"], + "description": "The delivery log format", + "example": "json" + }, + "name": { + "type": "string", + "description": "The name of the log drain", + "example": "My first log drain" + }, + "ownerId": { + "type": "string", + "description": "The identifier of the team or user whose events will trigger the log drain", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "projectId": { + "nullable": true, + "type": "string", + "example": "AbCgVkqoxXeXCDWehVir51LHGrrcWL4mkYm14W6UBPWQeb" + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The identifier of the projects this log drain is associated with", + "example": "AbCgVkqoxXeXCDWehVir51LHGrrcWL4mkYm14W6UBPWQeb" + }, + "url": { + "type": "string", + "description": "The URL to call when logs are generated", + "example": "https://example.com/log-drain" + }, + "sources": { + "items": { + "type": "string", + "enum": ["build", "edge", "lambda", "static", "external", "firewall"], + "description": "The sources from which logs are currently being delivered to this log drain.", + "example": ["build", "edge"] + }, + "type": "array", + "description": "The sources from which logs are currently being delivered to this log drain.", + "example": ["build", "edge"] + }, + "createdFrom": { + "type": "string", + "enum": ["self-served", "integration"], + "description": "Whether the log drain was created by an integration or by a user", + "example": "integration" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "description": "The headers to send with the request", + "example": "{\"Authorization\": \"Bearer 123\"}" + }, + "environments": { + "items": { + "type": "string", + "enum": ["production", "preview"], + "description": "The environment of log drain", + "example": ["production"] + }, + "type": "array", + "description": "The environment of log drain", + "example": ["production"] + }, + "branch": { + "type": "string", + "description": "The branch regexp of log drain", + "example": "feature/*" + }, + "samplingRate": { + "type": "number", + "description": "The sampling rate of log drain", + "example": 0.5 + } + }, + "required": ["createdAt", "id", "name", "ownerId", "url", "environments"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nThe provided token is not from an OAuth2 Client" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "The name of the log drain", + "example": "My first log drain", + "maxLength": 100, + "pattern": "^[A-z0-9_ -]+$", + "type": "string" + }, + "projectIds": { + "minItems": 1, + "maxItems": 50, + "type": "array", + "items": { + "pattern": "^[a-zA-z0-9_]+$", + "type": "string" + } + }, + "secret": { + "description": "A secret to sign log drain notification headers so a consumer can verify their authenticity", + "example": "a1Xsfd325fXcs", + "maxLength": 100, + "pattern": "^[A-z0-9_ -]+$", + "type": "string" + }, + "deliveryFormat": { + "description": "The delivery log format", + "example": "json", + "enum": ["json", "ndjson", "syslog"] + }, + "url": { + "description": "The url where you will receive logs. The protocol must be `https://` or `http://` when type is `json` and `ndjson`, and `syslog+tls:` or `syslog:` when the type is `syslog`.", + "example": "https://example.com/log-drain", + "format": "uri", + "pattern": "^(https?|syslog\\\\+tls|syslog)://", + "type": "string" + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": ["static", "lambda", "build", "edge", "external", "firewall"] + }, + "minItems": 1 + }, + "headers": { + "description": "Headers to be sent together with the request", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "environments": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": ["preview", "production"] + }, + "minItems": 1 + } + }, + "required": ["name", "url"], + "type": "object" + } + } + } + } + } + }, + "/v1/integrations/log-drains/{id}": { + "delete": { + "description": "Deletes the Integration log drain with the provided `id`. When using an OAuth2 Token, the log drain can be deleted only if the integration owns it.", + "operationId": "deleteIntegrationLogDrain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Deletes the Integration log drain with the provided `id`", + "tags": ["logDrains"], + "responses": { + "204": { + "description": "The log drain was successfully deleted" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The log drain was not found" + } + }, + "parameters": [ + { + "name": "id", + "description": "ID of the log drain to be deleted", + "in": "path", + "required": true, + "schema": { + "description": "ID of the log drain to be deleted", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/integrations/git-namespaces": { + "get": { + "description": "Lists git namespaces for a supported provider. Supported providers are `github`, `gitlab` and `bitbucket`. If the provider is not provided, it will try to obtain it from the user that authenticated the request.", + "operationId": "gitNamespaces", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List git namespaces by provider", + "tags": ["integrations"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "items": { + "properties": { + "provider": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "ownerType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "isAccessRestricted": { + "type": "boolean" + }, + "installationId": { + "type": "number" + }, + "requireReauth": { + "type": "boolean" + } + }, + "required": ["provider", "slug", "id", "ownerType"], + "type": "object" + }, + "type": "array" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "host", + "description": "The custom Git host if using a custom Git provider, like GitHub Enterprise Server", + "in": "query", + "schema": { + "description": "The custom Git host if using a custom Git provider, like GitHub Enterprise Server", + "type": "string", + "example": "ghes-test.now.systems" + } + }, + { + "name": "provider", + "in": "query", + "schema": { + "enum": ["github", "github-custom-host", "gitlab", "bitbucket"] + } + } + ] + } + }, + "/v1/integrations/search-repo": { + "get": { + "description": "Lists git repositories linked to a namespace `id` for a supported provider. A specific namespace `id` can be obtained via the `git-namespaces` endpoint. Supported providers are `github`, `gitlab` and `bitbucket`. If the provider or namespace is not provided, it will try to obtain it from the user that authenticated the request.", + "operationId": "searchRepo", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List git repositories linked to namespace by provider", + "tags": ["integrations"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object" + }, + { + "properties": { + "gitAccount": { + "properties": { + "provider": { + "type": "string", + "enum": ["github", "github-custom-host", "gitlab", "bitbucket"] + }, + "namespaceId": { + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + } + }, + "required": ["provider", "namespaceId"], + "type": "object" + }, + "repos": { + "items": { + "properties": { + "id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "provider": { + "type": "string", + "enum": ["github", "github-custom-host", "gitlab", "bitbucket"] + }, + "url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "owner": { + "properties": { + "id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "name": { + "type": "string" + } + }, + "required": ["id", "name"], + "type": "object" + }, + "ownerType": { + "type": "string", + "enum": ["user", "team"] + }, + "private": { + "type": "boolean" + }, + "defaultBranch": { + "type": "string" + }, + "updatedAt": { + "type": "number" + } + }, + "required": [ + "id", + "provider", + "url", + "name", + "slug", + "namespace", + "owner", + "ownerType", + "private", + "defaultBranch", + "updatedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": ["gitAccount", "repos"], + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "namespaceId", + "in": "query", + "schema": { + "type": ["string", "number"], + "nullable": true + } + }, + { + "name": "provider", + "in": "query", + "schema": { + "enum": ["github", "github-custom-host", "gitlab", "bitbucket"] + } + }, + { + "name": "installationId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "host", + "description": "The custom Git host if using a custom Git provider, like GitHub Enterprise Server", + "in": "query", + "schema": { + "description": "The custom Git host if using a custom Git provider, like GitHub Enterprise Server", + "type": "string", + "example": "ghes-test.now.systems" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/log-drains/{id}": { + "get": { + "description": "Retrieves a Configurable Log Drain. This endpoint must be called with a team AccessToken (integration OAuth2 clients are not allowed). Only log drains owned by the authenticated team can be accessed.", + "operationId": "getConfigurableLogDrain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Retrieves a Configurable Log Drain", + "tags": ["logDrains"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + }, + "deliveryFormat": { + "type": "string", + "enum": ["json", "ndjson", "syslog"] + }, + "url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "configurationId": { + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "createdAt": { + "type": "number" + }, + "deletedAt": { + "nullable": true, + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "sources": { + "items": { + "type": "string", + "enum": ["build", "edge", "lambda", "static", "external", "firewall"] + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "environments": { + "items": { + "type": "string", + "enum": ["production", "preview"] + }, + "type": "array" + }, + "status": { + "type": "string", + "enum": ["enabled", "disabled", "errored"] + }, + "disabledAt": { + "type": "number" + }, + "disabledReason": { + "type": "string", + "enum": [ + "disabled-by-owner", + "feature-not-available", + "account-plan-downgrade", + "disabled-by-admin" + ] + }, + "disabledBy": { + "type": "string" + }, + "firstErrorTimestamp": { + "type": "number" + }, + "samplingRate": { + "type": "number" + }, + "compression": { + "type": "string", + "enum": ["gzip", "zstd", "none"] + }, + "secret": { + "type": "string" + }, + "createdFrom": { + "type": "string", + "enum": ["self-served"] + } + }, + "required": [ + "id", + "deliveryFormat", + "url", + "name", + "ownerId", + "createdAt", + "deletedAt", + "updatedAt", + "environments", + "secret" + ], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "description": "Deletes a Configurable Log Drain. This endpoint must be called with a team AccessToken (integration OAuth2 clients are not allowed). Only log drains owned by the authenticated team can be deleted.", + "operationId": "deleteConfigurableLogDrain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Deletes a Configurable Log Drain", + "tags": ["logDrains"], + "responses": { + "204": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/log-drains": { + "get": { + "description": "Retrieves a list of all the Log Drains owned by the account. This endpoint must be called with an account AccessToken (integration OAuth2 clients are not allowed). Only log drains owned by the authenticated account can be accessed.", + "operationId": "getAllLogDrains", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Retrieves a list of all the Log Drains", + "tags": ["logDrains"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "deliveryFormat": { + "type": "string", + "enum": ["json", "ndjson", "syslog"] + }, + "url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "configurationId": { + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "createdAt": { + "type": "number" + }, + "deletedAt": { + "nullable": true, + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "sources": { + "items": { + "type": "string", + "enum": ["build", "edge", "lambda", "static", "external", "firewall"] + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "environments": { + "items": { + "type": "string", + "enum": ["production", "preview"] + }, + "type": "array" + }, + "status": { + "type": "string", + "enum": ["enabled", "disabled", "errored"] + }, + "disabledAt": { + "type": "number" + }, + "disabledReason": { + "type": "string", + "enum": [ + "disabled-by-owner", + "feature-not-available", + "account-plan-downgrade", + "disabled-by-admin" + ] + }, + "disabledBy": { + "type": "string" + }, + "firstErrorTimestamp": { + "type": "number" + }, + "samplingRate": { + "type": "number" + }, + "compression": { + "type": "string", + "enum": ["gzip", "zstd", "none"] + }, + "secret": { + "type": "string" + }, + "createdFrom": { + "type": "string", + "enum": ["self-served"] + } + }, + "required": [ + "id", + "deliveryFormat", + "url", + "name", + "ownerId", + "createdAt", + "deletedAt", + "updatedAt", + "environments", + "secret" + ], + "type": "object" + }, + "type": "array" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "projectId", + "in": "query", + "schema": { + "pattern": "^[a-zA-z0-9_]+$", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "post": { + "description": "Creates a configurable log drain. This endpoint must be called with a team AccessToken (integration OAuth2 clients are not allowed)", + "operationId": "createConfigurableLogDrain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Creates a Configurable Log Drain", + "tags": ["logDrains"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "secret": { + "type": "string", + "description": "The secret to validate the log-drain payload" + }, + "id": { + "type": "string" + }, + "deliveryFormat": { + "type": "string", + "enum": ["json", "ndjson", "syslog"] + }, + "url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "configurationId": { + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "ownerId": { + "type": "string" + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "createdAt": { + "type": "number" + }, + "deletedAt": { + "nullable": true, + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "sources": { + "items": { + "type": "string", + "enum": ["build", "edge", "lambda", "static", "external", "firewall"] + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "environments": { + "items": { + "type": "string", + "enum": ["production", "preview"] + }, + "type": "array" + }, + "status": { + "type": "string", + "enum": ["enabled", "disabled", "errored"] + }, + "disabledAt": { + "type": "number" + }, + "disabledReason": { + "type": "string", + "enum": [ + "disabled-by-owner", + "feature-not-available", + "account-plan-downgrade", + "disabled-by-admin" + ] + }, + "disabledBy": { + "type": "string" + }, + "firstErrorTimestamp": { + "type": "number" + }, + "samplingRate": { + "type": "number" + }, + "compression": { + "type": "string", + "enum": ["gzip", "zstd", "none"] + }, + "createdFrom": { + "type": "string", + "enum": ["self-served"] + } + }, + "required": [ + "id", + "deliveryFormat", + "url", + "name", + "ownerId", + "createdAt", + "deletedAt", + "updatedAt", + "environments" + ], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["deliveryFormat", "url", "sources"], + "properties": { + "deliveryFormat": { + "description": "The delivery log format", + "example": "json", + "enum": ["json", "ndjson"] + }, + "url": { + "description": "The log drain url", + "format": "uri", + "pattern": "^(http|https)?://", + "type": "string" + }, + "headers": { + "description": "Headers to be sent together with the request", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "projectIds": { + "minItems": 1, + "maxItems": 50, + "type": "array", + "items": { + "pattern": "^[a-zA-z0-9_]+$", + "type": "string" + } + }, + "sources": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": ["static", "lambda", "build", "edge", "external", "firewall"] + }, + "minItems": 1 + }, + "environments": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "enum": ["preview", "production"] + }, + "minItems": 1 + }, + "secret": { + "description": "Custom secret of log drain", + "type": "string" + }, + "samplingRate": { + "type": "number", + "description": "The sampling rate for this log drain. It should be a percentage rate between 0 and 100. With max 2 decimal points", + "multiplesOf": 0.01, + "minimum": 0.01, + "maximum": 1 + }, + "name": { + "type": "string", + "description": "The custom name of this log drain." + } + } + } + } + } + } + } + }, + "/v1/projects/{idOrName}/members": { + "get": { + "description": "Lists all members of a project.", + "operationId": "getProjectMembers", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List project members", + "tags": ["projectMembers"], + "responses": { + "200": { + "description": "Paginated list of members for the project.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object" + }, + { + "properties": { + "members": { + "items": { + "properties": { + "avatar": { + "type": "string", + "description": "ID of the file for the Avatar of this member.", + "example": "123a6c5209bc3778245d011443644c8d27dc2c50" + }, + "email": { + "type": "string", + "description": "The email of this member.", + "example": "jane.doe@example.com" + }, + "role": { + "type": "string", + "enum": ["ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER"], + "description": "Role of this user in the project.", + "example": "ADMIN" + }, + "computedProjectRole": { + "type": "string", + "enum": ["ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER"], + "description": "Role of this user in the project.", + "example": "ADMIN" + }, + "uid": { + "type": "string", + "description": "The ID of this user.", + "example": "zTuNVUXEAvvnNN3IaqinkyMw" + }, + "username": { + "type": "string", + "description": "The unique username of this user.", + "example": "jane-doe" + }, + "name": { + "type": "string", + "description": "The name of this user.", + "example": "Jane Doe" + }, + "createdAt": { + "type": "number", + "description": "Timestamp in milliseconds when this member was added.", + "example": 1588720733602 + }, + "teamRole": { + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "BILLING", "VIEWER", "CONTRIBUTOR"], + "description": "The role of this user in the team.", + "example": "CONTRIBUTOR" + } + }, + "required": [ + "email", + "role", + "computedProjectRole", + "uid", + "username", + "createdAt", + "teamRole" + ], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "properties": { + "hasNext": { + "type": "boolean" + }, + "count": { + "type": "number", + "description": "Amount of items in the current page.", + "example": 20 + }, + "next": { + "nullable": true, + "type": "number", + "description": "Timestamp that must be used to request the next page.", + "example": 1540095775951 + }, + "prev": { + "nullable": true, + "type": "number", + "description": "Timestamp that must be used to request the previous page.", + "example": 1540095775951 + } + }, + "required": ["hasNext", "count", "next", "prev"], + "type": "object" + } + }, + "required": ["members", "pagination"], + "type": "object", + "description": "Paginated list of members for the project." + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The ID or name of the Project.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The ID or name of the Project.", + "example": "prj_pavWOn1iLObbXLRiwVvzmPrTWyTf" + } + }, + { + "name": "limit", + "description": "Limit how many project members should be returned", + "in": "query", + "required": false, + "schema": { + "description": "Limit how many project members should be returned", + "example": 20, + "type": "integer", + "minimum": 1, + "maximum": 100 + } + }, + { + "name": "since", + "description": "Timestamp in milliseconds to only include members added since then.", + "in": "query", + "required": false, + "schema": { + "description": "Timestamp in milliseconds to only include members added since then.", + "example": 1540095775951, + "type": "integer" + } + }, + { + "name": "until", + "description": "Timestamp in milliseconds to only include members added until then.", + "in": "query", + "required": false, + "schema": { + "description": "Timestamp in milliseconds to only include members added until then.", + "example": 1540095775951, + "type": "integer" + } + }, + { + "name": "search", + "description": "Search project members by their name, username, and email.", + "in": "query", + "required": false, + "schema": { + "description": "Search project members by their name, username, and email.", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "post": { + "description": "Adds a new member to the project.", + "operationId": "addProjectMember", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Adds a new member to a project.", + "tags": ["projectMembers"], + "responses": { + "200": { + "description": "Responds with the project ID on success.", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + } + }, + "required": ["id"], + "type": "object", + "description": "Responds with the project ID on success." + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "500": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The ID or name of the Project.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The ID or name of the Project.", + "example": "prj_pavWOn1iLObbXLRiwVvzmPrTWyTf" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["role"], + "oneOf": [ + { + "required": ["uid"] + }, + { + "required": ["username"] + }, + { + "required": ["email"] + } + ], + "properties": { + "uid": { + "type": "string", + "maxLength": 256, + "example": "ndlgr43fadlPyCtREAqxxdyFK", + "description": "The ID of the team member that should be added to this project." + }, + "username": { + "type": "string", + "maxLength": 256, + "example": "example", + "description": "The username of the team member that should be added to this project." + }, + "email": { + "type": "string", + "format": "email", + "example": "entity@example.com", + "description": "The email of the team member that should be added to this project." + }, + "role": { + "type": "string", + "enum": ["ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER"], + "example": "ADMIN", + "description": "The project role of the member that will be added." + } + } + } + } + } + } + } + }, + "/v1/projects/{idOrName}/members/{uid}": { + "delete": { + "description": "Remove a member from a specific project", + "operationId": "removeProjectMember", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Remove a Project Member", + "tags": ["projectMembers"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + } + }, + "required": ["id"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The ID or name of the Project.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The ID or name of the Project.", + "example": "prj_pavWOn1iLObbXLRiwVvzmPrTWyTf" + } + }, + { + "name": "uid", + "description": "The user ID of the member.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The user ID of the member.", + "example": "ndlgr43fadlPyCtREAqxxdyFK" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v9/projects": { + "get": { + "description": "Allows to retrieve the list of projects of the authenticated user or team. The list will be paginated and the provided query parameters allow filtering the returned projects.", + "operationId": "getProjects", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Retrieve a list of projects", + "tags": ["projects"], + "responses": { + "200": { + "description": "The paginated list of projects", + "content": { + "application/json": { + "schema": { + "properties": { + "projects": { + "items": { + "properties": { + "accountId": { + "type": "string" + }, + "analytics": { + "properties": { + "id": { + "type": "string" + }, + "canceledAt": { + "nullable": true, + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "paidAt": { + "type": "number" + }, + "sampleRatePercent": { + "nullable": true, + "type": "number" + }, + "spendLimitInDollars": { + "nullable": true, + "type": "number" + } + }, + "required": ["id", "disabledAt", "enabledAt"], + "type": "object" + }, + "speedInsights": { + "properties": { + "id": { + "type": "string" + }, + "enabledAt": { + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + }, + "paidAt": { + "type": "number" + } + }, + "required": ["id"], + "type": "object" + }, + "autoExposeSystemEnvs": { + "type": "boolean" + }, + "autoAssignCustomDomains": { + "type": "boolean" + }, + "autoAssignCustomDomainsUpdatedBy": { + "type": "string" + }, + "buildCommand": { + "nullable": true, + "type": "string" + }, + "commandForIgnoringBuildStep": { + "nullable": true, + "type": "string" + }, + "connectConfigurationId": { + "nullable": true, + "type": "string" + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "customerSupportCodeVisibility": { + "type": "boolean" + }, + "crons": { + "properties": { + "enabledAt": { + "type": "number", + "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." + }, + "disabledAt": { + "nullable": true, + "type": "number", + "description": "The time the feature was disabled for this project." + }, + "updatedAt": { + "type": "number" + }, + "deploymentId": { + "nullable": true, + "type": "string", + "description": "The ID of the Deployment from which the definitions originated." + }, + "definitions": { + "items": { + "properties": { + "host": { + "type": "string", + "description": "The hostname that should be used.", + "example": "vercel.com" + }, + "path": { + "type": "string", + "description": "The path that should be called for the cronjob.", + "example": "/api/crons/sync-something?hello=world" + }, + "schedule": { + "type": "string", + "description": "The cron expression.", + "example": "0 0 * * *" + } + }, + "required": ["host", "path", "schedule"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["enabledAt", "disabledAt", "updatedAt", "deploymentId", "definitions"], + "type": "object" + }, + "dataCache": { + "properties": { + "userDisabled": { + "type": "boolean" + }, + "storageSizeBytes": { + "nullable": true, + "type": "number" + }, + "unlimited": { + "type": "boolean" + } + }, + "required": ["userDisabled"], + "type": "object" + }, + "deploymentExpiration": { + "nullable": true, + "properties": { + "expirationDays": { + "type": "number" + }, + "expirationDaysProduction": { + "type": "number" + }, + "expirationDaysCanceled": { + "type": "number" + }, + "expirationDaysErrored": { + "type": "number" + }, + "deploymentsToKeep": { + "type": "number" + } + }, + "type": "object" + }, + "devCommand": { + "nullable": true, + "type": "string" + }, + "directoryListing": { + "type": "boolean" + }, + "installCommand": { + "nullable": true, + "type": "string" + }, + "env": { + "items": { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["type", "key", "value"], + "type": "object" + }, + "type": "array" + }, + "customEnvironments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["production", "preview", "development"] + }, + "description": { + "type": "string" + }, + "branchMatcher": { + "properties": { + "type": { + "type": "string", + "enum": ["endsWith", "startsWith", "equals"] + }, + "pattern": { + "type": "string" + } + }, + "required": ["type", "pattern"], + "type": "object" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "currentDeploymentAliases": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "name", "slug", "type", "createdAt", "updatedAt"], + "type": "object" + }, + "type": "array" + }, + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "gitForkProtection": { + "type": "boolean" + }, + "gitLFS": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "latestDeployments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "array" + }, + "link": { + "oneOf": [ + { + "properties": { + "org": { + "type": "string" + }, + "repoOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." + }, + "repo": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["github"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "projectId": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "projectNameWithNamespace": { + "type": "string" + }, + "projectNamespace": { + "type": "string" + }, + "projectOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." + }, + "projectUrl": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "uuid": { + "type": "string" + }, + "workspaceUuid": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + } + ] + }, + "name": { + "type": "string" + }, + "nodeVersion": { + "type": "string", + "enum": ["20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x"] + }, + "optionsAllowlist": { + "nullable": true, + "properties": { + "paths": { + "items": { + "properties": { + "value": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["paths"], + "type": "object" + }, + "outputDirectory": { + "nullable": true, + "type": "string" + }, + "passiveConnectConfigurationId": { + "nullable": true, + "type": "string" + }, + "passwordProtection": { + "nullable": true, + "type": "object" + }, + "productionDeploymentsFastLane": { + "type": "boolean" + }, + "publicSource": { + "nullable": true, + "type": "boolean" + }, + "resourceConfig": { + "properties": { + "functionDefaultTimeout": { + "type": "number" + }, + "functionDefaultMemoryType": { + "type": "string", + "enum": ["standard_legacy", "standard", "performance"] + } + }, + "type": "object" + }, + "rootDirectory": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionRegion": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionZeroConfigFailover": { + "type": "boolean" + }, + "skewProtectionBoundaryAt": { + "type": "number" + }, + "skewProtectionMaxAge": { + "type": "number" + }, + "skipGitConnectDuringLink": { + "type": "boolean" + }, + "sourceFilesOutsideRootDirectory": { + "type": "boolean" + }, + "enableAffectedProjectsDeployments": { + "type": "boolean" + }, + "ssoProtection": { + "nullable": true, + "properties": { + "deploymentType": { + "type": "string", + "enum": ["preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + }, + "targets": { + "additionalProperties": { + "nullable": true, + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "object" + }, + "transferCompletedAt": { + "type": "number" + }, + "transferStartedAt": { + "type": "number" + }, + "transferToAccountId": { + "type": "string" + }, + "transferredFromAccountId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "live": { + "type": "boolean" + }, + "enablePreviewFeedback": { + "nullable": true, + "type": "boolean" + }, + "enableProductionFeedback": { + "nullable": true, + "type": "boolean" + }, + "permissions": { + "properties": { + "accessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "auditLog": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingAddress": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInformation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceEmailRecipient": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceLanguage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPurchaseOrder": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingTaxId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blob": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "budget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifact": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifactUsageEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "codeChecks": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "concurrentBuilds": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connect": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAcceptDelegation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAuthCodes": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCertificate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainRecord": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ownEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sensitiveEnvironmentVariablePolicy": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "fileUpload": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "gitRepository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ipBlocking": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationAccount": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationProjects": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationVercelConfigurationOverride": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationRole": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResource": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceSecrets": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInstallationMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceBillingData": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "jobGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logDrain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "Monitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringQuery": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringChart": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDeploymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainExpire": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainMoved": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainRenewal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainUnverified": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "NotificationMonitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationPaymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationUsageAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationCustomerBudget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationStatementOfReasons": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Connection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "openTelemetryEndpoint": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "paymentMethod": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "permissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgres": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "previewDeploymentSuffix": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "proTrialOnboarding": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "space": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "spaceRun": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtectionInvoiceItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "rateLimit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redis": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "repository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "remoteCaching": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "samlConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "secret": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redisStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blobStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgresStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceReplCommand": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "storeTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheBillingSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "team": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamAccessRequest": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamFellowMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamGitExclusivity": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInvite": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInviteCode": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamJoin": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembershipDisconnectSAML": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "token": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usageCycle": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "user": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "userConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "vpcPeeringConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalyticsPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAuthn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigSchema": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigToken": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook-event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "endpointVerification": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Application": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProject": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "productionAliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfigurationLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheNamespace": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deployment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheck": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckReRunFromProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentProductionGit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPrivate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPromote": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentRollback": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "environments": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logs": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logsPreset": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "optionsAllowlist": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "job": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "project": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAccessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentHook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsUnownedByIntegration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectFlags": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectIntegrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMonitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectPermissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferOut": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentExpiration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTier": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "seawallConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "skewProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "trustedIps": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sonar": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + } + }, + "type": "object" + }, + "lastRollbackTarget": { + "nullable": true, + "type": "object" + }, + "lastAliasRequest": { + "nullable": true, + "properties": { + "fromDeploymentId": { + "type": "string" + }, + "toDeploymentId": { + "type": "string" + }, + "jobStatus": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "pending", "in-progress"] + }, + "requestedAt": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["promote", "rollback"] + } + }, + "required": ["fromDeploymentId", "toDeploymentId", "jobStatus", "requestedAt", "type"], + "type": "object" + }, + "hasFloatingAliases": { + "type": "boolean" + }, + "protectionBypass": { + "additionalProperties": { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["automation-bypass"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object" + }, + "type": "object" + }, + "hasActiveBranches": { + "type": "boolean" + }, + "trustedIps": { + "nullable": true, + "oneOf": [ + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + }, + "addresses": { + "items": { + "properties": { + "value": { + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + }, + "protectionMode": { + "type": "string", + "enum": ["additional", "exclusive"] + } + }, + "required": ["deploymentType", "addresses", "protectionMode"], + "type": "object" + }, + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + } + ] + }, + "gitComments": { + "properties": { + "onPullRequest": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on PRs" + }, + "onCommit": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on commits" + } + }, + "required": ["onPullRequest", "onCommit"], + "type": "object" + }, + "paused": { + "type": "boolean" + }, + "concurrencyBucketName": { + "type": "string" + }, + "webAnalytics": { + "properties": { + "id": { + "type": "string" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + } + }, + "required": ["id"], + "type": "object" + }, + "security": { + "properties": { + "attackModeEnabled": { + "type": "boolean" + }, + "attackModeUpdatedAt": { + "type": "number" + }, + "firewallEnabled": { + "type": "boolean" + }, + "firewallUpdatedAt": { + "type": "number" + }, + "attackModeActiveUntil": { + "nullable": true, + "type": "number" + }, + "firewallConfigVersion": { + "type": "number" + }, + "firewallRoutes": { + "items": { + "properties": { + "src": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + }, + "has": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "missing": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "dest": { + "type": "string" + }, + "status": { + "type": "number" + }, + "handle": { + "type": "string", + "enum": ["init", "finalize"] + }, + "mitigate": { + "properties": { + "action": { + "type": "string", + "enum": ["deny", "challenge", "log", "bypass", "rate_limit", "redirect"] + }, + "rule_id": { + "type": "string" + }, + "ttl": { + "type": "number" + }, + "erl": { + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["algo", "window", "limit", "keys"], + "type": "object" + } + }, + "required": ["action", "rule_id"], + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "firewallSeawallEnabled": { + "type": "boolean" + }, + "ja3Enabled": { + "type": "boolean" + }, + "ja4Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "oidcTokenConfig": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"], + "type": "object" + }, + "tier": { + "type": "string", + "enum": ["standard", "advanced", "critical"] + } + }, + "required": ["accountId", "directoryListing", "id", "name", "nodeVersion"], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["projects", "pagination"], + "type": "object", + "description": "The paginated list of projects" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "from", + "description": "Query only projects updated after the given timestamp", + "in": "query", + "schema": { + "description": "Query only projects updated after the given timestamp", + "type": "string" + } + }, + { + "name": "gitForkProtection", + "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed", + "in": "query", + "schema": { + "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed", + "type": "string", + "enum": ["1", "0"], + "example": "1" + } + }, + { + "name": "limit", + "description": "Limit the number of projects returned", + "in": "query", + "schema": { + "description": "Limit the number of projects returned", + "type": "string" + } + }, + { + "name": "search", + "description": "Search projects by the name field", + "in": "query", + "schema": { + "description": "Search projects by the name field", + "type": "string" + } + }, + { + "name": "repo", + "description": "Filter results by repo. Also used for project count", + "in": "query", + "schema": { + "description": "Filter results by repo. Also used for project count", + "type": "string" + } + }, + { + "name": "repoId", + "description": "Filter results by Repository ID.", + "in": "query", + "schema": { + "description": "Filter results by Repository ID.", + "type": "string" + } + }, + { + "name": "repoUrl", + "description": "Filter results by Repository URL.", + "in": "query", + "schema": { + "description": "Filter results by Repository URL.", + "type": "string", + "example": "https://github.com/vercel/next.js" + } + }, + { + "name": "excludeRepos", + "description": "Filter results by excluding those projects that belong to a repo", + "in": "query", + "schema": { + "description": "Filter results by excluding those projects that belong to a repo", + "type": "string" + } + }, + { + "name": "edgeConfigId", + "description": "Filter results by connected Edge Config ID", + "in": "query", + "schema": { + "description": "Filter results by connected Edge Config ID", + "type": "string" + } + }, + { + "name": "edgeConfigTokenId", + "description": "Filter results by connected Edge Config Token ID", + "in": "query", + "schema": { + "description": "Filter results by connected Edge Config Token ID", + "type": "string" + } + }, + { + "name": "deprecated", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v10/projects": { + "post": { + "description": "Allows to create a new project with the provided configuration. It only requires the project `name` but more configuration can be provided to override the defaults.", + "operationId": "createProject", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Create a new project", + "tags": ["projects"], + "responses": { + "200": { + "description": "The project was successfuly created", + "content": { + "application/json": { + "schema": { + "properties": { + "accountId": { + "type": "string" + }, + "analytics": { + "properties": { + "id": { + "type": "string" + }, + "canceledAt": { + "nullable": true, + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "paidAt": { + "type": "number" + }, + "sampleRatePercent": { + "nullable": true, + "type": "number" + }, + "spendLimitInDollars": { + "nullable": true, + "type": "number" + } + }, + "required": ["id", "disabledAt", "enabledAt"], + "type": "object" + }, + "speedInsights": { + "properties": { + "id": { + "type": "string" + }, + "enabledAt": { + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + }, + "paidAt": { + "type": "number" + } + }, + "required": ["id"], + "type": "object" + }, + "autoExposeSystemEnvs": { + "type": "boolean" + }, + "autoAssignCustomDomains": { + "type": "boolean" + }, + "autoAssignCustomDomainsUpdatedBy": { + "type": "string" + }, + "buildCommand": { + "nullable": true, + "type": "string" + }, + "commandForIgnoringBuildStep": { + "nullable": true, + "type": "string" + }, + "connectConfigurationId": { + "nullable": true, + "type": "string" + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "customerSupportCodeVisibility": { + "type": "boolean" + }, + "crons": { + "properties": { + "enabledAt": { + "type": "number", + "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." + }, + "disabledAt": { + "nullable": true, + "type": "number", + "description": "The time the feature was disabled for this project." + }, + "updatedAt": { + "type": "number" + }, + "deploymentId": { + "nullable": true, + "type": "string", + "description": "The ID of the Deployment from which the definitions originated." + }, + "definitions": { + "items": { + "properties": { + "host": { + "type": "string", + "description": "The hostname that should be used.", + "example": "vercel.com" + }, + "path": { + "type": "string", + "description": "The path that should be called for the cronjob.", + "example": "/api/crons/sync-something?hello=world" + }, + "schedule": { + "type": "string", + "description": "The cron expression.", + "example": "0 0 * * *" + } + }, + "required": ["host", "path", "schedule"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["enabledAt", "disabledAt", "updatedAt", "deploymentId", "definitions"], + "type": "object" + }, + "dataCache": { + "properties": { + "userDisabled": { + "type": "boolean" + }, + "storageSizeBytes": { + "nullable": true, + "type": "number" + }, + "unlimited": { + "type": "boolean" + } + }, + "required": ["userDisabled"], + "type": "object" + }, + "deploymentExpiration": { + "nullable": true, + "properties": { + "expirationDays": { + "type": "number" + }, + "expirationDaysProduction": { + "type": "number" + }, + "expirationDaysCanceled": { + "type": "number" + }, + "expirationDaysErrored": { + "type": "number" + }, + "deploymentsToKeep": { + "type": "number" + } + }, + "type": "object" + }, + "devCommand": { + "nullable": true, + "type": "string" + }, + "directoryListing": { + "type": "boolean" + }, + "installCommand": { + "nullable": true, + "type": "string" + }, + "env": { + "items": { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["type", "key", "value"], + "type": "object" + }, + "type": "array" + }, + "customEnvironments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["production", "preview", "development"] + }, + "description": { + "type": "string" + }, + "branchMatcher": { + "properties": { + "type": { + "type": "string", + "enum": ["endsWith", "startsWith", "equals"] + }, + "pattern": { + "type": "string" + } + }, + "required": ["type", "pattern"], + "type": "object" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "currentDeploymentAliases": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "name", "slug", "type", "createdAt", "updatedAt"], + "type": "object" + }, + "type": "array" + }, + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "gitForkProtection": { + "type": "boolean" + }, + "gitLFS": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "latestDeployments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "array" + }, + "link": { + "oneOf": [ + { + "properties": { + "org": { + "type": "string" + }, + "repoOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." + }, + "repo": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["github"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "projectId": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "projectNameWithNamespace": { + "type": "string" + }, + "projectNamespace": { + "type": "string" + }, + "projectOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." + }, + "projectUrl": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "uuid": { + "type": "string" + }, + "workspaceUuid": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + } + ] + }, + "name": { + "type": "string" + }, + "nodeVersion": { + "type": "string", + "enum": ["20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x"] + }, + "optionsAllowlist": { + "nullable": true, + "properties": { + "paths": { + "items": { + "properties": { + "value": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["paths"], + "type": "object" + }, + "outputDirectory": { + "nullable": true, + "type": "string" + }, + "passiveConnectConfigurationId": { + "nullable": true, + "type": "string" + }, + "passwordProtection": { + "nullable": true, + "type": "object" + }, + "productionDeploymentsFastLane": { + "type": "boolean" + }, + "publicSource": { + "nullable": true, + "type": "boolean" + }, + "resourceConfig": { + "properties": { + "functionDefaultTimeout": { + "type": "number" + }, + "functionDefaultMemoryType": { + "type": "string", + "enum": ["standard_legacy", "standard", "performance"] + } + }, + "type": "object" + }, + "rootDirectory": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionRegion": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionZeroConfigFailover": { + "type": "boolean" + }, + "skewProtectionBoundaryAt": { + "type": "number" + }, + "skewProtectionMaxAge": { + "type": "number" + }, + "skipGitConnectDuringLink": { + "type": "boolean" + }, + "sourceFilesOutsideRootDirectory": { + "type": "boolean" + }, + "enableAffectedProjectsDeployments": { + "type": "boolean" + }, + "ssoProtection": { + "nullable": true, + "properties": { + "deploymentType": { + "type": "string", + "enum": ["preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + }, + "targets": { + "additionalProperties": { + "nullable": true, + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "object" + }, + "transferCompletedAt": { + "type": "number" + }, + "transferStartedAt": { + "type": "number" + }, + "transferToAccountId": { + "type": "string" + }, + "transferredFromAccountId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "live": { + "type": "boolean" + }, + "enablePreviewFeedback": { + "nullable": true, + "type": "boolean" + }, + "enableProductionFeedback": { + "nullable": true, + "type": "boolean" + }, + "permissions": { + "properties": { + "accessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "auditLog": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingAddress": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInformation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceEmailRecipient": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceLanguage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPurchaseOrder": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingTaxId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blob": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "budget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifact": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifactUsageEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "codeChecks": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "concurrentBuilds": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connect": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAcceptDelegation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAuthCodes": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCertificate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainRecord": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ownEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sensitiveEnvironmentVariablePolicy": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "fileUpload": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "gitRepository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ipBlocking": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationAccount": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationProjects": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationVercelConfigurationOverride": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationRole": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResource": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceSecrets": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInstallationMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceBillingData": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "jobGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logDrain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "Monitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringQuery": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringChart": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDeploymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainExpire": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainMoved": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainRenewal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainUnverified": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "NotificationMonitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationPaymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationUsageAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationCustomerBudget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationStatementOfReasons": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Connection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "openTelemetryEndpoint": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "paymentMethod": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "permissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgres": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "previewDeploymentSuffix": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "proTrialOnboarding": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "space": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "spaceRun": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtectionInvoiceItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "rateLimit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redis": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "repository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "remoteCaching": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "samlConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "secret": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redisStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blobStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgresStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceReplCommand": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "storeTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheBillingSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "team": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamAccessRequest": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamFellowMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamGitExclusivity": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInvite": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInviteCode": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamJoin": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembershipDisconnectSAML": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "token": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usageCycle": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "user": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "userConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "vpcPeeringConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalyticsPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAuthn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigSchema": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigToken": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook-event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "endpointVerification": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Application": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProject": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "productionAliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfigurationLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheNamespace": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deployment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheck": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckReRunFromProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentProductionGit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPrivate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPromote": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentRollback": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "environments": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logs": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logsPreset": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "optionsAllowlist": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "job": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "project": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAccessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentHook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsUnownedByIntegration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectFlags": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectIntegrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMonitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectPermissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferOut": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentExpiration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTier": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "seawallConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "skewProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "trustedIps": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sonar": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + } + }, + "type": "object" + }, + "lastRollbackTarget": { + "nullable": true, + "type": "object" + }, + "lastAliasRequest": { + "nullable": true, + "properties": { + "fromDeploymentId": { + "type": "string" + }, + "toDeploymentId": { + "type": "string" + }, + "jobStatus": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "pending", "in-progress"] + }, + "requestedAt": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["promote", "rollback"] + } + }, + "required": ["fromDeploymentId", "toDeploymentId", "jobStatus", "requestedAt", "type"], + "type": "object" + }, + "hasFloatingAliases": { + "type": "boolean" + }, + "protectionBypass": { + "additionalProperties": { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["automation-bypass"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object" + }, + "type": "object" + }, + "hasActiveBranches": { + "type": "boolean" + }, + "trustedIps": { + "nullable": true, + "oneOf": [ + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + }, + "addresses": { + "items": { + "properties": { + "value": { + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + }, + "protectionMode": { + "type": "string", + "enum": ["additional", "exclusive"] + } + }, + "required": ["deploymentType", "addresses", "protectionMode"], + "type": "object" + }, + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + } + ] + }, + "gitComments": { + "properties": { + "onPullRequest": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on PRs" + }, + "onCommit": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on commits" + } + }, + "required": ["onPullRequest", "onCommit"], + "type": "object" + }, + "paused": { + "type": "boolean" + }, + "concurrencyBucketName": { + "type": "string" + }, + "webAnalytics": { + "properties": { + "id": { + "type": "string" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + } + }, + "required": ["id"], + "type": "object" + }, + "security": { + "properties": { + "attackModeEnabled": { + "type": "boolean" + }, + "attackModeUpdatedAt": { + "type": "number" + }, + "firewallEnabled": { + "type": "boolean" + }, + "firewallUpdatedAt": { + "type": "number" + }, + "attackModeActiveUntil": { + "nullable": true, + "type": "number" + }, + "firewallConfigVersion": { + "type": "number" + }, + "firewallRoutes": { + "items": { + "properties": { + "src": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + }, + "has": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "missing": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "dest": { + "type": "string" + }, + "status": { + "type": "number" + }, + "handle": { + "type": "string", + "enum": ["init", "finalize"] + }, + "mitigate": { + "properties": { + "action": { + "type": "string", + "enum": ["deny", "challenge", "log", "bypass", "rate_limit", "redirect"] + }, + "rule_id": { + "type": "string" + }, + "ttl": { + "type": "number" + }, + "erl": { + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["algo", "window", "limit", "keys"], + "type": "object" + } + }, + "required": ["action", "rule_id"], + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "firewallSeawallEnabled": { + "type": "boolean" + }, + "ja3Enabled": { + "type": "boolean" + }, + "ja4Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "oidcTokenConfig": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"], + "type": "object" + }, + "tier": { + "type": "string", + "enum": ["standard", "advanced", "critical"] + } + }, + "required": ["accountId", "directoryListing", "id", "name", "nodeVersion"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nThe Bitbucket Webhook for the project link could not be created\nThe Gitlab Webhook for the project link could not be created" + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "409": { + "description": "A project with the provided name already exists." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "properties": { + "buildCommand": { + "description": "The build command for this project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "commandForIgnoringBuildStep": { + "maxLength": 256, + "type": "string", + "nullable": true + }, + "devCommand": { + "description": "The dev command for this project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "environmentVariables": { + "description": "Collection of ENV Variables the Project will use", + "items": { + "properties": { + "key": { + "description": "Name of the ENV variable", + "type": "string" + }, + "target": { + "description": "Deployment Target or Targets in which the ENV variable will be used", + "oneOf": [ + { + "enum": ["production", "preview", "development"] + }, + { + "items": { + "enum": ["production", "preview", "development"] + }, + "type": "array" + } + ] + }, + "gitBranch": { + "description": "If defined, the git branch of the environment variable (must have target=preview)", + "type": "string", + "maxLength": 250 + }, + "type": { + "description": "Type of the ENV variable", + "enum": ["system", "secret", "encrypted", "plain", "sensitive"], + "type": "string" + }, + "value": { + "description": "Value for the ENV variable", + "type": "string" + } + }, + "required": ["key", "value", "target"], + "type": "object" + }, + "type": "array" + }, + "framework": { + "description": "The framework that is being used for this project. When `null` is used no framework is selected", + "enum": [ + null, + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "gitRepository": { + "description": "The Git Repository that will be connected to the project. When this is defined, any pushes to the specified connected Git Repository will be automatically deployed", + "properties": { + "repo": { + "description": "The name of the git repository. For example: \\\"vercel/next.js\\\"", + "type": "string" + }, + "type": { + "description": "The Git Provider of the repository", + "enum": ["github", "gitlab", "bitbucket"] + } + }, + "required": ["type", "repo"], + "type": "object" + }, + "installCommand": { + "description": "The install command for this project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "name": { + "description": "The desired name for the project", + "example": "a-project-name", + "type": "string", + "maxLength": 100, + "pattern": "^(?!.*---)[a-z0-9-_.]+$" + }, + "skipGitConnectDuringLink": { + "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`.", + "type": "boolean", + "deprecated": true + }, + "outputDirectory": { + "description": "The output directory of the project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "publicSource": { + "description": "Specifies whether the source code and logs of the deployments for this project should be public or not", + "type": "boolean", + "nullable": true + }, + "rootDirectory": { + "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "serverlessFunctionRegion": { + "description": "The region to deploy Serverless Functions in this project", + "maxLength": 4, + "type": "string", + "nullable": true + }, + "serverlessFunctionZeroConfigFailover": { + "description": "Specifies whether Zero Config Failover is enabled for this project.", + "oneOf": [ + { + "type": "boolean" + } + ] + }, + "oidcTokenConfig": { + "description": "OpenID Connect JSON Web Token generation configuration.", + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { + "description": "Whether or not to generate OpenID Connect JSON Web Tokens.", + "type": "boolean" + } + }, + "required": ["enabled"] + }, + "enableAffectedProjectsDeployments": { + "description": "Opt-in to skip deployments when there are no changes to the root directory and its dependencies", + "type": "boolean" + } + }, + "required": ["name"], + "type": "object" + } + } + } + } + } + }, + "/v9/projects/{idOrName}": { + "get": { + "description": "Get the information for a specific project by passing either the project `id` or `name` in the URL.", + "operationId": "getProject", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Find a project by id or name", + "tags": ["projects"], + "responses": { + "200": { + "description": "The project information", + "content": { + "application/json": { + "schema": { + "properties": { + "accountId": { + "type": "string" + }, + "analytics": { + "properties": { + "id": { + "type": "string" + }, + "canceledAt": { + "nullable": true, + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "paidAt": { + "type": "number" + }, + "sampleRatePercent": { + "nullable": true, + "type": "number" + }, + "spendLimitInDollars": { + "nullable": true, + "type": "number" + } + }, + "required": ["id", "disabledAt", "enabledAt"], + "type": "object" + }, + "speedInsights": { + "properties": { + "id": { + "type": "string" + }, + "enabledAt": { + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + }, + "paidAt": { + "type": "number" + } + }, + "required": ["id"], + "type": "object" + }, + "autoExposeSystemEnvs": { + "type": "boolean" + }, + "autoAssignCustomDomains": { + "type": "boolean" + }, + "autoAssignCustomDomainsUpdatedBy": { + "type": "string" + }, + "buildCommand": { + "nullable": true, + "type": "string" + }, + "commandForIgnoringBuildStep": { + "nullable": true, + "type": "string" + }, + "connectConfigurationId": { + "nullable": true, + "type": "string" + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "customerSupportCodeVisibility": { + "type": "boolean" + }, + "crons": { + "properties": { + "enabledAt": { + "type": "number", + "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." + }, + "disabledAt": { + "nullable": true, + "type": "number", + "description": "The time the feature was disabled for this project." + }, + "updatedAt": { + "type": "number" + }, + "deploymentId": { + "nullable": true, + "type": "string", + "description": "The ID of the Deployment from which the definitions originated." + }, + "definitions": { + "items": { + "properties": { + "host": { + "type": "string", + "description": "The hostname that should be used.", + "example": "vercel.com" + }, + "path": { + "type": "string", + "description": "The path that should be called for the cronjob.", + "example": "/api/crons/sync-something?hello=world" + }, + "schedule": { + "type": "string", + "description": "The cron expression.", + "example": "0 0 * * *" + } + }, + "required": ["host", "path", "schedule"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["enabledAt", "disabledAt", "updatedAt", "deploymentId", "definitions"], + "type": "object" + }, + "dataCache": { + "properties": { + "userDisabled": { + "type": "boolean" + }, + "storageSizeBytes": { + "nullable": true, + "type": "number" + }, + "unlimited": { + "type": "boolean" + } + }, + "required": ["userDisabled"], + "type": "object" + }, + "deploymentExpiration": { + "nullable": true, + "properties": { + "expirationDays": { + "type": "number" + }, + "expirationDaysProduction": { + "type": "number" + }, + "expirationDaysCanceled": { + "type": "number" + }, + "expirationDaysErrored": { + "type": "number" + }, + "deploymentsToKeep": { + "type": "number" + } + }, + "type": "object" + }, + "devCommand": { + "nullable": true, + "type": "string" + }, + "directoryListing": { + "type": "boolean" + }, + "installCommand": { + "nullable": true, + "type": "string" + }, + "env": { + "items": { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["type", "key", "value"], + "type": "object" + }, + "type": "array" + }, + "customEnvironments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["production", "preview", "development"] + }, + "description": { + "type": "string" + }, + "branchMatcher": { + "properties": { + "type": { + "type": "string", + "enum": ["endsWith", "startsWith", "equals"] + }, + "pattern": { + "type": "string" + } + }, + "required": ["type", "pattern"], + "type": "object" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "currentDeploymentAliases": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "name", "slug", "type", "createdAt", "updatedAt"], + "type": "object" + }, + "type": "array" + }, + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "gitForkProtection": { + "type": "boolean" + }, + "gitLFS": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "latestDeployments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "array" + }, + "link": { + "oneOf": [ + { + "properties": { + "org": { + "type": "string" + }, + "repoOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." + }, + "repo": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["github"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "projectId": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "projectNameWithNamespace": { + "type": "string" + }, + "projectNamespace": { + "type": "string" + }, + "projectOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." + }, + "projectUrl": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "uuid": { + "type": "string" + }, + "workspaceUuid": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + } + ] + }, + "name": { + "type": "string" + }, + "nodeVersion": { + "type": "string", + "enum": ["20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x"] + }, + "optionsAllowlist": { + "nullable": true, + "properties": { + "paths": { + "items": { + "properties": { + "value": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["paths"], + "type": "object" + }, + "outputDirectory": { + "nullable": true, + "type": "string" + }, + "passiveConnectConfigurationId": { + "nullable": true, + "type": "string" + }, + "passwordProtection": { + "nullable": true, + "type": "object" + }, + "productionDeploymentsFastLane": { + "type": "boolean" + }, + "publicSource": { + "nullable": true, + "type": "boolean" + }, + "resourceConfig": { + "properties": { + "functionDefaultTimeout": { + "type": "number" + }, + "functionDefaultMemoryType": { + "type": "string", + "enum": ["standard_legacy", "standard", "performance"] + } + }, + "type": "object" + }, + "rootDirectory": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionRegion": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionZeroConfigFailover": { + "type": "boolean" + }, + "skewProtectionBoundaryAt": { + "type": "number" + }, + "skewProtectionMaxAge": { + "type": "number" + }, + "skipGitConnectDuringLink": { + "type": "boolean" + }, + "sourceFilesOutsideRootDirectory": { + "type": "boolean" + }, + "enableAffectedProjectsDeployments": { + "type": "boolean" + }, + "ssoProtection": { + "nullable": true, + "properties": { + "deploymentType": { + "type": "string", + "enum": ["preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + }, + "targets": { + "additionalProperties": { + "nullable": true, + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "object" + }, + "transferCompletedAt": { + "type": "number" + }, + "transferStartedAt": { + "type": "number" + }, + "transferToAccountId": { + "type": "string" + }, + "transferredFromAccountId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "live": { + "type": "boolean" + }, + "enablePreviewFeedback": { + "nullable": true, + "type": "boolean" + }, + "enableProductionFeedback": { + "nullable": true, + "type": "boolean" + }, + "permissions": { + "properties": { + "accessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "auditLog": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingAddress": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInformation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceEmailRecipient": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceLanguage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPurchaseOrder": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingTaxId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blob": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "budget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifact": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifactUsageEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "codeChecks": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "concurrentBuilds": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connect": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAcceptDelegation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAuthCodes": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCertificate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainRecord": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ownEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sensitiveEnvironmentVariablePolicy": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "fileUpload": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "gitRepository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ipBlocking": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationAccount": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationProjects": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationVercelConfigurationOverride": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationRole": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResource": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceSecrets": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInstallationMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceBillingData": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "jobGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logDrain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "Monitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringQuery": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringChart": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDeploymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainExpire": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainMoved": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainRenewal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainUnverified": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "NotificationMonitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationPaymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationUsageAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationCustomerBudget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationStatementOfReasons": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Connection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "openTelemetryEndpoint": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "paymentMethod": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "permissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgres": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "previewDeploymentSuffix": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "proTrialOnboarding": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "space": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "spaceRun": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtectionInvoiceItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "rateLimit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redis": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "repository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "remoteCaching": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "samlConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "secret": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redisStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blobStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgresStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceReplCommand": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "storeTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheBillingSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "team": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamAccessRequest": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamFellowMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamGitExclusivity": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInvite": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInviteCode": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamJoin": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembershipDisconnectSAML": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "token": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usageCycle": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "user": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "userConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "vpcPeeringConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalyticsPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAuthn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigSchema": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigToken": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook-event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "endpointVerification": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Application": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProject": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "productionAliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfigurationLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheNamespace": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deployment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheck": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckReRunFromProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentProductionGit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPrivate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPromote": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentRollback": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "environments": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logs": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logsPreset": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "optionsAllowlist": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "job": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "project": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAccessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentHook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsUnownedByIntegration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectFlags": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectIntegrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMonitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectPermissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferOut": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentExpiration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTier": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "seawallConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "skewProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "trustedIps": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sonar": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + } + }, + "type": "object" + }, + "lastRollbackTarget": { + "nullable": true, + "type": "object" + }, + "lastAliasRequest": { + "nullable": true, + "properties": { + "fromDeploymentId": { + "type": "string" + }, + "toDeploymentId": { + "type": "string" + }, + "jobStatus": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "pending", "in-progress"] + }, + "requestedAt": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["promote", "rollback"] + } + }, + "required": ["fromDeploymentId", "toDeploymentId", "jobStatus", "requestedAt", "type"], + "type": "object" + }, + "hasFloatingAliases": { + "type": "boolean" + }, + "protectionBypass": { + "additionalProperties": { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["automation-bypass"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object" + }, + "type": "object" + }, + "hasActiveBranches": { + "type": "boolean" + }, + "trustedIps": { + "nullable": true, + "oneOf": [ + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + }, + "addresses": { + "items": { + "properties": { + "value": { + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + }, + "protectionMode": { + "type": "string", + "enum": ["additional", "exclusive"] + } + }, + "required": ["deploymentType", "addresses", "protectionMode"], + "type": "object" + }, + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + } + ] + }, + "gitComments": { + "properties": { + "onPullRequest": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on PRs" + }, + "onCommit": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on commits" + } + }, + "required": ["onPullRequest", "onCommit"], + "type": "object" + }, + "paused": { + "type": "boolean" + }, + "concurrencyBucketName": { + "type": "string" + }, + "webAnalytics": { + "properties": { + "id": { + "type": "string" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + } + }, + "required": ["id"], + "type": "object" + }, + "security": { + "properties": { + "attackModeEnabled": { + "type": "boolean" + }, + "attackModeUpdatedAt": { + "type": "number" + }, + "firewallEnabled": { + "type": "boolean" + }, + "firewallUpdatedAt": { + "type": "number" + }, + "attackModeActiveUntil": { + "nullable": true, + "type": "number" + }, + "firewallConfigVersion": { + "type": "number" + }, + "firewallRoutes": { + "items": { + "properties": { + "src": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + }, + "has": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "missing": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "dest": { + "type": "string" + }, + "status": { + "type": "number" + }, + "handle": { + "type": "string", + "enum": ["init", "finalize"] + }, + "mitigate": { + "properties": { + "action": { + "type": "string", + "enum": ["deny", "challenge", "log", "bypass", "rate_limit", "redirect"] + }, + "rule_id": { + "type": "string" + }, + "ttl": { + "type": "number" + }, + "erl": { + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["algo", "window", "limit", "keys"], + "type": "object" + } + }, + "required": ["action", "rule_id"], + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "firewallSeawallEnabled": { + "type": "boolean" + }, + "ja3Enabled": { + "type": "boolean" + }, + "ja4Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "oidcTokenConfig": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"], + "type": "object" + }, + "tier": { + "type": "string", + "enum": ["standard", "advanced", "critical"] + } + }, + "required": ["accountId", "directoryListing", "id", "name", "nodeVersion"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ] + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "patch": { + "description": "Update the fields of a project using either its `name` or `id`.", + "operationId": "updateProject", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update an existing project", + "tags": ["projects"], + "responses": { + "200": { + "description": "The project was successfully updated", + "content": { + "application/json": { + "schema": { + "properties": { + "accountId": { + "type": "string" + }, + "analytics": { + "properties": { + "id": { + "type": "string" + }, + "canceledAt": { + "nullable": true, + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "paidAt": { + "type": "number" + }, + "sampleRatePercent": { + "nullable": true, + "type": "number" + }, + "spendLimitInDollars": { + "nullable": true, + "type": "number" + } + }, + "required": ["id", "disabledAt", "enabledAt"], + "type": "object" + }, + "speedInsights": { + "properties": { + "id": { + "type": "string" + }, + "enabledAt": { + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + }, + "paidAt": { + "type": "number" + } + }, + "required": ["id"], + "type": "object" + }, + "autoExposeSystemEnvs": { + "type": "boolean" + }, + "autoAssignCustomDomains": { + "type": "boolean" + }, + "autoAssignCustomDomainsUpdatedBy": { + "type": "string" + }, + "buildCommand": { + "nullable": true, + "type": "string" + }, + "commandForIgnoringBuildStep": { + "nullable": true, + "type": "string" + }, + "connectConfigurationId": { + "nullable": true, + "type": "string" + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "customerSupportCodeVisibility": { + "type": "boolean" + }, + "crons": { + "properties": { + "enabledAt": { + "type": "number", + "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." + }, + "disabledAt": { + "nullable": true, + "type": "number", + "description": "The time the feature was disabled for this project." + }, + "updatedAt": { + "type": "number" + }, + "deploymentId": { + "nullable": true, + "type": "string", + "description": "The ID of the Deployment from which the definitions originated." + }, + "definitions": { + "items": { + "properties": { + "host": { + "type": "string", + "description": "The hostname that should be used.", + "example": "vercel.com" + }, + "path": { + "type": "string", + "description": "The path that should be called for the cronjob.", + "example": "/api/crons/sync-something?hello=world" + }, + "schedule": { + "type": "string", + "description": "The cron expression.", + "example": "0 0 * * *" + } + }, + "required": ["host", "path", "schedule"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["enabledAt", "disabledAt", "updatedAt", "deploymentId", "definitions"], + "type": "object" + }, + "dataCache": { + "properties": { + "userDisabled": { + "type": "boolean" + }, + "storageSizeBytes": { + "nullable": true, + "type": "number" + }, + "unlimited": { + "type": "boolean" + } + }, + "required": ["userDisabled"], + "type": "object" + }, + "deploymentExpiration": { + "nullable": true, + "properties": { + "expirationDays": { + "type": "number" + }, + "expirationDaysProduction": { + "type": "number" + }, + "expirationDaysCanceled": { + "type": "number" + }, + "expirationDaysErrored": { + "type": "number" + }, + "deploymentsToKeep": { + "type": "number" + } + }, + "type": "object" + }, + "devCommand": { + "nullable": true, + "type": "string" + }, + "directoryListing": { + "type": "boolean" + }, + "installCommand": { + "nullable": true, + "type": "string" + }, + "env": { + "items": { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["type", "key", "value"], + "type": "object" + }, + "type": "array" + }, + "customEnvironments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["production", "preview", "development"] + }, + "description": { + "type": "string" + }, + "branchMatcher": { + "properties": { + "type": { + "type": "string", + "enum": ["endsWith", "startsWith", "equals"] + }, + "pattern": { + "type": "string" + } + }, + "required": ["type", "pattern"], + "type": "object" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "currentDeploymentAliases": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "name", "slug", "type", "createdAt", "updatedAt"], + "type": "object" + }, + "type": "array" + }, + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "gitForkProtection": { + "type": "boolean" + }, + "gitLFS": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "latestDeployments": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "array" + }, + "link": { + "oneOf": [ + { + "properties": { + "org": { + "type": "string" + }, + "repoOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." + }, + "repo": { + "type": "string" + }, + "repoId": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["github"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "projectId": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "projectNameWithNamespace": { + "type": "string" + }, + "projectNamespace": { + "type": "string" + }, + "projectOwnerId": { + "type": "number", + "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." + }, + "projectUrl": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["gitlab"] + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + }, + { + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["bitbucket"] + }, + "uuid": { + "type": "string" + }, + "workspaceUuid": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "deployHooks": { + "items": { + "properties": { + "createdAt": { + "type": "number" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ref": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["id", "name", "ref", "url"], + "type": "object" + }, + "type": "array" + }, + "gitCredentialId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "sourceless": { + "type": "boolean" + }, + "productionBranch": { + "type": "string" + } + }, + "required": ["deployHooks"], + "type": "object" + } + ] + }, + "name": { + "type": "string" + }, + "nodeVersion": { + "type": "string", + "enum": ["20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x"] + }, + "optionsAllowlist": { + "nullable": true, + "properties": { + "paths": { + "items": { + "properties": { + "value": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["paths"], + "type": "object" + }, + "outputDirectory": { + "nullable": true, + "type": "string" + }, + "passiveConnectConfigurationId": { + "nullable": true, + "type": "string" + }, + "passwordProtection": { + "nullable": true, + "type": "object" + }, + "productionDeploymentsFastLane": { + "type": "boolean" + }, + "publicSource": { + "nullable": true, + "type": "boolean" + }, + "resourceConfig": { + "properties": { + "functionDefaultTimeout": { + "type": "number" + }, + "functionDefaultMemoryType": { + "type": "string", + "enum": ["standard_legacy", "standard", "performance"] + } + }, + "type": "object" + }, + "rootDirectory": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionRegion": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionZeroConfigFailover": { + "type": "boolean" + }, + "skewProtectionBoundaryAt": { + "type": "number" + }, + "skewProtectionMaxAge": { + "type": "number" + }, + "skipGitConnectDuringLink": { + "type": "boolean" + }, + "sourceFilesOutsideRootDirectory": { + "type": "boolean" + }, + "enableAffectedProjectsDeployments": { + "type": "boolean" + }, + "ssoProtection": { + "nullable": true, + "properties": { + "deploymentType": { + "type": "string", + "enum": ["preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + }, + "targets": { + "additionalProperties": { + "nullable": true, + "properties": { + "id": { + "type": "string" + }, + "alias": { + "items": { + "type": "string" + }, + "type": "array" + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + }, + "aliasFinal": { + "nullable": true, + "type": "string" + }, + "automaticAliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "buildingAt": { + "type": "number" + }, + "builds": { + "items": { + "properties": { + "use": { + "type": "string" + }, + "src": { + "type": "string" + }, + "dest": { + "type": "string" + } + }, + "required": ["use"], + "type": "object" + }, + "type": "array" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"] + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"] + }, + "connectBuildsEnabled": { + "type": "boolean" + }, + "connectConfigurationId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "createdIn": { + "type": "string" + }, + "creator": { + "nullable": true, + "properties": { + "email": { + "type": "string" + }, + "githubLogin": { + "type": "string" + }, + "gitlabLogin": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["email", "uid", "username"], + "type": "object" + }, + "deletedAt": { + "type": "number" + }, + "deploymentHostname": { + "type": "string" + }, + "forced": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "monorepoManager": { + "nullable": true, + "type": "string" + }, + "oidcTokenClaims": { + "properties": { + "sub": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "project": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "sub", + "scope", + "aud", + "owner", + "owner_id", + "project", + "project_id", + "environment" + ], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "previewCommentsEnabled": { + "type": "boolean", + "description": "Whether or not preview comments are enabled for the deployment", + "example": false + }, + "private": { + "type": "boolean" + }, + "readyAt": { + "type": "number" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"] + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"] + }, + "requestedAt": { + "type": "number" + }, + "target": { + "nullable": true, + "type": "string" + }, + "teamId": { + "nullable": true, + "type": "string" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"] + }, + "url": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "withCache": { + "type": "boolean" + } + }, + "required": [ + "id", + "createdAt", + "createdIn", + "creator", + "deploymentHostname", + "name", + "plan", + "private", + "readyState", + "type", + "url", + "userId" + ], + "type": "object" + }, + "type": "object" + }, + "transferCompletedAt": { + "type": "number" + }, + "transferStartedAt": { + "type": "number" + }, + "transferToAccountId": { + "type": "string" + }, + "transferredFromAccountId": { + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "live": { + "type": "boolean" + }, + "enablePreviewFeedback": { + "nullable": true, + "type": "boolean" + }, + "enableProductionFeedback": { + "nullable": true, + "type": "boolean" + }, + "permissions": { + "properties": { + "accessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "auditLog": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingAddress": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInformation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceEmailRecipient": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingInvoiceLanguage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingPurchaseOrder": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "billingTaxId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blob": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "budget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifact": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "cacheArtifactUsageEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "codeChecks": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "concurrentBuilds": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connect": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAcceptDelegation": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainAuthCodes": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCertificate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainRecord": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "domainTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ownEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sensitiveEnvironmentVariablePolicy": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "fileUpload": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "gitRepository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "ipBlocking": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationAccount": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationProjects": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationVercelConfigurationOverride": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationConfigurationRole": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResource": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationEvent": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceSecrets": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInstallationMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceBillingData": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "marketplaceInvoice": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "jobGlobal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logDrain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "Monitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringQuery": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringChart": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "monitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDeploymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainExpire": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainMoved": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainPurchase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainRenewal": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationDomainUnverified": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "NotificationMonitoringAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationPaymentFailed": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationUsageAlert": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationCustomerBudget": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "notificationStatementOfReasons": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Connection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "openTelemetryEndpoint": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "paymentMethod": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "permissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgres": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "previewDeploymentSuffix": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "proTrialOnboarding": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "space": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "spaceRun": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtectionInvoiceItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "rateLimit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redis": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "repository": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "remoteCaching": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "samlConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "secret": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "redisStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "blobStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "postgresStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationStoreTokenSet": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "integrationResourceReplCommand": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "storeTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "supportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheBillingSettings": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "team": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamAccessRequest": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamFellowMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamGitExclusivity": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInvite": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamInviteCode": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamJoin": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembership": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "teamOwnMembershipDisconnectSAML": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "token": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "usageCycle": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "user": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "userConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "vpcPeeringConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalyticsPlan": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAuthn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigItem": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigSchema": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "edgeConfigToken": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webhook-event": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "endpointVerification": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferIn": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "oauth2Application": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProject": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "aliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "productionAliasProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "connectConfigurationLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "dataCacheNamespace": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deployment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheck": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentCheckReRunFromProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentProductionGit": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPreview": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPrivate": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentPromote": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "deploymentRollback": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "environments": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logs": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "logsPreset": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "passwordProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "optionsAllowlist": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "job": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "project": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAccessGroup": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsSampling": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentHook": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomain": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainMove": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDomainCheckConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVars": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsProduction": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectEnvVarsUnownedByIntegration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectFlags": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectId": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectIntegrationConfiguration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectLink": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMember": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectMonitoring": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectPermissions": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProductionBranch": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransfer": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTransferOut": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectProtectionBypass": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectAnalyticsUsage": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCase": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectSupportCaseComment": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectDeploymentExpiration": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "projectTier": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "seawallConfig": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "skewProtection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "analytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "trustedIps": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "webAnalytics": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sharedEnvVarConnection": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + }, + "sonar": { + "items": { + "$ref": "#/components/schemas/ACLAction" + }, + "type": "array" + } + }, + "type": "object" + }, + "lastRollbackTarget": { + "nullable": true, + "type": "object" + }, + "lastAliasRequest": { + "nullable": true, + "properties": { + "fromDeploymentId": { + "type": "string" + }, + "toDeploymentId": { + "type": "string" + }, + "jobStatus": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "pending", "in-progress"] + }, + "requestedAt": { + "type": "number" + }, + "type": { + "type": "string", + "enum": ["promote", "rollback"] + } + }, + "required": ["fromDeploymentId", "toDeploymentId", "jobStatus", "requestedAt", "type"], + "type": "object" + }, + "hasFloatingAliases": { + "type": "boolean" + }, + "protectionBypass": { + "additionalProperties": { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["automation-bypass"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object" + }, + "type": "object" + }, + "hasActiveBranches": { + "type": "boolean" + }, + "trustedIps": { + "nullable": true, + "oneOf": [ + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + }, + "addresses": { + "items": { + "properties": { + "value": { + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": ["value"], + "type": "object" + }, + "type": "array" + }, + "protectionMode": { + "type": "string", + "enum": ["additional", "exclusive"] + } + }, + "required": ["deploymentType", "addresses", "protectionMode"], + "type": "object" + }, + { + "properties": { + "deploymentType": { + "type": "string", + "enum": ["production", "preview", "all", "prod_deployment_urls_and_all_previews"] + } + }, + "required": ["deploymentType"], + "type": "object" + } + ] + }, + "gitComments": { + "properties": { + "onPullRequest": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on PRs" + }, + "onCommit": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on commits" + } + }, + "required": ["onPullRequest", "onCommit"], + "type": "object" + }, + "paused": { + "type": "boolean" + }, + "concurrencyBucketName": { + "type": "string" + }, + "webAnalytics": { + "properties": { + "id": { + "type": "string" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + } + }, + "required": ["id"], + "type": "object" + }, + "security": { + "properties": { + "attackModeEnabled": { + "type": "boolean" + }, + "attackModeUpdatedAt": { + "type": "number" + }, + "firewallEnabled": { + "type": "boolean" + }, + "firewallUpdatedAt": { + "type": "number" + }, + "attackModeActiveUntil": { + "nullable": true, + "type": "number" + }, + "firewallConfigVersion": { + "type": "number" + }, + "firewallRoutes": { + "items": { + "properties": { + "src": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + }, + "has": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "missing": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "path", + "host", + "method", + "header", + "cookie", + "query", + "ip_address", + "protocol", + "scheme", + "environment", + "region" + ] + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "properties": { + "re": { + "type": "string" + }, + "eq": { + "type": "string" + }, + "neq": { + "type": "string" + }, + "inc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ninc": { + "items": { + "type": "string" + }, + "type": "array" + }, + "pre": { + "type": "string" + }, + "suf": { + "type": "string" + }, + "gt": { + "type": "number" + }, + "gte": { + "type": "number" + }, + "lt": { + "type": "number" + }, + "lte": { + "type": "number" + } + }, + "type": "object" + } + ] + } + }, + "required": ["type"], + "type": "object" + }, + "type": "array" + }, + "dest": { + "type": "string" + }, + "status": { + "type": "number" + }, + "handle": { + "type": "string", + "enum": ["init", "finalize"] + }, + "mitigate": { + "properties": { + "action": { + "type": "string", + "enum": ["deny", "challenge", "log", "bypass", "rate_limit", "redirect"] + }, + "rule_id": { + "type": "string" + }, + "ttl": { + "type": "number" + }, + "erl": { + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["algo", "window", "limit", "keys"], + "type": "object" + } + }, + "required": ["action", "rule_id"], + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "firewallSeawallEnabled": { + "type": "boolean" + }, + "ja3Enabled": { + "type": "boolean" + }, + "ja4Enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "oidcTokenConfig": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"], + "type": "object" + }, + "tier": { + "type": "string", + "enum": ["standard", "advanced", "critical"] + } + }, + "required": ["accountId", "directoryListing", "id", "name", "nodeVersion"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nTrusted IPs is only accessible for enterprise customers" + }, + "401": { + "description": "" + }, + "402": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "409": { + "description": "The provided name for the project is already being used\nThe project is currently being transferred." + }, + "428": { + "description": "Owner does not have protection add-on\nAdvanced Deployment Protection is not available for the user plan" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "example": "prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "description": "The unique project identifier or the project name", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "properties": { + "autoExposeSystemEnvs": { + "type": "boolean" + }, + "autoAssignCustomDomains": { + "type": "boolean" + }, + "autoAssignCustomDomainsUpdatedBy": { + "type": "string" + }, + "buildCommand": { + "description": "The build command for this project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "commandForIgnoringBuildStep": { + "maxLength": 256, + "type": "string", + "nullable": true + }, + "customerSupportCodeVisibility": { + "description": "Specifies whether customer support can see git source for a deployment", + "type": "boolean" + }, + "devCommand": { + "description": "The dev command for this project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "directoryListing": { + "type": "boolean" + }, + "framework": { + "description": "The framework that is being used for this project. When `null` is used no framework is selected", + "enum": [ + null, + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ], + "type": "string", + "nullable": true + }, + "gitForkProtection": { + "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed", + "type": "boolean" + }, + "gitLFS": { + "description": "Specifies whether Git LFS is enabled for this project.", + "type": "boolean" + }, + "installCommand": { + "description": "The install command for this project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "name": { + "description": "The desired name for the project", + "example": "a-project-name", + "type": "string", + "maxLength": 100, + "pattern": "^(?!.*---)[a-z0-9-_.]+$" + }, + "nodeVersion": { + "enum": ["20.x", "18.x", "16.x", "14.x", "12.x", "10.x"], + "type": "string" + }, + "outputDirectory": { + "description": "The output directory of the project. When `null` is used this value will be automatically detected", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "publicSource": { + "description": "Specifies whether the source code and logs of the deployments for this project should be public or not", + "type": "boolean", + "nullable": true + }, + "rootDirectory": { + "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root", + "maxLength": 256, + "type": "string", + "nullable": true + }, + "serverlessFunctionRegion": { + "description": "The region to deploy Serverless Functions in this project", + "maxLength": 4, + "type": "string", + "nullable": true + }, + "serverlessFunctionZeroConfigFailover": { + "description": "Specifies whether Zero Config Failover is enabled for this project.", + "oneOf": [ + { + "type": "boolean" + } + ] + }, + "skewProtectionBoundaryAt": { + "description": "Deployments created before this absolute datetime have Skew Protection disabled. Value is in milliseconds since epoch to match \\\"createdAt\\\" fields.", + "minimum": 0, + "type": "integer" + }, + "skewProtectionMaxAge": { + "description": "Deployments created before this rolling window have Skew Protection disabled. Value is in seconds to match \\\"revalidate\\\" fields.", + "minimum": 0, + "type": "integer" + }, + "skipGitConnectDuringLink": { + "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`.", + "type": "boolean", + "deprecated": true + }, + "sourceFilesOutsideRootDirectory": { + "description": "Indicates if there are source files outside of the root directory", + "type": "boolean" + }, + "enablePreviewFeedback": { + "description": "Opt-in to preview toolbar on the project level", + "type": "boolean", + "nullable": true + }, + "enableProductionFeedback": { + "description": "Opt-in to production toolbar on the project level", + "type": "boolean", + "nullable": true + }, + "enableAffectedProjectsDeployments": { + "description": "Opt-in to skip deployments when there are no changes to the root directory and its dependencies", + "type": "boolean" + }, + "oidcTokenConfig": { + "description": "OpenID Connect JSON Web Token generation configuration.", + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { + "description": "Whether or not to generate OpenID Connect JSON Web Tokens.", + "type": "boolean" + } + }, + "required": ["enabled"] + }, + "passwordProtection": { + "additionalProperties": false, + "description": "Allows to protect project deployments with a password", + "properties": { + "deploymentType": { + "description": "Specify if the password will apply to every Deployment Target or just Preview", + "enum": ["all", "preview", "prod_deployment_urls_and_all_previews"], + "type": "string" + }, + "password": { + "description": "The password that will be used to protect Project Deployments", + "maxLength": 72, + "type": "string", + "nullable": true + } + }, + "required": ["deploymentType"], + "type": "object", + "nullable": true + }, + "ssoProtection": { + "additionalProperties": false, + "description": "Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team", + "properties": { + "deploymentType": { + "default": "preview", + "description": "Specify if the Vercel Authentication (SSO Protection) will apply to every Deployment Target or just Preview", + "enum": ["all", "preview", "prod_deployment_urls_and_all_previews"], + "type": "string" + } + }, + "required": ["deploymentType"], + "type": "object", + "nullable": true + }, + "trustedIps": { + "additionalProperties": false, + "description": "Restricts access to deployments based on the incoming request IP address", + "properties": { + "deploymentType": { + "description": "Specify if the Trusted IPs will apply to every Deployment Target or just Preview", + "enum": ["all", "preview", "production", "prod_deployment_urls_and_all_previews"], + "type": "string" + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The IP addresses that are allowlisted. Supports IPv4 addresses and CIDR notations. IPv6 is not supported" + }, + "note": { + "type": "string", + "description": "An optional note explaining what the IP address or subnet is used for", + "maxLength": 20 + } + }, + "required": ["value"], + "additionalProperties": false + }, + "minItems": 1 + }, + "protectionMode": { + "description": "exclusive: ip match is enough to bypass deployment protection (regardless of other settings). additional: ip must match + any other protection should be also provided (password, vercel auth, shareable link, automation bypass header, automation bypass query param)", + "enum": ["exclusive", "additional"], + "type": "string" + } + }, + "required": ["deploymentType", "addresses", "protectionMode"], + "type": "object", + "nullable": true + }, + "optionsAllowlist": { + "additionalProperties": false, + "description": "Specify a list of paths that should not be protected by Deployment Protection to enable Cors preflight requests", + "properties": { + "paths": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The regex path that should not be protected by Deployment Protection", + "pattern": "^/.*" + } + }, + "required": ["value"], + "additionalProperties": false + }, + "minItems": 1, + "maxItems": 5 + } + }, + "required": ["paths"], + "type": "object", + "nullable": true + } + }, + "type": "object" + } + } + } + } + }, + "delete": { + "description": "Delete a specific project by passing either the project `id` or `name` in the URL.", + "operationId": "deleteProject", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete a Project", + "tags": ["projects"], + "responses": { + "204": { + "description": "The project was successfuly removed" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "example": "prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "description": "The unique project identifier or the project name", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v9/projects/{idOrName}/domains": { + "get": { + "description": "Retrieve the domains associated with a given project by passing either the project `id` or `name` in the URL.", + "operationId": "getProjectDomains", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Retrieve project domains by project by id or name", + "tags": ["projects"], + "responses": { + "200": { + "description": "Successful response retrieving a list of domains", + "content": { + "application/json": { + "schema": { + "properties": { + "domains": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["domains", "pagination"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } + }, + { + "name": "production", + "description": "Filters only production domains when set to `true`.", + "in": "query", + "required": false, + "schema": { + "default": "false", + "description": "Filters only production domains when set to `true`.", + "enum": ["true", "false"] + } + }, + { + "name": "target", + "description": "Filters on the target of the domain. Can be either \\\"production\\\", \\\"preview\\\"", + "in": "query", + "required": false, + "schema": { + "description": "Filters on the target of the domain. Can be either \\\"production\\\", \\\"preview\\\"", + "enum": ["production", "preview"], + "type": "string" + } + }, + { + "name": "gitBranch", + "description": "Filters domains based on specific branch.", + "in": "query", + "required": false, + "schema": { + "description": "Filters domains based on specific branch.", + "type": "string" + } + }, + { + "name": "redirects", + "description": "Excludes redirect project domains when \\\"false\\\". Includes redirect project domains when \\\"true\\\" (default).", + "in": "query", + "required": false, + "schema": { + "default": "true", + "description": "Excludes redirect project domains when \\\"false\\\". Includes redirect project domains when \\\"true\\\" (default).", + "enum": ["true", "false"] + } + }, + { + "name": "redirect", + "description": "Filters domains based on their redirect target.", + "in": "query", + "required": false, + "schema": { + "description": "Filters domains based on their redirect target.", + "type": "string", + "example": "example.com" + } + }, + { + "name": "verified", + "description": "Filters domains based on their verification status.", + "in": "query", + "required": false, + "schema": { + "description": "Filters domains based on their verification status.", + "enum": ["true", "false"] + } + }, + { + "name": "limit", + "description": "Maximum number of domains to list from a request (max 100).", + "in": "query", + "required": false, + "schema": { + "description": "Maximum number of domains to list from a request (max 100).", + "type": "number", + "example": 20 + } + }, + { + "name": "since", + "description": "Get domains created after this JavaScript timestamp.", + "in": "query", + "required": false, + "schema": { + "description": "Get domains created after this JavaScript timestamp.", + "type": "number", + "example": 1609499532000 + } + }, + { + "name": "until", + "description": "Get domains created before this JavaScript timestamp.", + "in": "query", + "required": false, + "schema": { + "description": "Get domains created before this JavaScript timestamp.", + "type": "number", + "example": 1612264332000 + } + }, + { + "name": "order", + "description": "Domains sort order by createdAt", + "in": "query", + "required": false, + "schema": { + "default": "DESC", + "description": "Domains sort order by createdAt", + "enum": ["ASC", "DESC"] + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v9/projects/{idOrName}/domains/{domain}": { + "get": { + "description": "Get project domain by project id/name and domain name.", + "operationId": "getProjectDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get a project domain", + "tags": ["projects"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string" + } + }, + { + "name": "domain", + "description": "The project domain name", + "in": "path", + "required": true, + "schema": { + "description": "The project domain name", + "type": "string", + "example": "www.example.com" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "patch": { + "description": "Update a project domain's configuration, including the name, git branch and redirect of the domain.", + "operationId": "updateProjectDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update a project domain", + "tags": ["projects"], + "responses": { + "200": { + "description": "The domain was updated successfuly", + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nThe domain redirect is not valid" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "409": { + "description": "The project is currently being transferred" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string" + } + }, + { + "name": "domain", + "description": "The project domain name", + "in": "path", + "required": true, + "schema": { + "description": "The project domain name", + "type": "string", + "example": "www.example.com" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "gitBranch": { + "description": "Git branch to link the project domain", + "example": null, + "type": "string", + "maxLength": 250, + "nullable": true + }, + "redirect": { + "description": "Target destination domain for redirect", + "example": "foobar.com", + "type": "string", + "nullable": true + }, + "redirectStatusCode": { + "description": "Status code for domain redirect", + "example": 307, + "type": "integer", + "enum": [null, 301, 302, 307, 308], + "nullable": true + } + }, + "type": "object" + } + } + } + } + }, + "delete": { + "description": "Remove a domain from a project by passing the domain name and by specifying the project by either passing the project `id` or `name` in the URL.", + "operationId": "removeProjectDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Remove a domain from a project", + "tags": ["projects"], + "responses": { + "200": { + "description": "The domain was succesfully removed from the project", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "The project is currently being transferred" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string" + } + }, + { + "name": "domain", + "description": "The project domain name", + "in": "path", + "required": true, + "schema": { + "description": "The project domain name", + "type": "string", + "example": "www.example.com" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v10/projects/{idOrName}/domains": { + "post": { + "description": "Add a domain to the project by passing its domain name and by specifying the project by either passing the project `id` or `name` in the URL. If the domain is not yet verified to be used on this project, the request will return `verified = false`, and the domain will need to be verified according to the `verification` challenge via `POST /projects/:idOrName/domains/:domain/verify`. If the domain already exists on the project, the request will fail with a `400` status code.", + "operationId": "addProjectDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Add a domain to a project", + "tags": ["projects"], + "responses": { + "200": { + "description": "The domain was successfully added to the project", + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nThe domain is not valid\nYou can't set both a git branch and a redirect for the domain\nThe domain can not be added because the latest production deployment for the project was not successful\nThe domain redirect is not valid\nA domain cannot redirect to itself\nYou can not set the production branch as a branch for your domain" + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource.\nYou don't have access to the domain you are adding" + }, + "409": { + "description": "The domain is already assigned to another Vercel project\nCannot create project domain since owner already has `domain` on their account, but it's not verified yet.\nCannot create project domain since owner already has `domain` on their account, and it's verified.\nThe domain is not allowed to be used\nThe project is currently being transferred" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "The project domain name", + "example": "www.example.com", + "type": "string" + }, + "gitBranch": { + "description": "Git branch to link the project domain", + "example": null, + "maxLength": 250, + "type": "string", + "nullable": true + }, + "redirect": { + "description": "Target destination domain for redirect", + "example": "foobar.com", + "type": "string", + "nullable": true + }, + "redirectStatusCode": { + "description": "Status code for domain redirect", + "example": 307, + "type": "integer", + "enum": [null, 301, 302, 307, 308], + "nullable": true + } + }, + "required": ["name"], + "type": "object" + } + } + } + } + } + }, + "/v9/projects/{idOrName}/domains/{domain}/verify": { + "post": { + "description": "Attempts to verify a project domain with `verified = false` by checking the correctness of the project domain's `verification` challenge.", + "operationId": "verifyProjectDomain", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Verify project domain", + "tags": ["projects"], + "responses": { + "200": { + "description": "The project domain was verified successfully\nDomain is already verified", + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "type": "string" + }, + "apexName": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "redirect": { + "nullable": true, + "type": "string" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [307, 301, 302, 308] + }, + "gitBranch": { + "nullable": true, + "type": "string" + }, + "customEnvironmentId": { + "nullable": true, + "type": "string" + }, + "updatedAt": { + "type": "number" + }, + "createdAt": { + "type": "number" + }, + "verified": { + "type": "boolean", + "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." + }, + "verification": { + "items": { + "properties": { + "type": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "value": { + "type": "string" + }, + "reason": { + "type": "string" + } + }, + "required": ["type", "domain", "value", "reason"], + "type": "object", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + }, + "type": "array", + "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." + } + }, + "required": ["name", "apexName", "projectId", "verified"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid.\nThere is an existing TXT record on the domain verifying it for another project\nThe domain does not have a TXT record that attempts to verify the project domain\nThe TXT record on the domain does not match the expected challenge for the project domain\nProject domain is not assigned to project" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "example": "prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "description": "The unique project identifier or the project name", + "type": "string" + } + }, + { + "name": "domain", + "description": "The domain name you want to verify", + "in": "path", + "required": true, + "schema": { + "description": "The domain name you want to verify", + "type": "string", + "example": "example.com" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v9/projects/{idOrName}/env": { + "get": { + "description": "Retrieve the environment variables for a given project by passing either the project `id` or `name` in the URL.", + "operationId": "filterProjectEnvs", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Retrieve the environment variables of a project by id or name", + "tags": ["projects"], + "responses": { + "200": { + "description": "The list of environment variables for the given project", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + }, + "system": { + "type": "boolean" + } + }, + "type": "object" + }, + { + "properties": { + "envs": { + "items": { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + }, + "system": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["envs", "pagination"], + "type": "object" + }, + { + "properties": { + "envs": { + "items": { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + }, + "system": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": ["envs"], + "type": "object", + "description": "The list of environment variables for the given project" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string", + "example": "prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA" + } + }, + { + "name": "gitBranch", + "description": "If defined, the git branch of the environment variable to filter the results (must have target=preview)", + "in": "query", + "required": false, + "schema": { + "description": "If defined, the git branch of the environment variable to filter the results (must have target=preview)", + "type": "string", + "maxLength": 250, + "example": "feature-1" + } + }, + { + "name": "decrypt", + "description": "If true, the environment variable value will be decrypted", + "in": "query", + "required": false, + "schema": { + "description": "If true, the environment variable value will be decrypted", + "type": "string", + "enum": ["true", "false"], + "example": "true", + "deprecated": true + } + }, + { + "name": "source", + "description": "The source that is calling the endpoint.", + "in": "query", + "required": false, + "schema": { + "description": "The source that is calling the endpoint.", + "type": "string", + "example": "vercel-cli:pull" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/projects/{idOrName}/env/{id}": { + "get": { + "description": "Retrieve the environment variable for a given project.", + "operationId": "getProjectEnv", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Retrieve the decrypted value of an environment variable of a project by id", + "tags": ["projects"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "properties": { + "decrypted": { + "type": "boolean" + }, + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["decrypted", "type", "key"], + "type": "object" + }, + { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["type", "key", "value"], + "type": "object" + }, + { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["type", "key", "value"], + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string", + "example": "prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA" + } + }, + { + "name": "id", + "description": "The unique ID for the environment variable to get the decrypted value.", + "in": "path", + "required": true, + "schema": { + "description": "The unique ID for the environment variable to get the decrypted value.", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v10/projects/{idOrName}/env": { + "post": { + "description": "Create one ore more environment variables for a project by passing its `key`, `value`, `type` and `target` and by specifying the project by either passing the project `id` or `name` in the URL.", + "operationId": "createProjectEnv", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Create one or more environment variables", + "tags": ["projects"], + "responses": { + "201": { + "description": "The environment variable was created successfully", + "content": { + "application/json": { + "schema": { + "properties": { + "created": { + "oneOf": [ + { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + }, + "system": { + "type": "boolean" + } + }, + "type": "object" + }, + { + "items": { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + }, + "system": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + } + ] + }, + "failed": { + "items": { + "properties": { + "error": { + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "key": { + "type": "string" + }, + "envVarId": { + "type": "string" + }, + "envVarKey": { + "type": "string" + }, + "action": { + "type": "string" + }, + "link": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + } + ] + }, + "gitBranch": { + "type": "string" + }, + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "project": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object" + } + }, + "required": ["error"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["created", "failed"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource.\nThe environment variable cannot be created because it already exists\nAdditional permissions are required to create production environment variables" + }, + "409": { + "description": "The project is being transfered and creating an environment variable is not possible" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string", + "example": "prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA" + } + }, + { + "name": "upsert", + "description": "Allow override of environment variable if it already exists", + "in": "query", + "required": false, + "schema": { + "description": "Allow override of environment variable if it already exists", + "type": "string", + "example": "true" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "required": ["key", "value", "type"], + "anyOf": [ + { + "required": ["target"] + }, + { + "required": ["customEnvironmentIds"] + } + ], + "properties": { + "key": { + "description": "The name of the environment variable", + "type": "string", + "example": "API_URL" + }, + "value": { + "description": "The value of the environment variable", + "type": "string", + "example": "https://api.vercel.com" + }, + "type": { + "description": "The type of environment variable", + "type": "string", + "enum": ["system", "secret", "encrypted", "plain", "sensitive"], + "example": "plain" + }, + "target": { + "description": "The target environment of the environment variable", + "type": "array", + "items": { + "enum": ["production", "preview", "development"] + }, + "example": ["preview"] + }, + "gitBranch": { + "description": "If defined, the git branch of the environment variable (must have target=preview)", + "type": "string", + "maxLength": 250, + "example": "feature-1", + "nullable": true + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this environment variable is for", + "example": "database connection string for production", + "maxLength": 500 + } + } + }, + { + "type": "array", + "items": { + "type": "object", + "required": ["key", "value", "type"], + "anyOf": [ + { + "required": ["target"] + }, + { + "required": ["customEnvironmentIds"] + } + ], + "properties": { + "key": { + "description": "The name of the environment variable", + "type": "string", + "example": "API_URL" + }, + "value": { + "description": "The value of the environment variable", + "type": "string", + "example": "https://api.vercel.com" + }, + "type": { + "description": "The type of environment variable", + "type": "string", + "enum": ["system", "secret", "encrypted", "plain", "sensitive"], + "example": "plain" + }, + "target": { + "description": "The target environment of the environment variable", + "type": "array", + "items": { + "enum": ["production", "preview", "development"] + }, + "example": ["preview"] + }, + "gitBranch": { + "description": "If defined, the git branch of the environment variable (must have target=preview)", + "type": "string", + "maxLength": 250, + "example": "feature-1", + "nullable": true + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this environment variable is for", + "example": "database connection string for production", + "maxLength": 500 + } + } + } + } + ] + } + } + } + } + } + }, + "/v9/projects/{idOrName}/env/{id}": { + "delete": { + "description": "Delete a specific environment variable for a given project by passing the environment variable identifier and either passing the project `id` or `name` in the URL.", + "operationId": "removeProjectEnv", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Remove an environment variable", + "tags": ["projects"], + "responses": { + "200": { + "description": "The environment variable was successfully removed", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "items": { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["type", "key", "value"], + "type": "object" + }, + "type": "array" + }, + { + "properties": { + "system": { + "type": "boolean" + }, + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["type", "key", "value"], + "type": "object" + }, + { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vsmValue": { + "type": "string" + } + }, + "required": ["type", "key", "value"], + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "The project is being transfered and removing an environment variable is not possible" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string", + "example": "prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA" + } + }, + { + "name": "id", + "description": "The unique environment variable identifier", + "in": "path", + "required": true, + "schema": { + "description": "The unique environment variable identifier", + "type": "string", + "example": "XMbOEya1gUUO1ir4" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "patch": { + "description": "Edit a specific environment variable for a given project by passing the environment variable identifier and either passing the project `id` or `name` in the URL.", + "operationId": "editProjectEnv", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Edit an environment variable", + "tags": ["projects"], + "responses": { + "200": { + "description": "The environment variable was successfully edited", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "properties": { + "target": { + "oneOf": [ + { + "items": { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + }, + "type": "array" + }, + { + "type": "string", + "enum": ["production", "preview", "development", "preview", "development"] + } + ] + }, + "type": { + "type": "string", + "enum": ["system", "encrypted", "plain", "sensitive", "secret"] + }, + "sunsetSecretId": { + "type": "string", + "description": "This is used to identiy variables that have been migrated from type secret to sensitive." + }, + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "configurationId": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + }, + "createdBy": { + "nullable": true, + "type": "string" + }, + "updatedBy": { + "nullable": true, + "type": "string" + }, + "gitBranch": { + "type": "string" + }, + "edgeConfigId": { + "nullable": true, + "type": "string" + }, + "edgeConfigTokenId": { + "nullable": true, + "type": "string" + }, + "contentHint": { + "nullable": true, + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["redis-rest-api-read-only-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["blob-read-write-token"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-non-pooling"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-prisma-url"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-user"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-host"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-password"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-database"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["postgres-url-no-ssl"] + }, + "storeId": { + "type": "string" + } + }, + "required": ["type", "storeId"], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["integration-store-secret"] + }, + "storeId": { + "type": "string" + }, + "integrationId": { + "type": "string" + }, + "integrationProductId": { + "type": "string" + }, + "integrationConfigurationId": { + "type": "string" + } + }, + "required": [ + "type", + "storeId", + "integrationId", + "integrationProductId", + "integrationConfigurationId" + ], + "type": "object" + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["flags-connection-string"] + }, + "projectId": { + "type": "string" + } + }, + "required": ["type", "projectId"], + "type": "object" + } + ] + }, + "internalContentHint": { + "nullable": true, + "properties": { + "type": { + "type": "string", + "enum": ["flags-secret"] + }, + "encryptedValue": { + "type": "string", + "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." + } + }, + "required": ["type", "encryptedValue"], + "type": "object", + "description": "Similar to `contentHints`, but should not be exposed to the user." + }, + "decrypted": { + "type": "boolean", + "description": "Whether `value` and `vsmValue` are decrypted." + }, + "comment": { + "type": "string" + }, + "customEnvironmentIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["type", "key", "value"], + "type": "object" + }, + { + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "409": { + "description": "The project is being transfered and removing an environment variable is not possible" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string", + "example": "prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA" + } + }, + { + "name": "id", + "description": "The unique environment variable identifier", + "in": "path", + "required": true, + "schema": { + "description": "The unique environment variable identifier", + "type": "string", + "example": "XMbOEya1gUUO1ir4" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "properties": { + "key": { + "description": "The name of the environment variable", + "type": "string", + "example": "GITHUB_APP_ID" + }, + "target": { + "description": "The target environment of the environment variable", + "type": "array", + "items": { + "enum": ["production", "preview", "development"] + }, + "example": ["preview"] + }, + "gitBranch": { + "description": "If defined, the git branch of the environment variable (must have target=preview)", + "type": "string", + "maxLength": 250, + "example": "feature-1", + "nullable": true + }, + "type": { + "description": "The type of environment variable", + "type": "string", + "enum": ["system", "secret", "encrypted", "plain", "sensitive"], + "example": "plain" + }, + "value": { + "description": "The value of the environment variable", + "type": "string", + "example": "bkWIjbnxcvo78" + }, + "customEnvironmentIds": { + "type": "array", + "items": { + "type": "string", + "example": "env_1234567890" + } + }, + "comment": { + "type": "string", + "description": "A comment to add context on what this env var is for", + "example": "database connection string for production", + "maxLength": 500 + } + } + } + } + } + } + } + }, + "/v1/projects/{idOrName}/protection-bypass": { + "patch": { + "description": "Update the deployment protection automation bypass for a project", + "operationId": "updateProjectProtectionBypass", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update Protection Bypass for Automation", + "tags": ["projects"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "protectionBypass": { + "additionalProperties": { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["automation-bypass"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object" + }, + "type": "object" + } + }, + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The unique project identifier or the project name", + "in": "path", + "required": true, + "schema": { + "description": "The unique project identifier or the project name", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "revoke": { + "description": "Optional instructions for revoking and regenerating a automation bypass", + "type": "object", + "properties": { + "secret": { + "description": "Automation bypass to revoked", + "type": "string" + }, + "regenerate": { + "description": "Whether or not a new automation bypass should be created after the provided secret is revoked", + "type": "boolean" + } + }, + "required": ["secret", "regenerate"] + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "/v10/projects/{projectId}/promote/{deploymentId}": { + "post": { + "description": "Allows users to promote a deployment to production. Note: This does NOT rebuild the deployment. If you need that, then call create-deployments endpoint.", + "operationId": "requestPromote", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Points all production domains for a project to the given deploy", + "tags": ["projects"], + "responses": { + "201": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deploymentId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/projects/{projectId}/promote/aliases": { + "get": { + "description": "Get a list of aliases related to the last promote request with their mapping status", + "operationId": "listPromoteAliases", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Gets a list of aliases with status for the current promote", + "tags": ["projects"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object" + }, + { + "properties": { + "aliases": { + "items": { + "properties": { + "status": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": ["status", "alias", "id"], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["aliases", "pagination"], + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "description": "Maximum number of aliases to list from a request (max 100).", + "in": "query", + "required": false, + "schema": { + "description": "Maximum number of aliases to list from a request (max 100).", + "type": "number", + "example": 20, + "maximum": 100 + } + }, + { + "name": "since", + "description": "Get aliases created after this epoch timestamp.", + "in": "query", + "required": false, + "schema": { + "description": "Get aliases created after this epoch timestamp.", + "type": "number", + "example": 1609499532000 + } + }, + { + "name": "until", + "description": "Get aliases created before this epoch timestamp.", + "in": "query", + "required": false, + "schema": { + "description": "Get aliases created before this epoch timestamp.", + "type": "number", + "example": 1612264332000 + } + }, + { + "name": "failedOnly", + "description": "Filter results down to aliases that failed to map to the requested deployment", + "in": "query", + "required": false, + "schema": { + "description": "Filter results down to aliases that failed to map to the requested deployment", + "type": "boolean" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/projects/{projectId}/pause": { + "post": { + "description": "Pause a project by passing its project `id` in the URL. If the project does not exist given the id then the request will fail with 400 status code. If the project disables auto assigning custom production domains and blocks the active Production Deployment then the request will return with 200 status code.", + "operationId": "pauseProject", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Pause a project", + "tags": ["projects"], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "500": { + "description": "" + } + }, + "parameters": [ + { + "name": "projectId", + "description": "The unique project identifier", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The unique project identifier" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/projects/{projectId}/unpause": { + "post": { + "description": "Unpause a project by passing its project `id` in the URL. If the project does not exist given the id then the request will fail with 400 status code. If the project enables auto assigning custom production domains and unblocks the active Production Deployment then the request will return with 200 status code.", + "operationId": "unpauseProject", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Unpause a project", + "tags": ["projects"], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "500": { + "description": "" + } + }, + "parameters": [ + { + "name": "projectId", + "description": "The unique project identifier", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The unique project identifier" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/security/attack-mode": { + "post": { + "description": "Update the setting for determining if the project has Attack Challenge mode enabled.", + "operationId": "updateAttackChallengeMode", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update Attack Challenge mode", + "tags": ["security"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "attackModeEnabled": { + "type": "boolean" + }, + "attackModeUpdatedAt": { + "type": "number" + } + }, + "required": ["attackModeEnabled", "attackModeUpdatedAt"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["projectId", "attackModeEnabled"], + "properties": { + "projectId": { + "type": "string" + }, + "attackModeEnabled": { + "type": "boolean" + }, + "attackModeActiveUntil": { + "type": "number", + "nullable": true + } + } + } + } + } + } + } + }, + "/v1/security/firewall/config": { + "put": { + "description": "Set the firewall configuration to provided rules and settings. Creates or overwrite the existing firewall configuration.", + "operationId": "putFirewallConfig", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Put Firewall Configuration", + "tags": ["security"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "active": { + "properties": { + "ownerId": { + "type": "string" + }, + "projectKey": { + "type": "string" + }, + "id": { + "type": "string" + }, + "version": { + "type": "number" + }, + "updatedAt": { + "type": "string" + }, + "firewallEnabled": { + "type": "boolean" + }, + "crs": { + "properties": { + "sd": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "ma": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "lfi": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "rfi": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "rce": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "php": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "gen": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "xss": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "sqli": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "sf": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "java": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + } + }, + "required": ["sd", "ma", "lfi", "rfi", "rce", "php", "gen", "xss", "sqli", "sf", "java"], + "type": "object" + }, + "rules": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "conditionGroup": { + "items": { + "properties": { + "conditions": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "ip_address", + "protocol", + "region", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id" + ] + }, + "op": { + "type": "string", + "enum": [ + "re", + "eq", + "ex", + "inc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte", + "nex", + "ninc", + "neq" + ] + }, + "neg": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ] + } + }, + "required": ["type", "op"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["conditions"], + "type": "object" + }, + "type": "array" + }, + "action": { + "properties": { + "mitigate": { + "properties": { + "action": { + "type": "string", + "enum": ["deny", "log", "challenge", "bypass", "rate_limit", "redirect"] + }, + "rateLimit": { + "nullable": true, + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "items": { + "type": "string" + }, + "type": "array" + }, + "action": { + "nullable": true, + "type": "string", + "enum": ["deny", "log", "challenge", "rate_limit"] + } + }, + "required": ["algo", "window", "limit", "keys"], + "type": "object" + }, + "redirect": { + "nullable": true, + "properties": { + "location": { + "type": "string" + }, + "permanent": { + "type": "boolean" + } + }, + "required": ["location", "permanent"], + "type": "object" + }, + "actionDuration": { + "nullable": true, + "type": "string" + } + }, + "required": ["action"], + "type": "object" + } + }, + "type": "object" + } + }, + "required": ["id", "name", "active", "conditionGroup", "action"], + "type": "object" + }, + "type": "array" + }, + "ips": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "action": { + "type": "string", + "enum": ["deny", "log", "challenge", "bypass"] + } + }, + "required": ["id", "hostname", "ip", "action"], + "type": "object" + }, + "type": "array" + }, + "changes": { + "items": { + "type": "object" + }, + "type": "array" + }, + "managedRules": { + "properties": { + "owasp": { + "properties": { + "active": { + "type": "boolean" + }, + "updatedAt": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["active"], + "type": "object" + }, + "verifiedBotsBypass": { + "properties": { + "active": { + "type": "boolean" + }, + "updatedAt": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["active"], + "type": "object" + } + }, + "type": "object" + } + }, + "required": [ + "ownerId", + "projectKey", + "id", + "version", + "updatedAt", + "firewallEnabled", + "crs", + "rules", + "ips", + "changes" + ], + "type": "object" + } + }, + "required": ["active"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "500": { + "description": "" + } + }, + "parameters": [ + { + "name": "projectId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "firewallEnabled": { + "type": "boolean" + }, + "managedRules": { + "type": "object", + "properties": { + "owasp": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + } + }, + "required": ["active"], + "additionalProperties": false + } + }, + "required": ["owasp"], + "additionalProperties": false + }, + "crs": { + "type": "object", + "properties": { + "sd": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "ma": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "lfi": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "rfi": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "rce": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "php": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "gen": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "xss": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "sqli": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "sf": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + }, + "java": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string", + "maxLength": 160 + }, + "description": { + "type": "string", + "maxLength": 256 + }, + "active": { + "type": "boolean" + }, + "conditionGroup": { + "type": "array", + "items": { + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "ip_address", + "region", + "protocol", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id" + ] + }, + "op": { + "type": "string", + "enum": [ + "re", + "eq", + "neq", + "ex", + "nex", + "inc", + "ninc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte" + ] + }, + "neg": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "number" + } + ] + } + }, + "required": ["type", "op"], + "additionalProperties": false + } + } + }, + "required": ["conditions"], + "additionalProperties": false + } + }, + "action": { + "type": "object", + "properties": { + "mitigate": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": ["log", "challenge", "deny", "bypass", "rate_limit", "redirect"] + }, + "rateLimit": { + "anyOf": [ + { + "type": "object", + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "action": { + "nullable": true, + "anyOf": [ + { + "type": "string", + "enum": ["log", "challenge", "deny", "rate_limit"] + } + ] + } + }, + "required": ["algo", "window", "limit", "keys"], + "additionalProperties": false, + "nullable": true + } + ] + }, + "redirect": { + "anyOf": [ + { + "type": "object", + "properties": { + "location": { + "type": "string" + }, + "permanent": { + "type": "boolean" + } + }, + "required": ["location", "permanent"], + "additionalProperties": false, + "nullable": true + } + ] + }, + "actionDuration": { + "type": "string", + "nullable": true + } + }, + "required": ["action"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "required": ["name", "active", "conditionGroup", "action"], + "additionalProperties": false + } + }, + "ips": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "action": { + "type": "string", + "enum": ["deny", "challenge", "log", "bypass"] + } + }, + "required": ["hostname", "ip", "action"], + "additionalProperties": false + } + } + }, + "required": ["firewallEnabled"], + "additionalProperties": false + } + } + } + } + }, + "patch": { + "description": "Process updates to modify the existing firewall config for a project", + "operationId": "updateFirewallConfig", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update Firewall Configuration", + "tags": ["security"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "500": { + "description": "" + } + }, + "parameters": [ + { + "name": "projectId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "description": "Enable Firewall", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": ["firewallEnabled"] + }, + "id": { + "type": "string" + }, + "value": { + "type": "boolean" + } + }, + "required": ["action", "value"], + "additionalProperties": false + }, + { + "description": "Add a custom rule", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "rules.insert" + }, + "id": { + "type": "string" + }, + "value": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 160 + }, + "description": { + "type": "string", + "maxLength": 256 + }, + "active": { + "type": "boolean" + }, + "conditionGroup": { + "type": "array", + "items": { + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "ip_address", + "region", + "protocol", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id" + ] + }, + "op": { + "type": "string", + "enum": [ + "re", + "eq", + "neq", + "ex", + "nex", + "inc", + "ninc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte" + ] + }, + "neg": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "number" + } + ] + } + }, + "required": ["type", "op"], + "additionalProperties": false + } + } + }, + "required": ["conditions"], + "additionalProperties": false + } + }, + "action": { + "type": "object", + "properties": { + "mitigate": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": ["log", "challenge", "deny", "bypass", "rate_limit", "redirect"] + }, + "rateLimit": { + "anyOf": [ + { + "type": "object", + "nullable": true, + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "action": { + "anyOf": [ + { + "type": "string", + "nullable": true, + "enum": ["log", "challenge", "deny", "rate_limit"] + } + ] + } + }, + "required": ["algo", "window", "limit", "keys"], + "additionalProperties": false + } + ] + }, + "redirect": { + "anyOf": [ + { + "type": "object", + "nullable": true, + "properties": { + "location": { + "type": "string" + }, + "permanent": { + "type": "boolean" + } + }, + "required": ["location", "permanent"], + "additionalProperties": false + } + ] + }, + "actionDuration": { + "type": "string", + "nullable": true + } + }, + "required": ["action"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "required": ["name", "active", "conditionGroup", "action"], + "additionalProperties": false + } + }, + "required": ["action", "value"], + "additionalProperties": false + }, + { + "description": "Update a custom rule", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "rules.update" + }, + "id": { + "type": "string" + }, + "value": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 160 + }, + "description": { + "type": "string", + "maxLength": 256 + }, + "active": { + "type": "boolean" + }, + "conditionGroup": { + "type": "array", + "items": { + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "ip_address", + "region", + "protocol", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id" + ] + }, + "op": { + "type": "string", + "enum": [ + "re", + "eq", + "neq", + "ex", + "nex", + "inc", + "ninc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte" + ] + }, + "neg": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "number" + } + ] + } + }, + "required": ["type", "op"], + "additionalProperties": false + } + } + }, + "required": ["conditions"], + "additionalProperties": false + } + }, + "action": { + "type": "object", + "properties": { + "mitigate": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": ["log", "challenge", "deny", "bypass", "rate_limit", "redirect"] + }, + "rateLimit": { + "anyOf": [ + { + "type": "object", + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "action": { + "anyOf": [ + { + "type": "string", + "nullable": true, + "enum": ["log", "challenge", "deny", "rate_limit"] + } + ] + } + }, + "required": ["algo", "window", "limit", "keys"], + "additionalProperties": false, + "nullable": true + } + ] + }, + "redirect": { + "anyOf": [ + { + "type": "object", + "properties": { + "location": { + "type": "string" + }, + "permanent": { + "type": "boolean" + } + }, + "required": ["location", "permanent"], + "additionalProperties": false, + "nullable": true + } + ] + }, + "actionDuration": { + "type": "string", + "nullable": true + } + }, + "required": ["action"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "required": ["name", "active", "conditionGroup", "action"], + "additionalProperties": false + } + }, + "required": ["action", "id", "value"], + "additionalProperties": false + }, + { + "description": "Remove a custom rule", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "rules.remove" + }, + "id": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["action", "id"], + "additionalProperties": false + }, + { + "description": "Reorder a custom rule", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "rules.priority" + }, + "id": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "required": ["action", "id", "value"], + "additionalProperties": false + }, + { + "description": "Enable a managed rule", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "crs.update" + }, + "id": { + "type": "string", + "enum": ["sd", "ma", "lfi", "rfi", "rce", "php", "gen", "xss", "sqli", "sf", "java"] + }, + "value": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "additionalProperties": false + } + }, + "required": ["action", "id", "value"], + "additionalProperties": false + }, + { + "description": "Disable a managed rule", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "crs.disable" + }, + "id": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["action"], + "additionalProperties": false + }, + { + "description": "Add an IP Blocking rule", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "ip.insert" + }, + "id": { + "type": "string" + }, + "value": { + "type": "object", + "properties": { + "hostname": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "action": { + "type": "string", + "enum": ["deny", "challenge", "log", "bypass"] + } + }, + "required": ["hostname", "ip", "action"], + "additionalProperties": false + } + }, + "required": ["action", "value"], + "additionalProperties": false + }, + { + "description": "Update an IP Blocking rule", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "ip.update" + }, + "id": { + "type": "string" + }, + "value": { + "type": "object", + "properties": { + "hostname": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "action": { + "type": "string", + "enum": ["deny", "challenge", "log", "bypass"] + } + }, + "required": ["hostname", "ip", "action"], + "additionalProperties": false + } + }, + "required": ["action", "id", "value"], + "additionalProperties": false + }, + { + "description": "Remove an IP Blocking rule", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "ip.remove" + }, + "id": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": ["action", "id"], + "additionalProperties": false + }, + { + "description": "Update a managed ruleset", + "type": "object", + "properties": { + "action": { + "type": "string", + "const": "managedRules.update" + }, + "id": { + "type": "string", + "enum": ["owasp"] + }, + "value": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + } + }, + "required": ["active"], + "additionalProperties": false + } + }, + "required": ["action", "id", "value"], + "additionalProperties": false + } + ] + } + } + } + } + } + }, + "/v1/security/firewall/config/{configVersion}": { + "get": { + "description": "Retreive the specified firewall configuration for a project. The deployed configVersion will be `active`", + "operationId": "getFirewallConfig", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Read Firewall Configuration", + "tags": ["security"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "ownerId": { + "type": "string" + }, + "projectKey": { + "type": "string" + }, + "id": { + "type": "string" + }, + "version": { + "type": "number" + }, + "updatedAt": { + "type": "string" + }, + "firewallEnabled": { + "type": "boolean" + }, + "crs": { + "properties": { + "sd": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "ma": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "lfi": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "rfi": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "rce": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "php": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "gen": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "xss": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "sqli": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "sf": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + }, + "java": { + "properties": { + "active": { + "type": "boolean" + }, + "action": { + "type": "string", + "enum": ["deny", "log"] + } + }, + "required": ["active", "action"], + "type": "object" + } + }, + "required": ["sd", "ma", "lfi", "rfi", "rce", "php", "gen", "xss", "sqli", "sf", "java"], + "type": "object" + }, + "rules": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "conditionGroup": { + "items": { + "properties": { + "conditions": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "ip_address", + "protocol", + "region", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id" + ] + }, + "op": { + "type": "string", + "enum": [ + "re", + "eq", + "ex", + "inc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte", + "nex", + "ninc", + "neq" + ] + }, + "neg": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ] + } + }, + "required": ["type", "op"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["conditions"], + "type": "object" + }, + "type": "array" + }, + "action": { + "properties": { + "mitigate": { + "properties": { + "action": { + "type": "string", + "enum": ["deny", "log", "challenge", "bypass", "rate_limit", "redirect"] + }, + "rateLimit": { + "nullable": true, + "properties": { + "algo": { + "type": "string", + "enum": ["fixed_window", "token_bucket"] + }, + "window": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "keys": { + "items": { + "type": "string" + }, + "type": "array" + }, + "action": { + "nullable": true, + "type": "string", + "enum": ["deny", "log", "challenge", "rate_limit"] + } + }, + "required": ["algo", "window", "limit", "keys"], + "type": "object" + }, + "redirect": { + "nullable": true, + "properties": { + "location": { + "type": "string" + }, + "permanent": { + "type": "boolean" + } + }, + "required": ["location", "permanent"], + "type": "object" + }, + "actionDuration": { + "nullable": true, + "type": "string" + } + }, + "required": ["action"], + "type": "object" + } + }, + "type": "object" + } + }, + "required": ["id", "name", "active", "conditionGroup", "action"], + "type": "object" + }, + "type": "array" + }, + "ips": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "action": { + "type": "string", + "enum": ["deny", "log", "challenge", "bypass"] + } + }, + "required": ["id", "hostname", "ip", "action"], + "type": "object" + }, + "type": "array" + }, + "changes": { + "items": { + "type": "object" + }, + "type": "array" + }, + "managedRules": { + "properties": { + "owasp": { + "properties": { + "active": { + "type": "boolean" + }, + "updatedAt": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["active"], + "type": "object" + }, + "verifiedBotsBypass": { + "properties": { + "active": { + "type": "boolean" + }, + "updatedAt": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["active"], + "type": "object" + } + }, + "type": "object" + } + }, + "required": [ + "ownerId", + "projectKey", + "id", + "version", + "updatedAt", + "firewallEnabled", + "crs", + "rules", + "ips", + "changes" + ], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "in": "path", + "name": "configVersion", + "schema": { + "type": "string" + } + }, + { + "name": "projectId", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v2/teams/{teamId}/members": { + "get": { + "description": "Get a paginated list of team members for the provided team.", + "operationId": "getTeamMembers", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List team members", + "tags": ["teams"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "members": { + "items": { + "properties": { + "avatar": { + "type": "string", + "description": "ID of the file for the Avatar of this member.", + "example": "123a6c5209bc3778245d011443644c8d27dc2c50" + }, + "confirmed": { + "type": "boolean", + "description": "Boolean that indicates if this member was confirmed by an owner.", + "example": true + }, + "email": { + "type": "string", + "description": "The email of this member.", + "example": "jane.doe@example.com" + }, + "github": { + "properties": { + "login": { + "type": "string" + } + }, + "type": "object", + "description": "Information about the GitHub account for this user." + }, + "gitlab": { + "properties": { + "login": { + "type": "string" + } + }, + "type": "object", + "description": "Information about the GitLab account of this user." + }, + "bitbucket": { + "properties": { + "login": { + "type": "string" + } + }, + "type": "object", + "description": "Information about the Bitbucket account of this user." + }, + "role": { + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "VIEWER", "BILLING", "CONTRIBUTOR"], + "description": "Role of this user in the team.", + "example": "OWNER" + }, + "uid": { + "type": "string", + "description": "The ID of this user.", + "example": "zTuNVUXEAvvnNN3IaqinkyMw" + }, + "username": { + "type": "string", + "description": "The unique username of this user.", + "example": "jane-doe" + }, + "name": { + "type": "string", + "description": "The name of this user.", + "example": "Jane Doe" + }, + "createdAt": { + "type": "number", + "description": "Timestamp in milliseconds when this member was added.", + "example": 1588720733602 + }, + "accessRequestedAt": { + "type": "number", + "description": "Timestamp in milliseconds for when this team member was accepted by an owner.", + "example": 1588820733602 + }, + "joinedFrom": { + "properties": { + "origin": { + "type": "string", + "enum": [ + "teams", + "link", + "mail", + "import", + "github", + "gitlab", + "bitbucket", + "saml", + "dsync", + "feedback", + "organization-teams" + ] + }, + "commitId": { + "type": "string" + }, + "repoId": { + "type": "string" + }, + "repoPath": { + "type": "string" + }, + "gitUserId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "gitUserLogin": { + "type": "string" + }, + "ssoUserId": { + "type": "string" + }, + "ssoConnectedAt": { + "type": "number" + }, + "idpUserId": { + "type": "string" + }, + "dsyncUserId": { + "type": "string" + }, + "dsyncConnectedAt": { + "type": "number" + } + }, + "required": ["origin"], + "type": "object", + "description": "Map with information about the members origin if they joined by requesting access." + }, + "projects": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "role": { + "type": "string", + "enum": ["ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER"] + } + }, + "type": "object", + "description": "Array of project memberships" + }, + "type": "array", + "description": "Array of project memberships" + } + }, + "required": ["confirmed", "email", "role", "uid", "username", "createdAt"], + "type": "object" + }, + "type": "array" + }, + "emailInviteCodes": { + "items": { + "properties": { + "accessGroups": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "email": { + "type": "string" + }, + "role": { + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "VIEWER", "BILLING", "CONTRIBUTOR"] + }, + "isDSyncUser": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "expired": { + "type": "boolean" + }, + "projects": { + "additionalProperties": { + "type": "string", + "enum": ["ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER"] + }, + "type": "object" + } + }, + "required": ["id", "isDSyncUser"], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "properties": { + "hasNext": { + "type": "boolean" + }, + "count": { + "type": "number", + "description": "Amount of items in the current page.", + "example": 20 + }, + "next": { + "nullable": true, + "type": "number", + "description": "Timestamp that must be used to request the next page.", + "example": 1540095775951 + }, + "prev": { + "nullable": true, + "type": "number", + "description": "Timestamp that must be used to request the previous page.", + "example": 1540095775951 + } + }, + "required": ["hasNext", "count", "next", "prev"], + "type": "object" + } + }, + "required": ["members", "pagination"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "No team was found." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "description": "Limit how many teams should be returned", + "in": "query", + "required": false, + "schema": { + "description": "Limit how many teams should be returned", + "example": 20, + "minimum": 1, + "type": "number" + } + }, + { + "name": "since", + "description": "Timestamp in milliseconds to only include members added since then.", + "in": "query", + "required": false, + "schema": { + "description": "Timestamp in milliseconds to only include members added since then.", + "example": 1540095775951, + "type": "number" + } + }, + { + "name": "until", + "description": "Timestamp in milliseconds to only include members added until then.", + "in": "query", + "required": false, + "schema": { + "description": "Timestamp in milliseconds to only include members added until then.", + "example": 1540095775951, + "type": "number" + } + }, + { + "name": "search", + "description": "Search team members by their name, username, and email.", + "in": "query", + "required": false, + "schema": { + "description": "Search team members by their name, username, and email.", + "type": "string" + } + }, + { + "name": "role", + "description": "Only return members with the specified team role.", + "in": "query", + "required": false, + "schema": { + "description": "Only return members with the specified team role.", + "example": "OWNER", + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "VIEWER", "BILLING", "CONTRIBUTOR"] + } + }, + { + "name": "excludeProject", + "description": "Exclude members who belong to the specified project.", + "in": "query", + "required": false, + "schema": { + "description": "Exclude members who belong to the specified project.", + "type": "string" + } + }, + { + "name": "eligibleMembersForProjectId", + "description": "Include team members who are eligible to be members of the specified project.", + "in": "query", + "required": false, + "schema": { + "description": "Include team members who are eligible to be members of the specified project.", + "type": "string" + } + } + ] + } + }, + "/v1/teams/{teamId}/members": { + "post": { + "description": "Invite a user to join the team specified in the URL. The authenticated user needs to be an `OWNER` in order to successfully invoke this endpoint. The user can be specified with an email or an ID. If both email and ID are provided, ID will take priority.", + "operationId": "inviteUserToTeam", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Invite a user", + "tags": ["teams"], + "responses": { + "200": { + "description": "The member was successfully added to the team", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "properties": { + "uid": { + "type": "string", + "description": "The ID of the invited user", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "username": { + "type": "string", + "description": "The username of the invited user", + "example": "john-doe" + }, + "email": { + "type": "string", + "description": "The email of the invited user. Not included if the user was invited via their UID.", + "example": "john@user.co" + }, + "role": { + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "BILLING", "VIEWER", "CONTRIBUTOR"], + "description": "The role used for the invitation", + "example": "MEMBER" + } + }, + "required": ["uid", "username", "role"], + "type": "object", + "description": "The member was successfully added to the team" + }, + { + "properties": { + "uid": { + "type": "string" + }, + "username": { + "type": "string" + }, + "role": { + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "BILLING", "VIEWER", "CONTRIBUTOR"] + } + }, + "required": ["uid", "username", "role"], + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nThe user already requested access to the team\nHobby teams are not allowed to add seats.\nThe team reached the maximum allowed amount of members" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource.\nThe authenticated user must be a team owner to perform the action" + }, + "404": { + "description": "The team was not found" + }, + "503": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "description": "The id of the user to invite", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf" + }, + "email": { + "type": "string", + "format": "email", + "description": "The email address of the user to invite", + "example": "john@example.com" + }, + "role": { + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "BILLING", "VIEWER", "CONTRIBUTOR"], + "default": ["MEMBER", "VIEWER"], + "description": "The role of the user to invite", + "example": ["MEMBER", "VIEWER"] + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["role", "projectId"], + "properties": { + "projectId": { + "type": "string", + "maxLength": 64, + "example": "prj_ndlgr43fadlPyCtREAqxxdyFK", + "description": "The ID of the project." + }, + "role": { + "type": "string", + "enum": ["ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER"], + "example": "ADMIN", + "description": "Sets the project roles for the invited user" + } + } + } + } + } + } + } + } + } + } + }, + "/v1/teams/{teamId}/request": { + "post": { + "description": "Request access to a team as a member. An owner has to approve the request. Only 10 users can request access to a team at the same time.", + "operationId": "requestAccessToTeam", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Request access to a team", + "tags": ["teams"], + "responses": { + "200": { + "description": "Successfuly requested access to the team.", + "content": { + "application/json": { + "schema": { + "properties": { + "teamSlug": { + "type": "string" + }, + "teamName": { + "type": "string" + }, + "confirmed": { + "type": "boolean" + }, + "joinedFrom": { + "properties": { + "origin": { + "type": "string", + "enum": [ + "import", + "teams", + "github", + "gitlab", + "bitbucket", + "feedback", + "organization-teams", + "mail", + "link", + "saml", + "dsync" + ] + }, + "commitId": { + "type": "string" + }, + "repoId": { + "type": "string" + }, + "repoPath": { + "type": "string" + }, + "gitUserId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "gitUserLogin": { + "type": "string" + }, + "ssoUserId": { + "type": "string" + }, + "ssoConnectedAt": { + "type": "number" + }, + "idpUserId": { + "type": "string" + }, + "dsyncUserId": { + "type": "string" + }, + "dsyncConnectedAt": { + "type": "number" + } + }, + "required": ["origin"], + "type": "object" + }, + "accessRequestedAt": { + "type": "number" + }, + "github": { + "nullable": true, + "properties": { + "login": { + "type": "string" + } + }, + "type": "object" + }, + "gitlab": { + "nullable": true, + "properties": { + "login": { + "type": "string" + } + }, + "type": "object" + }, + "bitbucket": { + "nullable": true, + "properties": { + "login": { + "type": "string" + } + }, + "type": "object" + } + }, + "required": ["teamSlug", "teamName", "github", "gitlab", "bitbucket"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The team was not found." + }, + "503": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["joinedFrom"], + "properties": { + "joinedFrom": { + "type": "object", + "additionalProperties": false, + "required": ["origin"], + "properties": { + "origin": { + "type": "string", + "enum": ["import", "teams", "github", "gitlab", "bitbucket", "feedback", "organization-teams"], + "description": "The origin of the request.", + "example": "github" + }, + "commitId": { + "type": "string", + "description": "The commit sha if the origin is a git provider.", + "example": "f498d25d8bd654b578716203be73084b31130cd7" + }, + "repoId": { + "type": "string", + "description": "The ID of the repository for the given Git provider.", + "example": "67753070" + }, + "repoPath": { + "type": "string", + "description": "The path to the repository for the given Git provider.", + "example": "jane-doe/example" + }, + "gitUserId": { + "description": "The ID of the Git account of the user who requests access.", + "example": 103053343, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "gitUserLogin": { + "type": "string", + "description": "The login name for the Git account of the user who requests access.", + "example": "jane-doe" + } + } + } + } + } + } + } + } + } + }, + "/v1/teams/{teamId}/request/{userId}": { + "get": { + "description": "Check the status of a join request. It'll respond with a 404 if the request has been declined. If no `userId` path segment was provided, this endpoint will instead return the status of the authenticated user.", + "operationId": "getTeamAccessRequest", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get access request status", + "tags": ["teams"], + "responses": { + "200": { + "description": "Successfully", + "content": { + "application/json": { + "schema": { + "properties": { + "teamSlug": { + "type": "string", + "description": "The slug of the team.", + "example": "my-team" + }, + "teamName": { + "type": "string", + "description": "The name of the team.", + "example": "My Team" + }, + "confirmed": { + "type": "boolean", + "description": "Current status of the membership. Will be `true` if confirmed, if pending it'll be `false`.", + "example": false + }, + "joinedFrom": { + "properties": { + "origin": { + "type": "string", + "enum": [ + "mail", + "link", + "import", + "teams", + "github", + "gitlab", + "bitbucket", + "saml", + "dsync", + "feedback", + "organization-teams" + ] + }, + "commitId": { + "type": "string" + }, + "repoId": { + "type": "string" + }, + "repoPath": { + "type": "string" + }, + "gitUserId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "gitUserLogin": { + "type": "string" + }, + "ssoUserId": { + "type": "string" + }, + "ssoConnectedAt": { + "type": "number" + }, + "idpUserId": { + "type": "string" + }, + "dsyncUserId": { + "type": "string" + }, + "dsyncConnectedAt": { + "type": "number" + } + }, + "required": ["origin"], + "type": "object", + "description": "A map that describes the origin from where the user joined." + }, + "accessRequestedAt": { + "type": "number", + "description": "Timestamp in milliseconds when the user requested access to the team.", + "example": 1588720733602 + }, + "github": { + "nullable": true, + "properties": { + "login": { + "type": "string" + } + }, + "type": "object", + "description": "Map of the connected GitHub account." + }, + "gitlab": { + "nullable": true, + "properties": { + "login": { + "type": "string" + } + }, + "type": "object", + "description": "Map of the connected GitLab account." + }, + "bitbucket": { + "nullable": true, + "properties": { + "login": { + "type": "string" + } + }, + "type": "object", + "description": "Map of the connected Bitbucket account." + } + }, + "required": [ + "teamSlug", + "teamName", + "confirmed", + "joinedFrom", + "accessRequestedAt", + "github", + "gitlab", + "bitbucket" + ], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid.\nUser is already a confirmed member of the team and did not request access. Only visible when the authenticated user does have access to the team." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The provided user doesn't have a membership.\nTeam was not found." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "name": "userId", + "in": "path", + "required": false, + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/teams/{teamId}/members/teams/join": { + "post": { + "description": "Join a team with a provided invite code or team ID.", + "operationId": "joinTeam", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Join a team", + "tags": ["teams"], + "responses": { + "200": { + "description": "Successfully joined a team.", + "content": { + "application/json": { + "schema": { + "properties": { + "teamId": { + "type": "string", + "description": "The ID of the team the user joined.", + "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" + }, + "slug": { + "type": "string", + "description": "The slug of the team the user joined.", + "example": "my-team" + }, + "name": { + "type": "string", + "description": "The name of the team the user joined.", + "example": "My Team" + }, + "from": { + "type": "string", + "description": "The origin of how the user joined.", + "example": "email" + } + }, + "required": ["teamId", "slug", "name", "from"], + "type": "object", + "description": "Successfully joined a team." + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "inviteCode": { + "type": "string", + "description": "The invite code to join the team.", + "example": "fisdh38aejkeivn34nslfore9vjtn4ls" + } + } + } + } + } + } + } + }, + "/v1/teams/{teamId}/members/{uid}": { + "patch": { + "description": "Update the membership of a Team Member on the Team specified by `teamId`, such as changing the _role_ of the member, or confirming a request to join the Team for an unconfirmed member. The authenticated user must be an `OWNER` of the Team.", + "operationId": "updateTeamMember", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update a Team Member", + "tags": ["teams"], + "responses": { + "200": { + "description": "Successfully updated the membership.", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string", + "description": "ID of the team." + } + }, + "required": ["id"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nCannot disconnect SSO from a Team member that does not have a SSO connection.\nCannot confirm a member that is already confirmed.\nCannot confirm a member that did not request access." + }, + "401": { + "description": "Team members can only be updated by an owner, or by the authenticated user if they are only disconnecting their SAML connection to the Team." + }, + "402": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The provided user is not part of this team.\nA user with the specified ID does not exist.\nTeam not found." + }, + "500": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "name": "uid", + "description": "The ID of the member.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The ID of the member.", + "example": "ndfasllgPyCtREAqxxdyFKb" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "confirmed": { + "type": "boolean", + "enum": [true], + "description": "Accept a user who requested access to the team.", + "example": true + }, + "role": { + "type": "string", + "description": "The role in the team of the member.", + "default": ["MEMBER", "VIEWER"], + "example": ["MEMBER", "VIEWER"] + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["role", "projectId"], + "properties": { + "projectId": { + "type": "string", + "maxLength": 256, + "example": "prj_ndlgr43fadlPyCtREAqxxdyFK", + "description": "The ID of the project." + }, + "role": { + "type": "string", + "enum": ["ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER", null], + "example": "ADMIN", + "description": "The project role of the member that will be added. \\\"null\\\" will remove this project level role.", + "nullable": true + } + } + } + }, + "joinedFrom": { + "additionalProperties": false, + "type": "object", + "properties": { + "ssoUserId": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "delete": { + "description": "Remove a Team Member from the Team, or dismiss a user that requested access, or leave a team.", + "operationId": "removeTeamMember", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Remove a Team Member", + "tags": ["teams"], + "responses": { + "200": { + "description": "Successfully removed a member of the team.", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string", + "description": "ID of the team." + } + }, + "required": ["id"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid.\nCannot leave the team as the only owner." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource.\nNot authorized to update the team." + }, + "404": { + "description": "A user with the specified ID does not exist.\nNo team found." + }, + "503": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "name": "uid", + "description": "The user ID of the member.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The user ID of the member.", + "example": "ndlgr43fadlPyCtREAqxxdyFK" + } + }, + { + "name": "newDefaultTeamId", + "description": "The ID of the team to set as the new default team for the Northstar user.", + "in": "query", + "required": false, + "schema": { + "type": "string", + "description": "The ID of the team to set as the new default team for the Northstar user.", + "example": "team_nllPyCtREAqxxdyFKbbMDlxd" + } + } + ] + } + }, + "/v2/teams/{teamId}": { + "get": { + "description": "Get information for the Team specified by the `teamId` parameter.", + "operationId": "getTeam", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get a Team", + "tags": ["teams"], + "responses": { + "200": { + "description": "The requested team", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Team" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource.\nNot authorized to access the team." + }, + "404": { + "description": "Team was not found." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "name": "slug", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + }, + "required": false + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "patch": { + "description": "Update the information of a Team specified by the `teamId` parameter. The request body should contain the information that will be updated on the Team.", + "operationId": "patchTeam", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Update a Team", + "tags": ["teams"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Team" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource.\nNot authorized to update the team. Must be an OWNER." + }, + "404": { + "description": "Team was not found." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + }, + "required": true + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "properties": { + "avatar": { + "type": "string", + "format": "regex", + "regex": "^[0-9a-f]{40}$", + "description": "The hash value of an uploaded image." + }, + "description": { + "type": "string", + "maxLength": 140, + "example": "Our mission is to make cloud computing accessible to everyone", + "description": "A short text that describes the team." + }, + "emailDomain": { + "type": "string", + "format": "regex", + "regex": "\\\\b((?=[a-z0-9-]{1,63}\\\\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\\\\.)+[a-z]{2,63}\\\\b", + "example": "example.com", + "nullable": true + }, + "name": { + "type": "string", + "maxLength": 256, + "example": "My Team", + "description": "The name of the team." + }, + "previewDeploymentSuffix": { + "type": "string", + "format": "hostname", + "example": "example.dev", + "description": "Suffix that will be used for all preview deployments.", + "nullable": true + }, + "regenerateInviteCode": { + "type": "boolean", + "example": true, + "description": "Create a new invite code and replace the current one." + }, + "saml": { + "type": "object", + "additionalProperties": false, + "properties": { + "enforced": { + "type": "boolean", + "example": true, + "description": "Require that members of the team use SAML Single Sign-On." + }, + "roles": { + "type": "object", + "description": "Directory groups to role or access group mappings.", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "BILLING", "VIEWER", "CONTRIBUTOR"] + }, + { + "type": "object", + "additionalProperties": false, + "required": ["accessGroupId"], + "properties": { + "accessGroupId": { + "type": "string", + "pattern": "^ag_[A-z0-9_ -]+$" + } + } + } + ] + } + } + } + }, + "slug": { + "type": "string", + "example": "my-team", + "description": "A new slug for the team." + }, + "enablePreviewFeedback": { + "type": "string", + "example": "on", + "description": "Enable preview toolbar: one of on, off or default." + }, + "enableProductionFeedback": { + "type": "string", + "example": "on", + "description": "Enable production toolbar: one of on, off or default." + }, + "sensitiveEnvironmentVariablePolicy": { + "type": "string", + "example": "on", + "description": "Sensitive environment variable policy: one of on, off or default." + }, + "remoteCaching": { + "type": "object", + "description": "Whether or not remote caching is enabled for the team", + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean", + "example": true, + "description": "Enable or disable remote caching for the team." + } + } + }, + "hideIpAddresses": { + "type": "boolean", + "example": false, + "description": "Display or hide IP addresses in Monitoring queries." + } + } + } + } + } + } + } + }, + "/v2/teams": { + "get": { + "description": "Get a paginated list of all the Teams the authenticated User is a member of.", + "operationId": "getTeams", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List all teams", + "tags": ["teams"], + "responses": { + "200": { + "description": "A paginated list of teams.", + "content": { + "application/json": { + "schema": { + "properties": { + "teams": { + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/Team" + }, + { + "$ref": "#/components/schemas/TeamLimited" + } + ] + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["teams", "pagination"], + "type": "object", + "description": "A paginated list of teams." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "limit", + "description": "Maximum number of Teams which may be returned.", + "in": "query", + "schema": { + "description": "Maximum number of Teams which may be returned.", + "example": 20, + "type": "number" + } + }, + { + "name": "since", + "description": "Timestamp (in milliseconds) to only include Teams created since then.", + "in": "query", + "schema": { + "description": "Timestamp (in milliseconds) to only include Teams created since then.", + "example": 1540095775951, + "type": "number" + } + }, + { + "name": "until", + "description": "Timestamp (in milliseconds) to only include Teams created until then.", + "in": "query", + "schema": { + "description": "Timestamp (in milliseconds) to only include Teams created until then.", + "example": 1540095775951, + "type": "number" + } + } + ] + } + }, + "/v1/teams": { + "post": { + "description": "Create a new Team under your account. You need to send a POST request with the desired Team slug, and optionally the Team name.", + "operationId": "createTeam", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Create a Team", + "tags": ["teams"], + "responses": { + "200": { + "description": "The team was created successfully", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string", + "description": "Id of the created team", + "example": "team_nLlpyC6RE1qxqglFKbrMxlud" + }, + "slug": { + "type": "string" + }, + "billing": { + "properties": { + "currency": { + "type": "string", + "enum": ["usd", "eur"] + }, + "cancelation": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "contract": { + "nullable": true, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "planIteration": { + "type": "string" + }, + "platform": { + "type": "string", + "enum": ["stripe", "stripeTestMode"] + }, + "orbCustomerId": { + "type": "string" + }, + "syncedAt": { + "type": "number" + }, + "programType": { + "type": "string", + "enum": ["startup", "agency"] + }, + "trial": { + "nullable": true, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "email": { + "nullable": true, + "type": "string" + }, + "tax": { + "nullable": true, + "properties": { + "type": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": ["type", "id"], + "type": "object" + }, + "language": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "properties": { + "line1": { + "type": "string" + }, + "line2": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "nullable": true, + "type": "string" + }, + "invoiceItems": { + "nullable": true, + "properties": { + "pro": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "enterprise": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "analytics": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "concurrentBuilds": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "developerExperiencePlatform": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "enhancedConcurrentBuilds": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "includedAllocationMiu": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "managedInfrastructureCommitment": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "monitoring": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "passwordProtection": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "previewDeploymentSuffix": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "saml": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "teamSeats": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "vercelMarketplace": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "webAnalytics": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [6, 2, 1, 3, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "analyticsUsage": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "artifacts": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "bandwidth": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobStores": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobTotalAdvancedRequests": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobTotalAvgSizeInBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobTotalGetResponseObjectSizeInBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobTotalSimpleRequests": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "buildMinute": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "dataCacheRead": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "dataCacheRevalidation": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "dataCacheWrite": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeConfigRead": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeConfigWrite": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeFunctionExecutionUnits": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeMiddlewareInvocations": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeRequest": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeRequestAdditionalCpuDuration": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "fastDataTransfer": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "fastOriginTransfer": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "functionDuration": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "functionInvocation": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "logDrainsVolume": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "monitoringMetric": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresComputeTime": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresDataStorage": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresDataTransfer": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresDatabase": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresWrittenData": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "serverlessFunctionExecution": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "sourceImages": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "storageRedisTotalBandwidthInBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "storageRedisTotalCommands": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "storageRedisTotalDailyAvgStorageInBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "storageRedisTotalDatabases": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "wafOwaspExcessBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "wafOwaspRequests": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "wafRateLimitRequest": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "webAnalyticsEvent": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + } + }, + "type": "object" + }, + "invoiceSettings": { + "properties": { + "footer": { + "type": "string" + } + }, + "type": "object" + }, + "subscriptions": { + "nullable": true, + "items": { + "properties": { + "id": { + "type": "string" + }, + "trial": { + "nullable": true, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "period": { + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month", "day", "week", "year"] + }, + "intervalCount": { + "type": "number" + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "discount": { + "nullable": true, + "properties": { + "id": { + "type": "string" + }, + "coupon": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "amountOff": { + "nullable": true, + "type": "number" + }, + "percentageOff": { + "nullable": true, + "type": "number" + }, + "durationInMonths": { + "nullable": true, + "type": "number" + }, + "duration": { + "type": "string", + "enum": ["forever", "repeating", "once"] + } + }, + "required": [ + "id", + "name", + "amountOff", + "percentageOff", + "durationInMonths", + "duration" + ], + "type": "object" + } + }, + "required": ["id", "coupon"], + "type": "object" + }, + "items": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "priceId": { + "type": "string" + }, + "productId": { + "type": "string" + }, + "amount": { + "type": "number" + }, + "quantity": { + "type": "number" + } + }, + "required": ["id", "priceId", "productId", "amount", "quantity"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["id", "trial", "period", "frequency", "discount", "items"], + "type": "object" + }, + "type": "array" + }, + "controls": { + "nullable": true, + "properties": { + "analyticsSampleRateInPercent": { + "nullable": true, + "type": "number" + }, + "analyticsSpendLimitInDollars": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "purchaseOrder": { + "nullable": true, + "type": "string" + }, + "status": { + "type": "string", + "enum": ["active", "trialing", "overdue", "expired", "canceled"] + }, + "pricingExperiment": { + "type": "string", + "enum": ["august-2022"] + }, + "orbMigrationScheduledAt": { + "nullable": true, + "type": "number" + }, + "forceOrbMigration": { + "nullable": true, + "type": "boolean" + }, + "awsMarketplace": { + "nullable": true, + "properties": { + "productCode": { + "type": "string" + }, + "offerId": { + "type": "string" + }, + "customerId": { + "type": "string" + } + }, + "required": ["productCode", "customerId"], + "type": "object" + }, + "reseller": { + "type": "string" + } + }, + "required": ["period", "plan"], + "type": "object", + "description": "IMPORTANT: If extending Billing, particularly with optional fields, make sure you also update `sync-orb-subscription-to-owner.ts` to handle the items when the object is recreated." + } + }, + "required": ["id", "slug", "billing"], + "type": "object", + "description": "The team was created successfully" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nThe slug is already in use" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["slug"], + "properties": { + "slug": { + "example": "a-random-team", + "description": "The desired slug for the Team", + "type": "string", + "maxLength": 48 + }, + "name": { + "example": "A Random Team", + "description": "The desired name for the Team. It will be generated from the provided slug if nothing is provided", + "type": "string", + "maxLength": 256 + }, + "attribution": { + "type": "object", + "description": "Attribution information for the session or current page", + "properties": { + "sessionReferrer": { + "type": "string", + "description": "Session referrer" + }, + "landingPage": { + "type": "string", + "description": "Session landing page" + }, + "pageBeforeConversionPage": { + "type": "string", + "description": "Referrer to the signup page" + }, + "utm": { + "type": "object", + "properties": { + "utmSource": { + "type": "string", + "description": "UTM source" + }, + "utmMedium": { + "type": "string", + "description": "UTM medium" + }, + "utmCampaign": { + "type": "string", + "description": "UTM campaign" + }, + "utmTerm": { + "type": "string", + "description": "UTM term" + } + } + } + } + } + } + } + } + } + } + } + }, + "/v1/teams/{teamId}": { + "delete": { + "description": "Delete a team under your account. You need to send a `DELETE` request with the desired team `id`. An optional array of reasons for deletion may also be sent.", + "operationId": "deleteTeam", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete a Team", + "tags": ["teams"], + "responses": { + "200": { + "description": "The Team was successfully deleted", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Team", + "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" + }, + "newDefaultTeamIdError": { + "type": "boolean", + "description": "Signifies whether the default team update has failed, when newDefaultTeamId is provided in request query.", + "example": true + } + }, + "required": ["id"], + "type": "object", + "description": "The Team was successfully deleted" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource.\nThe authenticated user can't access the team" + }, + "404": { + "description": "The team was not found" + }, + "409": { + "description": "" + } + }, + "parameters": [ + { + "name": "newDefaultTeamId", + "description": "Id of the team to be set as the new default team", + "in": "query", + "required": false, + "schema": { + "type": "string", + "description": "Id of the team to be set as the new default team", + "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + }, + "required": true + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "properties": { + "reasons": { + "type": "array", + "description": "Optional array of objects that describe the reason why the team is being deleted.", + "items": { + "type": "object", + "description": "An object describing the reason why the team is being deleted.", + "required": ["slug", "description"], + "additionalProperties": false, + "properties": { + "slug": { + "type": "string", + "description": "Idenitifier slug of the reason why the team is being deleted." + }, + "description": { + "type": "string", + "description": "Description of the reason why the team is being deleted." + } + } + } + } + } + } + } + } + } + } + }, + "/v1/teams/{teamId}/invites/{inviteId}": { + "delete": { + "description": "Delete an active Team invite code.", + "operationId": "deleteTeamInviteCode", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete a Team invite code", + "tags": ["teams"], + "responses": { + "200": { + "description": "Successfully deleted Team invite code.", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string", + "description": "ID of the team." + } + }, + "required": ["id"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource.\nInvite managed by directory sync\nNot authorized to access this team." + }, + "404": { + "description": "Team invite code not found.\nNo team found." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "path", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "name": "inviteId", + "description": "The Team invite code ID.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The Team invite code ID.", + "example": "2wn2hudbr4chb1ecywo9dvzo7g9sscs6mzcz8htdde0txyom4l" + } + } + ] + } + }, + "/v2/files": { + "post": { + "description": "Before you create a deployment you need to upload the required files for that deployment. To do it, you need to first upload each file to this endpoint. Once that's completed, you can create a new deployment with the uploaded files. The file content must be placed inside the body of the request. In the case of a successful response you'll receive a status code 200 with an empty body.", + "operationId": "uploadFile", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Upload Deployment Files", + "tags": ["deployments"], + "responses": { + "200": { + "description": "File already uploaded\nFile successfully uploaded", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "properties": { + "urls": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Array of URLs where the file was updated", + "example": ["example-upload.aws.com"] + } + }, + "required": ["urls"], + "type": "object" + }, + { + "type": "object" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the headers is invalid\nDigest is not valid\nFile size is not valid" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "in": "header", + "description": "The file size in bytes", + "schema": { + "description": "The file size in bytes", + "type": "number" + }, + "name": "Content-Length" + }, + { + "in": "header", + "description": "The file SHA1 used to check the integrity", + "schema": { + "type": "string", + "description": "The file SHA1 used to check the integrity", + "maxLength": 40 + }, + "name": "x-vercel-digest" + }, + { + "in": "header", + "description": "The file SHA1 used to check the integrity", + "schema": { + "deprecated": true, + "type": "string", + "description": "The file SHA1 used to check the integrity", + "maxLength": 40 + }, + "name": "x-now-digest" + }, + { + "in": "header", + "description": "The file size as an alternative to `Content-Length`", + "schema": { + "type": "number", + "deprecated": true, + "description": "The file size as an alternative to `Content-Length`" + }, + "name": "x-now-size" + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v2/user": { + "get": { + "description": "Retrieves information related to the currently authenticated User.", + "operationId": "getAuthUser", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get the User", + "tags": ["user"], + "responses": { + "200": { + "description": "Successful response.", + "content": { + "application/json": { + "schema": { + "properties": { + "user": { + "oneOf": [ + { + "$ref": "#/components/schemas/AuthUser" + }, + { + "$ref": "#/components/schemas/AuthUserLimited" + } + ] + } + }, + "required": ["user"], + "type": "object", + "description": "Successful response." + } + } + } + }, + "302": { + "description": "" + }, + "400": { + "description": "" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "409": { + "description": "" + } + }, + "parameters": [] + } + }, + "/v1/user": { + "delete": { + "description": "Initiates the deletion process for the currently authenticated User, by sending a deletion confirmation email. The email contains a link that the user needs to visit in order to proceed with the deletion process.", + "operationId": "requestDelete", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete User Account", + "tags": ["user"], + "responses": { + "202": { + "description": "Response indicating that the User deletion process has been initiated, and a confirmation email has been sent.", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the User who has initiated deletion." + }, + "email": { + "type": "string", + "description": "Email address of the User who has initiated deletion." + }, + "message": { + "type": "string", + "description": "User deletion progress status.", + "example": "Verification email sent" + } + }, + "required": ["id", "email", "message"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "properties": { + "reasons": { + "type": "array", + "description": "Optional array of objects that describe the reason why the User account is being deleted.", + "items": { + "type": "object", + "description": "An object describing the reason why the User account is being deleted.", + "required": ["slug", "description"], + "additionalProperties": false, + "properties": { + "slug": { + "type": "string", + "description": "Idenitifier slug of the reason why the User account is being deleted." + }, + "description": { + "type": "string", + "description": "Description of the reason why the User account is being deleted." + } + } + } + } + } + } + } + } + } + } + }, + "/v5/user/tokens": { + "get": { + "description": "Retrieve a list of the current User's authentication tokens.", + "operationId": "listAuthTokens", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List Auth Tokens", + "tags": ["authentication"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "tokens": { + "items": { + "$ref": "#/components/schemas/AuthToken" + }, + "type": "array" + }, + "testingToken": { + "$ref": "#/components/schemas/AuthToken" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["tokens", "pagination"], + "type": "object" + } + } + } + }, + "400": { + "description": "" + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [] + } + }, + "/v3/user/tokens": { + "post": { + "description": "Creates and returns a new authentication token for the currently authenticated User. The `bearerToken` property is only provided once, in the response body, so be sure to save it on the client for use with API requests.", + "operationId": "createAuthToken", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Create an Auth Token", + "tags": ["authentication"], + "responses": { + "200": { + "description": "Successful response.", + "content": { + "application/json": { + "schema": { + "properties": { + "token": { + "$ref": "#/components/schemas/AuthToken" + }, + "bearerToken": { + "type": "string", + "description": "The authentication token's actual value. This token is only provided in this response, and can never be retrieved again in the future. Be sure to save it somewhere safe!", + "example": "uRKJSTt0L4RaSkiMj41QTkxM" + } + }, + "required": ["token", "bearerToken"], + "type": "object", + "description": "Successful response." + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "name": { + "type": "string" + }, + "expiresAt": { + "type": "number" + } + } + } + } + } + } + } + }, + "/v5/user/tokens/{tokenId}": { + "get": { + "description": "Retrieve metadata about an authentication token belonging to the currently authenticated User.", + "operationId": "getAuthToken", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get Auth Token Metadata", + "tags": ["authentication"], + "responses": { + "200": { + "description": "Successful response.", + "content": { + "application/json": { + "schema": { + "properties": { + "token": { + "$ref": "#/components/schemas/AuthToken" + } + }, + "required": ["token"], + "type": "object", + "description": "Successful response." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "Token not found with the requested `tokenId`." + } + }, + "parameters": [ + { + "name": "tokenId", + "description": "The identifier of the token to retrieve. The special value \\\"current\\\" may be supplied, which returns the metadata for the token that the current HTTP request is authenticated with.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The identifier of the token to retrieve. The special value \\\"current\\\" may be supplied, which returns the metadata for the token that the current HTTP request is authenticated with.", + "example": "5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391" + } + } + ] + } + }, + "/v3/user/tokens/{tokenId}": { + "delete": { + "description": "Invalidate an authentication token, such that it will no longer be valid for future HTTP requests.", + "operationId": "deleteAuthToken", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete an authentication token", + "tags": ["authentication"], + "responses": { + "200": { + "description": "Authentication token successfully deleted.", + "content": { + "application/json": { + "schema": { + "properties": { + "tokenId": { + "type": "string", + "description": "The unique identifier of the token that was deleted.", + "example": "5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391" + } + }, + "required": ["tokenId"], + "type": "object", + "description": "Authentication token successfully deleted." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "Token not found with the requested `tokenId`." + } + }, + "parameters": [ + { + "name": "tokenId", + "description": "The identifier of the token to invalidate. The special value \\\"current\\\" may be supplied, which invalidates the token that the HTTP request was authenticated with.", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The identifier of the token to invalidate. The special value \\\"current\\\" may be supplied, which invalidates the token that the HTTP request was authenticated with.", + "example": "5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391" + } + } + ] + } + }, + "/v1/webhooks": { + "post": { + "description": "Creates a webhook", + "operationId": "createWebhook", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Creates a webhook", + "tags": ["webhooks"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "secret": { + "type": "string", + "description": "The webhook secret used to sign the payload" + }, + "events": { + "items": { + "type": "string", + "enum": [ + "budget.reached", + "budget.reset", + "domain.created", + "deployment.created", + "deployment.error", + "deployment.canceled", + "deployment.succeeded", + "deployment.ready", + "deployment.check-rerequested", + "deployment.promoted", + "edge-config.created", + "edge-config.deleted", + "edge-config.items.updated", + "integration-configuration.permission-upgraded", + "integration-configuration.removed", + "integration-configuration.scope-change-confirmed", + "project.created", + "project.removed", + "deployment-checks-completed", + "deployment-ready", + "deployment-prepared", + "deployment-error", + "deployment-check-rerequested", + "deployment-canceled", + "project-created", + "project-removed", + "domain-created", + "deployment", + "integration-configuration-permission-updated", + "integration-configuration-removed", + "integration-configuration-scope-change-confirmed", + "marketplace.invoice.created", + "marketplace.invoice.paid", + "marketplace.invoice.notpaid", + "marketplace.invoice.refunded", + "test-webhook" + ], + "description": "The webhooks events", + "example": "deployment.created" + }, + "type": "array", + "description": "The webhooks events", + "example": "deployment.created" + }, + "id": { + "type": "string", + "description": "The webhook id", + "example": "account_hook_GflD6EYyo7F4ViYS" + }, + "url": { + "type": "string", + "description": "A string with the URL of the webhook", + "example": "https://my-webhook.com" + }, + "ownerId": { + "type": "string", + "description": "The unique ID of the team the webhook belongs to", + "example": "ZspSRT4ljIEEmMHgoDwKWDei" + }, + "createdAt": { + "type": "number", + "description": "A number containing the date when the webhook was created in in milliseconds", + "example": 1567024758130 + }, + "updatedAt": { + "type": "number", + "description": "A number containing the date when the webhook was updated in in milliseconds", + "example": 1567024758130 + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The ID of the projects the webhook is associated with", + "example": ["prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB"] + } + }, + "required": ["secret", "events", "id", "url", "ownerId", "createdAt", "updatedAt"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": false, + "required": ["url", "events"], + "properties": { + "url": { + "format": "uri", + "pattern": "^https?://", + "type": "string" + }, + "events": { + "minItems": 1, + "type": "array", + "items": { + "type": "string", + "enum": [ + "budget.reached", + "budget.reset", + "domain.created", + "deployment.created", + "deployment.error", + "deployment.canceled", + "deployment.succeeded", + "deployment.ready", + "deployment.check-rerequested", + "deployment.promoted", + "edge-config.created", + "edge-config.deleted", + "edge-config.items.updated", + "integration-configuration.permission-upgraded", + "integration-configuration.removed", + "integration-configuration.scope-change-confirmed", + "project.created", + "project.removed", + "deployment-checks-completed", + "deployment-ready", + "deployment-prepared", + "deployment-error", + "deployment-check-rerequested", + "deployment-canceled", + "project-created", + "project-removed", + "domain-created", + "deployment", + "integration-configuration-permission-updated", + "integration-configuration-removed", + "integration-configuration-scope-change-confirmed", + "marketplace.invoice.created", + "marketplace.invoice.paid", + "marketplace.invoice.notpaid", + "marketplace.invoice.refunded", + "test-webhook" + ] + } + }, + "projectIds": { + "minItems": 1, + "maxItems": 50, + "type": "array", + "items": { + "pattern": "^[a-zA-z0-9_]+$", + "type": "string" + } + } + } + } + } + } + } + }, + "get": { + "x-fern-ignore": true, + "description": "Get a list of webhooks", + "operationId": "getWebhooks", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get a list of webhooks", + "tags": ["webhooks"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "items": { + "properties": { + "projectsMetadata": { + "nullable": true, + "items": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "latestDeployment": { + "type": "string" + } + }, + "required": ["id", "name"], + "type": "object" + }, + "type": "array" + }, + "events": { + "items": { + "type": "string", + "enum": [ + "budget.reached", + "budget.reset", + "domain.created", + "deployment.created", + "deployment.error", + "deployment.canceled", + "deployment.succeeded", + "deployment.ready", + "deployment.check-rerequested", + "deployment.promoted", + "edge-config.created", + "edge-config.deleted", + "edge-config.items.updated", + "integration-configuration.permission-upgraded", + "integration-configuration.removed", + "integration-configuration.scope-change-confirmed", + "project.created", + "project.removed", + "deployment-checks-completed", + "deployment-ready", + "deployment-prepared", + "deployment-error", + "deployment-check-rerequested", + "deployment-canceled", + "project-created", + "project-removed", + "domain-created", + "deployment", + "integration-configuration-permission-updated", + "integration-configuration-removed", + "integration-configuration-scope-change-confirmed", + "marketplace.invoice.created", + "marketplace.invoice.paid", + "marketplace.invoice.notpaid", + "marketplace.invoice.refunded", + "test-webhook" + ], + "description": "The webhooks events", + "example": "deployment.created" + }, + "type": "array", + "description": "The webhooks events", + "example": "deployment.created" + }, + "id": { + "type": "string", + "description": "The webhook id", + "example": "account_hook_GflD6EYyo7F4ViYS" + }, + "url": { + "type": "string", + "description": "A string with the URL of the webhook", + "example": "https://my-webhook.com" + }, + "ownerId": { + "type": "string", + "description": "The unique ID of the team the webhook belongs to", + "example": "ZspSRT4ljIEEmMHgoDwKWDei" + }, + "createdAt": { + "type": "number", + "description": "A number containing the date when the webhook was created in in milliseconds", + "example": 1567024758130 + }, + "updatedAt": { + "type": "number", + "description": "A number containing the date when the webhook was updated in in milliseconds", + "example": 1567024758130 + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The ID of the projects the webhook is associated with", + "example": ["prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB"] + } + }, + "required": ["projectsMetadata", "events", "id", "url", "ownerId", "createdAt", "updatedAt"], + "type": "object" + }, + "type": "array" + }, + { + "items": { + "properties": { + "events": { + "items": { + "type": "string", + "enum": [ + "budget.reached", + "budget.reset", + "domain.created", + "deployment.created", + "deployment.error", + "deployment.canceled", + "deployment.succeeded", + "deployment.ready", + "deployment.check-rerequested", + "deployment.promoted", + "edge-config.created", + "edge-config.deleted", + "edge-config.items.updated", + "integration-configuration.permission-upgraded", + "integration-configuration.removed", + "integration-configuration.scope-change-confirmed", + "project.created", + "project.removed", + "deployment-checks-completed", + "deployment-ready", + "deployment-prepared", + "deployment-error", + "deployment-check-rerequested", + "deployment-canceled", + "project-created", + "project-removed", + "domain-created", + "deployment", + "integration-configuration-permission-updated", + "integration-configuration-removed", + "integration-configuration-scope-change-confirmed", + "marketplace.invoice.created", + "marketplace.invoice.paid", + "marketplace.invoice.notpaid", + "marketplace.invoice.refunded", + "test-webhook" + ], + "description": "The webhooks events", + "example": "deployment.created" + }, + "type": "array", + "description": "The webhooks events", + "example": "deployment.created" + }, + "id": { + "type": "string", + "description": "The webhook id", + "example": "account_hook_GflD6EYyo7F4ViYS" + }, + "url": { + "type": "string", + "description": "A string with the URL of the webhook", + "example": "https://my-webhook.com" + }, + "ownerId": { + "type": "string", + "description": "The unique ID of the team the webhook belongs to", + "example": "ZspSRT4ljIEEmMHgoDwKWDei" + }, + "createdAt": { + "type": "number", + "description": "A number containing the date when the webhook was created in in milliseconds", + "example": 1567024758130 + }, + "updatedAt": { + "type": "number", + "description": "A number containing the date when the webhook was updated in in milliseconds", + "example": 1567024758130 + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The ID of the projects the webhook is associated with", + "example": ["prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB"] + } + }, + "required": ["events", "id", "url", "ownerId", "createdAt", "updatedAt"], + "type": "object" + }, + "type": "array" + } + ] + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "projectId", + "in": "query", + "schema": { + "pattern": "^[a-zA-z0-9_]+$", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v1/webhooks/{id}": { + "get": { + "description": "Get a webhook", + "operationId": "getWebhook", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get a webhook", + "tags": ["webhooks"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "events": { + "items": { + "type": "string", + "enum": [ + "budget.reached", + "budget.reset", + "domain.created", + "deployment.created", + "deployment.error", + "deployment.canceled", + "deployment.succeeded", + "deployment.ready", + "deployment.check-rerequested", + "deployment.promoted", + "edge-config.created", + "edge-config.deleted", + "edge-config.items.updated", + "integration-configuration.permission-upgraded", + "integration-configuration.removed", + "integration-configuration.scope-change-confirmed", + "project.created", + "project.removed", + "deployment-checks-completed", + "deployment-ready", + "deployment-prepared", + "deployment-error", + "deployment-check-rerequested", + "deployment-canceled", + "project-created", + "project-removed", + "domain-created", + "deployment", + "integration-configuration-permission-updated", + "integration-configuration-removed", + "integration-configuration-scope-change-confirmed", + "marketplace.invoice.created", + "marketplace.invoice.paid", + "marketplace.invoice.notpaid", + "marketplace.invoice.refunded", + "test-webhook" + ], + "description": "The webhooks events", + "example": "deployment.created" + }, + "type": "array", + "description": "The webhooks events", + "example": "deployment.created" + }, + "id": { + "type": "string", + "description": "The webhook id", + "example": "account_hook_GflD6EYyo7F4ViYS" + }, + "url": { + "type": "string", + "description": "A string with the URL of the webhook", + "example": "https://my-webhook.com" + }, + "ownerId": { + "type": "string", + "description": "The unique ID of the team the webhook belongs to", + "example": "ZspSRT4ljIEEmMHgoDwKWDei" + }, + "createdAt": { + "type": "number", + "description": "A number containing the date when the webhook was created in in milliseconds", + "example": 1567024758130 + }, + "updatedAt": { + "type": "number", + "description": "A number containing the date when the webhook was updated in in milliseconds", + "example": 1567024758130 + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The ID of the projects the webhook is associated with", + "example": ["prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB"] + } + }, + "required": ["events", "id", "url", "ownerId", "createdAt", "updatedAt"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "description": "Deletes a webhook", + "operationId": "deleteWebhook", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Deletes a webhook", + "tags": ["webhooks"], + "responses": { + "204": { + "description": "" + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v4/aliases": { + "get": { + "description": "Retrieves a list of aliases for the authenticated User or Team. When `domain` is provided, only aliases for that domain will be returned. When `projectId` is provided, it will only return the given project aliases.", + "operationId": "listAliases", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List aliases", + "tags": ["aliases"], + "responses": { + "200": { + "description": "The paginated list of aliases", + "content": { + "application/json": { + "schema": { + "properties": { + "aliases": { + "items": { + "properties": { + "alias": { + "type": "string", + "description": "The alias name, it could be a `.vercel.app` subdomain or a custom domain", + "example": "my-alias.vercel.app" + }, + "created": { + "type": "string", + "format": "date-time", + "description": "The date when the alias was created", + "example": "2017-04-26T23:00:34.232Z" + }, + "createdAt": { + "type": "number", + "description": "The date when the alias was created in milliseconds since the UNIX epoch", + "example": 1540095775941 + }, + "creator": { + "properties": { + "uid": { + "type": "string", + "description": "ID of the user who created the alias", + "example": "96SnxkFiMyVKsK3pnoHfx3Hz" + }, + "email": { + "type": "string", + "description": "Email of the user who created the alias", + "example": "john-doe@gmail.com" + }, + "username": { + "type": "string", + "description": "Username of the user who created the alias", + "example": "john-doe" + } + }, + "required": ["uid", "email", "username"], + "type": "object", + "description": "Information of the user who created the alias" + }, + "deletedAt": { + "type": "number", + "description": "The date when the alias was deleted in milliseconds since the UNIX epoch", + "example": 1540095775941 + }, + "deployment": { + "properties": { + "id": { + "type": "string", + "description": "The deployment unique identifier", + "example": "dpl_5m8CQaRBm3FnWRW1od3wKTpaECPx" + }, + "url": { + "type": "string", + "description": "The deployment unique URL", + "example": "my-instant-deployment-3ij3cxz9qr.now.sh" + }, + "meta": { + "type": "string", + "description": "The deployment metadata", + "example": {} + } + }, + "required": ["id", "url"], + "type": "object", + "description": "A map with the deployment ID, URL and metadata" + }, + "deploymentId": { + "nullable": true, + "type": "string", + "description": "The deployment ID", + "example": "dpl_5m8CQaRBm3FnWRW1od3wKTpaECPx" + }, + "projectId": { + "nullable": true, + "type": "string", + "description": "The unique identifier of the project", + "example": "prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB" + }, + "redirect": { + "nullable": true, + "type": "string", + "description": "Target destination domain for redirect when the alias is a redirect" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [301, 302, 307, 308], + "description": "Status code to be used on redirect" + }, + "uid": { + "type": "string", + "description": "The unique identifier of the alias" + }, + "updatedAt": { + "type": "number", + "description": "The date when the alias was updated in milliseconds since the UNIX epoch", + "example": 1540095775941 + }, + "protectionBypass": { + "additionalProperties": { + "oneOf": [ + { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["shareable-link"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + }, + { + "properties": { + "createdAt": { + "type": "number" + }, + "lastUpdatedAt": { + "type": "number" + }, + "lastUpdatedBy": { + "type": "string" + }, + "access": { + "type": "string", + "enum": ["requested", "granted"] + }, + "scope": { + "type": "string", + "enum": ["user"] + } + }, + "required": ["createdAt", "lastUpdatedAt", "lastUpdatedBy", "access", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + }, + { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["alias-protection-override"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + }, + { + "properties": { + "createdAt": { + "type": "number" + }, + "lastUpdatedAt": { + "type": "number" + }, + "lastUpdatedBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["email_invite"] + } + }, + "required": ["createdAt", "lastUpdatedAt", "lastUpdatedBy", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + } + ] + }, + "type": "object", + "description": "The protection bypass for the alias" + } + }, + "required": ["alias", "created", "deploymentId", "projectId", "uid"], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["aliases", "pagination"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "domain", + "description": "Get only aliases of the given domain name", + "in": "query", + "schema": { + "description": "Get only aliases of the given domain name", + "example": "my-test-domain.com", + "items": { + "type": "string" + }, + "maxItems": 20, + "oneOf": [ + { + "type": "array" + }, + { + "type": "string" + } + ] + } + }, + { + "name": "from", + "description": "Get only aliases created after the provided timestamp", + "in": "query", + "schema": { + "deprecated": true, + "description": "Get only aliases created after the provided timestamp", + "example": 1540095775951, + "type": "number" + } + }, + { + "name": "limit", + "description": "Maximum number of aliases to list from a request", + "in": "query", + "schema": { + "description": "Maximum number of aliases to list from a request", + "example": 10, + "type": "number" + } + }, + { + "name": "projectId", + "description": "Filter aliases from the given `projectId`", + "in": "query", + "schema": { + "description": "Filter aliases from the given `projectId`", + "example": "prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "type": "string" + } + }, + { + "name": "since", + "description": "Get aliases created after this JavaScript timestamp", + "in": "query", + "schema": { + "description": "Get aliases created after this JavaScript timestamp", + "example": 1540095775941, + "type": "number" + } + }, + { + "name": "until", + "description": "Get aliases created before this JavaScript timestamp", + "in": "query", + "schema": { + "description": "Get aliases created before this JavaScript timestamp", + "example": 1540095775951, + "type": "number" + } + }, + { + "name": "rollbackDeploymentId", + "description": "Get aliases that would be rolled back for the given deployment", + "in": "query", + "schema": { + "description": "Get aliases that would be rolled back for the given deployment", + "example": "dpl_XXX", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v4/aliases/{idOrAlias}": { + "get": { + "description": "Retrieves an Alias for the given host name or alias ID.", + "operationId": "getAlias", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get an Alias", + "tags": ["aliases"], + "responses": { + "200": { + "description": "The alias information", + "content": { + "application/json": { + "schema": { + "items": { + "properties": { + "alias": { + "type": "string", + "description": "The alias name, it could be a `.vercel.app` subdomain or a custom domain", + "example": "my-alias.vercel.app" + }, + "created": { + "type": "string", + "format": "date-time", + "description": "The date when the alias was created", + "example": "2017-04-26T23:00:34.232Z" + }, + "createdAt": { + "type": "number", + "description": "The date when the alias was created in milliseconds since the UNIX epoch", + "example": 1540095775941 + }, + "creator": { + "properties": { + "uid": { + "type": "string", + "description": "ID of the user who created the alias", + "example": "96SnxkFiMyVKsK3pnoHfx3Hz" + }, + "email": { + "type": "string", + "description": "Email of the user who created the alias", + "example": "john-doe@gmail.com" + }, + "username": { + "type": "string", + "description": "Username of the user who created the alias", + "example": "john-doe" + } + }, + "required": ["uid", "email", "username"], + "type": "object", + "description": "Information of the user who created the alias" + }, + "deletedAt": { + "type": "number", + "description": "The date when the alias was deleted in milliseconds since the UNIX epoch", + "example": 1540095775941 + }, + "deployment": { + "properties": { + "id": { + "type": "string", + "description": "The deployment unique identifier", + "example": "dpl_5m8CQaRBm3FnWRW1od3wKTpaECPx" + }, + "url": { + "type": "string", + "description": "The deployment unique URL", + "example": "my-instant-deployment-3ij3cxz9qr.now.sh" + }, + "meta": { + "type": "string", + "description": "The deployment metadata", + "example": {} + } + }, + "required": ["id", "url"], + "type": "object", + "description": "A map with the deployment ID, URL and metadata" + }, + "deploymentId": { + "nullable": true, + "type": "string", + "description": "The deployment ID", + "example": "dpl_5m8CQaRBm3FnWRW1od3wKTpaECPx" + }, + "projectId": { + "nullable": true, + "type": "string", + "description": "The unique identifier of the project", + "example": "prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB" + }, + "redirect": { + "nullable": true, + "type": "string", + "description": "Target destination domain for redirect when the alias is a redirect" + }, + "redirectStatusCode": { + "nullable": true, + "type": "number", + "enum": [301, 302, 307, 308], + "description": "Status code to be used on redirect" + }, + "uid": { + "type": "string", + "description": "The unique identifier of the alias" + }, + "updatedAt": { + "type": "number", + "description": "The date when the alias was updated in milliseconds since the UNIX epoch", + "example": 1540095775941 + }, + "protectionBypass": { + "additionalProperties": { + "oneOf": [ + { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["shareable-link"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + }, + { + "properties": { + "createdAt": { + "type": "number" + }, + "lastUpdatedAt": { + "type": "number" + }, + "lastUpdatedBy": { + "type": "string" + }, + "access": { + "type": "string", + "enum": ["requested", "granted"] + }, + "scope": { + "type": "string", + "enum": ["user"] + } + }, + "required": ["createdAt", "lastUpdatedAt", "lastUpdatedBy", "access", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + }, + { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["alias-protection-override"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + }, + { + "properties": { + "createdAt": { + "type": "number" + }, + "lastUpdatedAt": { + "type": "number" + }, + "lastUpdatedBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["email_invite"] + } + }, + "required": ["createdAt", "lastUpdatedAt", "lastUpdatedBy", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + } + ] + }, + "type": "object", + "description": "The protection bypass for the alias" + } + }, + "required": ["alias", "created", "deploymentId", "projectId", "uid"], + "type": "object" + }, + "type": "array" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The alias was not found" + } + }, + "parameters": [ + { + "name": "from", + "description": "Get the alias only if it was created after the provided timestamp", + "in": "query", + "required": false, + "schema": { + "deprecated": true, + "description": "Get the alias only if it was created after the provided timestamp", + "example": 1540095775951, + "type": "number" + } + }, + { + "name": "idOrAlias", + "description": "The alias or alias ID to be retrieved", + "in": "path", + "required": true, + "schema": { + "description": "The alias or alias ID to be retrieved", + "example": "example.vercel.app", + "type": "string" + } + }, + { + "name": "projectId", + "description": "Get the alias only if it is assigned to the provided project ID", + "in": "query", + "required": false, + "schema": { + "description": "Get the alias only if it is assigned to the provided project ID", + "example": "prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "type": "string" + } + }, + { + "name": "since", + "description": "Get the alias only if it was created after this JavaScript timestamp", + "in": "query", + "required": false, + "schema": { + "description": "Get the alias only if it was created after this JavaScript timestamp", + "example": 1540095775941, + "type": "number" + } + }, + { + "name": "until", + "description": "Get the alias only if it was created before this JavaScript timestamp", + "in": "query", + "required": false, + "schema": { + "description": "Get the alias only if it was created before this JavaScript timestamp", + "example": 1540095775951, + "type": "number" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v2/aliases/{aliasId}": { + "delete": { + "description": "Delete an Alias with the specified ID.", + "operationId": "deleteAlias", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete an Alias", + "tags": ["aliases"], + "responses": { + "200": { + "description": "The alias was successfully removed", + "content": { + "application/json": { + "schema": { + "properties": { + "status": { + "type": "string", + "enum": ["SUCCESS"] + } + }, + "required": ["status"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The alias was not found" + } + }, + "parameters": [ + { + "name": "aliasId", + "description": "The ID or alias that will be removed", + "in": "path", + "required": true, + "schema": { + "example": "2WjyKQmM8ZnGcJsPWMrHRHrE", + "description": "The ID or alias that will be removed", + "oneOf": [ + { + "type": "string" + } + ] + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v2/deployments/{id}/aliases": { + "get": { + "description": "Retrieves all Aliases for the Deployment with the given ID. The authenticated user or team must own the deployment.", + "operationId": "listDeploymentAliases", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List Deployment Aliases", + "tags": ["aliases"], + "responses": { + "200": { + "description": "The list of aliases assigned to the deployment", + "content": { + "application/json": { + "schema": { + "properties": { + "aliases": { + "items": { + "properties": { + "uid": { + "type": "string", + "description": "The unique identifier of the alias", + "example": "2WjyKQmM8ZnGcJsPWMrHRHrE" + }, + "alias": { + "type": "string", + "description": "The alias name, it could be a `.vercel.app` subdomain or a custom domain", + "example": "my-alias.vercel.app" + }, + "created": { + "type": "string", + "format": "date-time", + "description": "The date when the alias was created", + "example": "2017-04-26T23:00:34.232Z" + }, + "redirect": { + "nullable": true, + "type": "string", + "description": "Target destination domain for redirect when the alias is a redirect" + }, + "protectionBypass": { + "additionalProperties": { + "oneOf": [ + { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["shareable-link"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + }, + { + "properties": { + "createdAt": { + "type": "number" + }, + "lastUpdatedAt": { + "type": "number" + }, + "lastUpdatedBy": { + "type": "string" + }, + "access": { + "type": "string", + "enum": ["requested", "granted"] + }, + "scope": { + "type": "string", + "enum": ["user"] + } + }, + "required": ["createdAt", "lastUpdatedAt", "lastUpdatedBy", "access", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + }, + { + "properties": { + "createdAt": { + "type": "number" + }, + "createdBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["alias-protection-override"] + } + }, + "required": ["createdAt", "createdBy", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + }, + { + "properties": { + "createdAt": { + "type": "number" + }, + "lastUpdatedAt": { + "type": "number" + }, + "lastUpdatedBy": { + "type": "string" + }, + "scope": { + "type": "string", + "enum": ["email_invite"] + } + }, + "required": ["createdAt", "lastUpdatedAt", "lastUpdatedBy", "scope"], + "type": "object", + "description": "The protection bypass for the alias" + } + ] + }, + "type": "object", + "description": "The protection bypass for the alias" + } + }, + "required": ["uid", "alias", "created"], + "type": "object", + "description": "A list of the aliases assigned to the deployment" + }, + "type": "array", + "description": "A list of the aliases assigned to the deployment" + } + }, + "required": ["aliases"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The deployment was not found" + } + }, + "parameters": [ + { + "name": "id", + "description": "The ID of the deployment the aliases should be listed for", + "in": "path", + "required": true, + "schema": { + "example": "dpl_FjvFJncQHQcZMznrUm9EoB8sFuPa", + "description": "The ID of the deployment the aliases should be listed for", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "post": { + "description": "Creates a new alias for the deployment with the given deployment ID. The authenticated user or team must own this deployment. If the desired alias is already assigned to another deployment, then it will be removed from the old deployment and assigned to the new one.", + "operationId": "assignAlias", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Assign an Alias", + "tags": ["aliases"], + "responses": { + "200": { + "description": "The alias was successfully assigned to the deployment", + "content": { + "application/json": { + "schema": { + "properties": { + "uid": { + "type": "string", + "description": "The unique identifier of the alias", + "example": "2WjyKQmM8ZnGcJsPWMrHRHrE" + }, + "alias": { + "type": "string", + "description": "The assigned alias name", + "example": "my-alias.vercel.app" + }, + "created": { + "type": "string", + "format": "date-time", + "description": "The date when the alias was created", + "example": "2017-04-26T23:00:34.232Z" + }, + "oldDeploymentId": { + "nullable": true, + "type": "string", + "description": "The unique identifier of the previously aliased deployment, only received when the alias was used before", + "example": "dpl_FjvFJncQHQcZMznrUm9EoB8sFuPa" + } + }, + "required": ["uid", "alias", "created"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nThe cert for the provided alias is not ready\nThe deployment is not READY and can not be aliased\nThe supplied alias is invalid" + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource.\nIf no .vercel.app alias exists then we fail (nothing to mirror)" + }, + "404": { + "description": "The domain used for the alias was not found\nThe deployment was not found" + }, + "409": { + "description": "The provided alias is already assigned to the given deployment\nThe domain is not allowed to be used" + } + }, + "parameters": [ + { + "name": "id", + "description": "The ID of the deployment the aliases should be listed for", + "in": "path", + "required": true, + "schema": { + "description": "The ID of the deployment the aliases should be listed for", + "example": "dpl_FjvFJncQHQcZMznrUm9EoB8sFuPa", + "oneOf": [ + { + "type": "string" + } + ] + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "alias": { + "description": "The alias we want to assign to the deployment defined in the URL", + "example": "my-alias.vercel.app", + "type": "string" + }, + "redirect": { + "description": "The redirect property will take precedence over the deployment id from the URL and consists of a hostname (like test.com) to which the alias should redirect using status code 307", + "example": null, + "type": "string", + "nullable": true + } + }, + "type": "object" + } + } + } + } + } + }, + "/v7/certs/{id}": { + "get": { + "description": "Get cert by id", + "operationId": "getCertById", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get cert by id", + "tags": ["certs"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "expiresAt": { + "type": "number" + }, + "autoRenew": { + "type": "boolean" + }, + "cns": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "createdAt", "expiresAt", "autoRenew", "cns"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "id", + "description": "The cert id", + "in": "path", + "required": true, + "schema": { + "description": "The cert id", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + }, + "delete": { + "description": "Remove cert", + "operationId": "removeCert", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Remove cert", + "tags": ["certs"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + } + }, + "parameters": [ + { + "name": "id", + "description": "The cert id to remove", + "in": "path", + "required": true, + "schema": { + "description": "The cert id to remove", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v7/certs": { + "post": { + "description": "Issue a new cert", + "operationId": "issueCert", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Issue a new cert", + "tags": ["certs"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "expiresAt": { + "type": "number" + }, + "autoRenew": { + "type": "boolean" + }, + "cns": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "createdAt", "expiresAt", "autoRenew", "cns"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "449": { + "description": "" + }, + "500": { + "description": "" + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cns": { + "description": "The common names the cert should be issued for", + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "put": { + "description": "Upload a cert", + "operationId": "uploadCert", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Upload a cert", + "tags": ["certs"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "expiresAt": { + "type": "number" + }, + "autoRenew": { + "type": "boolean" + }, + "cns": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": ["id", "createdAt", "expiresAt", "autoRenew", "cns"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "This feature is only available for Enterprise customers." + }, + "403": { + "description": "You do not have permission to access this resource." + } + }, + "parameters": [ + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["ca", "key", "cert"], + "additionalProperties": false, + "properties": { + "ca": { + "type": "string", + "description": "The certificate authority" + }, + "key": { + "type": "string", + "description": "The certificate key" + }, + "cert": { + "type": "string", + "description": "The certificate" + }, + "skipValidation": { + "type": "boolean", + "description": "Skip validation of the certificate" + } + } + } + } + } + } + } + }, + "/v6/deployments/{id}/files": { + "get": { + "description": "Allows to retrieve the file structure of a deployment by supplying the deployment unique identifier.", + "operationId": "listDeploymentFiles", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List Deployment Files", + "tags": ["deployments"], + "responses": { + "200": { + "description": "Retrieved the file tree successfully", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/FileTree" + }, + "type": "array" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "File tree not found\nDeployment not found" + } + }, + "parameters": [ + { + "name": "id", + "description": "The unique deployment identifier", + "in": "path", + "required": true, + "schema": { + "description": "The unique deployment identifier", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v7/deployments/{id}/files/{fileId}": { + "get": { + "description": "Allows to retrieve the content of a file by supplying the file identifier and the deployment unique identifier. The response body will contain a JSON response containing the contents of the file encoded as base64.", + "operationId": "getDeploymentFileContents", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get Deployment File Contents", + "tags": ["deployments"], + "responses": { + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "File not found\nDeployment not found" + }, + "410": { + "description": "Invalid API version." + } + }, + "parameters": [ + { + "name": "id", + "description": "The unique deployment identifier", + "in": "path", + "required": true, + "schema": { + "description": "The unique deployment identifier", + "type": "string" + } + }, + { + "name": "fileId", + "description": "The unique file identifier", + "in": "path", + "required": true, + "schema": { + "description": "The unique file identifier", + "type": "string" + } + }, + { + "name": "path", + "description": "Path to the file to fetch (only for Git deployments)", + "in": "query", + "required": false, + "schema": { + "description": "Path to the file to fetch (only for Git deployments)", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v6/deployments": { + "get": { + "description": "List deployments under the authenticated user or team. If a deployment hasn't finished uploading (is incomplete), the `url` property will have a value of `null`.", + "operationId": "getDeployments", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List deployments", + "tags": ["deployments"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "deployments": { + "items": { + "properties": { + "uid": { + "type": "string", + "description": "The unique identifier of the deployment.", + "example": "dpl_2euZBFqxYdDMDG1jTrHFnNZ2eUVa" + }, + "name": { + "type": "string", + "description": "The name of the deployment.", + "example": "docs" + }, + "url": { + "type": "string", + "description": "The URL of the deployment.", + "example": "docs-9jaeg38me.vercel.app" + }, + "created": { + "type": "number", + "description": "Timestamp of when the deployment got created.", + "example": 1609492210000 + }, + "deleted": { + "type": "number", + "description": "Timestamp of when the deployment got deleted.", + "example": 1609492210000 + }, + "undeleted": { + "type": "number", + "description": "Timestamp of when the deployment was undeleted.", + "example": 1609492210000 + }, + "softDeletedByRetention": { + "type": "boolean", + "description": "Optional flag to indicate if the deployment was soft deleted by retention policy.", + "example": true + }, + "source": { + "type": "string", + "enum": [ + "api-trigger-git-deploy", + "cli", + "clone/repo", + "git", + "import", + "import/repo", + "redeploy" + ], + "description": "The source of the deployment.", + "example": "cli" + }, + "state": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED", "DELETED"], + "description": "In which state is the deployment.", + "example": "READY" + }, + "readyState": { + "type": "string", + "enum": ["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED", "DELETED"], + "description": "In which state is the deployment.", + "example": "READY" + }, + "type": { + "type": "string", + "enum": ["LAMBDAS"], + "description": "The type of the deployment.", + "example": "LAMBDAS" + }, + "creator": { + "properties": { + "uid": { + "type": "string", + "description": "The unique identifier of the user.", + "example": "eLrCnEgbKhsHyfbiNR7E8496" + }, + "email": { + "type": "string", + "description": "The email address of the user.", + "example": "example@example.com" + }, + "username": { + "type": "string", + "description": "The username of the user.", + "example": "johndoe" + }, + "githubLogin": { + "type": "string", + "description": "The GitHub login of the user.", + "example": "johndoe" + }, + "gitlabLogin": { + "type": "string", + "description": "The GitLab login of the user.", + "example": "johndoe" + } + }, + "required": ["uid"], + "type": "object", + "description": "Metadata information of the user who created the deployment." + }, + "meta": { + "additionalProperties": { + "type": "string", + "description": "Metadata information from the Git provider." + }, + "type": "object", + "description": "Metadata information from the Git provider." + }, + "target": { + "nullable": true, + "type": "string", + "enum": ["production", "staging"], + "description": "On which environment has the deployment been deployed to.", + "example": "production" + }, + "aliasError": { + "nullable": true, + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["code", "message"], + "type": "object", + "description": "An error object in case aliasing of the deployment failed." + }, + "aliasAssigned": { + "nullable": true, + "oneOf": [ + { + "type": "number" + }, + { + "type": "boolean" + } + ] + }, + "createdAt": { + "type": "number", + "description": "Timestamp of when the deployment got created.", + "example": 1609492210000 + }, + "buildingAt": { + "type": "number", + "description": "Timestamp of when the deployment started building at.", + "example": 1609492210000 + }, + "ready": { + "type": "number", + "description": "Timestamp of when the deployment got ready.", + "example": 1609492210000 + }, + "readySubstate": { + "type": "string", + "enum": ["STAGED", "PROMOTED"], + "description": "Since June 2023 Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - PROMOTED: has seen production traffic" + }, + "checksState": { + "type": "string", + "enum": ["registered", "running", "completed"], + "description": "State of all registered checks" + }, + "checksConclusion": { + "type": "string", + "enum": ["succeeded", "failed", "skipped", "canceled"], + "description": "Conclusion for checks" + }, + "inspectorUrl": { + "nullable": true, + "type": "string", + "description": "Vercel URL to inspect the deployment.", + "example": "https://vercel.com/acme/nextjs/J1hXN00qjUeoYfpEEf7dnDtpSiVq" + }, + "isRollbackCandidate": { + "nullable": true, + "type": "boolean", + "description": "Deployment can be used for instant rollback" + }, + "projectSettings": { + "properties": { + "framework": { + "nullable": true, + "type": "string", + "enum": [ + "blitzjs", + "nextjs", + "gatsby", + "remix", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fasthtml", + "sanity-v3", + "sanity", + "storybook" + ] + }, + "gitForkProtection": { + "type": "boolean" + }, + "customerSupportCodeVisibility": { + "type": "boolean" + }, + "gitLFS": { + "type": "boolean" + }, + "devCommand": { + "nullable": true, + "type": "string" + }, + "installCommand": { + "nullable": true, + "type": "string" + }, + "buildCommand": { + "nullable": true, + "type": "string" + }, + "nodeVersion": { + "type": "string", + "enum": ["20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x"] + }, + "outputDirectory": { + "nullable": true, + "type": "string" + }, + "publicSource": { + "nullable": true, + "type": "boolean" + }, + "rootDirectory": { + "nullable": true, + "type": "string" + }, + "serverlessFunctionRegion": { + "nullable": true, + "type": "string" + }, + "sourceFilesOutsideRootDirectory": { + "type": "boolean" + }, + "commandForIgnoringBuildStep": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "speedInsights": { + "properties": { + "id": { + "type": "string" + }, + "enabledAt": { + "type": "number" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + }, + "paidAt": { + "type": "number" + } + }, + "required": ["id"], + "type": "object" + }, + "webAnalytics": { + "properties": { + "id": { + "type": "string" + }, + "disabledAt": { + "type": "number" + }, + "canceledAt": { + "type": "number" + }, + "enabledAt": { + "type": "number" + }, + "hasData": { + "type": "boolean" + } + }, + "required": ["id"], + "type": "object" + }, + "skipGitConnectDuringLink": { + "type": "boolean" + }, + "gitComments": { + "properties": { + "onPullRequest": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on PRs" + }, + "onCommit": { + "type": "boolean", + "description": "Whether the Vercel bot should comment on commits" + } + }, + "required": ["onPullRequest", "onCommit"], + "type": "object", + "description": "Since June '23" + } + }, + "type": "object", + "description": "The project settings which was used for this deployment" + }, + "connectBuildsEnabled": { + "type": "boolean", + "description": "The flag saying if Vercel Connect configuration is used for builds" + }, + "connectConfigurationId": { + "type": "string", + "description": "The ID of Vercel Connect configuration used for this deployment" + }, + "passiveConnectConfigurationId": { + "type": "string", + "description": "The ID of Vercel Connect configuration used for this deployment's passive functions" + }, + "expiration": { + "type": "number", + "description": "The expiration configured by the project retention policy" + }, + "proposedExpiration": { + "type": "number", + "description": "The expiration proposed to replace the existing expiration" + }, + "customEnvironment": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": ["id"], + "type": "object", + "description": "The custom environment used for this deployment, if any" + } + }, + "required": ["uid", "name", "url", "created", "type", "creator", "inspectorUrl"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["pagination", "deployments"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "422": { + "description": "" + } + }, + "parameters": [ + { + "name": "app", + "description": "Name of the deployment.", + "in": "query", + "schema": { + "description": "Name of the deployment.", + "type": "string", + "example": "docs" + } + }, + { + "name": "from", + "description": "Gets the deployment created after this Date timestamp. (default: current time)", + "in": "query", + "schema": { + "description": "Gets the deployment created after this Date timestamp. (default: current time)", + "type": "number", + "example": 1612948664566, + "deprecated": true + } + }, + { + "name": "limit", + "description": "Maximum number of deployments to list from a request.", + "in": "query", + "schema": { + "description": "Maximum number of deployments to list from a request.", + "type": "number", + "example": 10 + } + }, + { + "name": "projectId", + "description": "Filter deployments from the given ID or name.", + "in": "query", + "schema": { + "description": "Filter deployments from the given ID or name.", + "type": "string", + "example": "QmXGTs7mvAMMC7WW5ebrM33qKG32QK3h4vmQMjmY" + } + }, + { + "name": "target", + "description": "Filter deployments based on the environment.", + "in": "query", + "schema": { + "description": "Filter deployments based on the environment.", + "type": "string", + "example": "production" + } + }, + { + "name": "to", + "description": "Gets the deployment created before this Date timestamp. (default: current time)", + "in": "query", + "schema": { + "description": "Gets the deployment created before this Date timestamp. (default: current time)", + "type": "number", + "example": 1612948664566, + "deprecated": true + } + }, + { + "name": "users", + "description": "Filter out deployments based on users who have created the deployment.", + "in": "query", + "schema": { + "description": "Filter out deployments based on users who have created the deployment.", + "type": "string", + "example": "kr1PsOIzqEL5Xg6M4VZcZosf,K4amb7K9dAt5R2vBJWF32bmY" + } + }, + { + "name": "since", + "description": "Get Deployments created after this JavaScript timestamp.", + "in": "query", + "schema": { + "description": "Get Deployments created after this JavaScript timestamp.", + "type": "number", + "example": 1540095775941 + } + }, + { + "name": "until", + "description": "Get Deployments created before this JavaScript timestamp.", + "in": "query", + "schema": { + "description": "Get Deployments created before this JavaScript timestamp.", + "type": "number", + "example": 1540095775951 + } + }, + { + "name": "state", + "description": "Filter deployments based on their state (`BUILDING`, `ERROR`, `INITIALIZING`, `QUEUED`, `READY`, `CANCELED`)", + "in": "query", + "schema": { + "description": "Filter deployments based on their state (`BUILDING`, `ERROR`, `INITIALIZING`, `QUEUED`, `READY`, `CANCELED`)", + "type": "string", + "example": "BUILDING,READY" + } + }, + { + "name": "rollbackCandidate", + "description": "Filter deployments based on their rollback candidacy", + "in": "query", + "schema": { + "description": "Filter deployments based on their rollback candidacy", + "type": "boolean" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v13/deployments/{id}": { + "delete": { + "description": "This API allows you to delete a deployment, either by supplying its `id` in the URL or the `url` of the deployment as a query parameter. You can obtain the ID, for example, by listing all deployments.", + "operationId": "deleteDeployment", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete a Deployment", + "tags": ["deployments"], + "responses": { + "200": { + "description": "The deployment was successfully deleted", + "content": { + "application/json": { + "schema": { + "properties": { + "uid": { + "type": "string", + "description": "The removed deployment ID.", + "example": "dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd" + }, + "state": { + "type": "string", + "enum": ["DELETED"], + "description": "A constant with the final state of the deployment." + } + }, + "required": ["uid", "state"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "The deployment was not found" + } + }, + "parameters": [ + { + "name": "id", + "description": "The ID of the deployment to be deleted", + "in": "path", + "required": true, + "schema": { + "description": "The ID of the deployment to be deleted", + "example": "dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd", + "type": "string" + } + }, + { + "name": "url", + "description": "A Deployment or Alias URL. In case it is passed, the ID will be ignored", + "in": "query", + "required": false, + "schema": { + "description": "A Deployment or Alias URL. In case it is passed, the ID will be ignored", + "example": "https://files-orcin-xi.vercel.app/", + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v3/secrets": { + "get": { + "description": "Retrieves the active Vercel secrets for the authenticated user or team. By default it returns 20 secrets. The rest can be retrieved using the pagination options. The body will contain an entry for each secret.", + "operationId": "getSecrets", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "List secrets", + "tags": ["secrets"], + "responses": { + "200": { + "description": "Successful response retrieving a list of secrets.", + "content": { + "application/json": { + "schema": { + "properties": { + "secrets": { + "items": { + "properties": { + "created": { + "type": "string", + "format": "date-time", + "description": "The date when the secret was created.", + "example": "2021-02-10T13:11:49.180Z" + }, + "name": { + "type": "string", + "description": "The name of the secret.", + "example": "my-api-key" + }, + "teamId": { + "nullable": true, + "type": "string", + "description": "The unique identifier of the team the secret was created for.", + "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" + }, + "uid": { + "type": "string", + "description": "The unique identifier of the secret.", + "example": "sec_XCG7t7AIHuO2SBA8667zNUiM" + }, + "userId": { + "type": "string", + "description": "The unique identifier of the user who created the secret.", + "example": "2qDDuGFTWXBLDNnqZfWPDp1A" + }, + "value": { + "type": "string", + "description": "The value of the secret." + }, + "createdAt": { + "type": "number", + "description": "Timestamp for when the secret was created.", + "example": 1609492210000 + }, + "projectId": { + "type": "string", + "description": "The unique identifier of the project which the secret belongs to.", + "example": "prj_2WjyKQmM8ZnGcJsPWMrHRHrE" + }, + "decryptable": { + "type": "boolean", + "description": "Indicates whether the secret value can be decrypted after it has been created.", + "example": true + } + }, + "required": ["created", "name", "uid"], + "type": "object", + "description": "Data representing a secret." + }, + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + }, + "required": ["secrets", "pagination"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "410": { + "description": "" + } + }, + "parameters": [ + { + "name": "id", + "description": "Filter out secrets based on comma separated secret ids.", + "in": "query", + "schema": { + "description": "Filter out secrets based on comma separated secret ids.", + "type": "string", + "example": "sec_RKc5iV0rV3ZSrFrHiruRno7k,sec_fGc5iV0rV3ZSrFrHiruRnouQ", + "deprecated": true + } + }, + { + "name": "projectId", + "description": "Filter out secrets that belong to a project.", + "in": "query", + "schema": { + "description": "Filter out secrets that belong to a project.", + "type": "string", + "example": "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", + "deprecated": true + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v2/secrets/{name}": { + "post": { + "description": "Allows to create a new secret.", + "operationId": "createSecret", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Create a new secret", + "tags": ["secrets"], + "responses": { + "200": { + "description": "Successful response showing the created secret.", + "content": { + "application/json": { + "schema": { + "properties": { + "value": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["Buffer"] + }, + "data": { + "type": "array", + "items": { + "type": "number" + } + } + } + }, + "created": { + "type": "string", + "format": "date-time", + "description": "The date when the secret was created.", + "example": "2021-02-10T13:11:49.180Z" + }, + "name": { + "type": "string", + "description": "The name of the secret.", + "example": "my-api-key" + }, + "teamId": { + "nullable": true, + "type": "string", + "description": "The unique identifier of the team the secret was created for.", + "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" + }, + "uid": { + "type": "string", + "description": "The unique identifier of the secret.", + "example": "sec_XCG7t7AIHuO2SBA8667zNUiM" + }, + "userId": { + "type": "string", + "description": "The unique identifier of the user who created the secret.", + "example": "2qDDuGFTWXBLDNnqZfWPDp1A" + }, + "createdAt": { + "type": "number", + "description": "Timestamp for when the secret was created.", + "example": 1609492210000 + }, + "projectId": { + "type": "string", + "description": "The unique identifier of the project which the secret belongs to.", + "example": "prj_2WjyKQmM8ZnGcJsPWMrHRHrE" + }, + "decryptable": { + "type": "boolean", + "description": "Indicates whether the secret value can be decrypted after it has been created.", + "example": true + } + }, + "required": ["value", "created", "name", "uid"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid." + }, + "401": { + "description": "" + }, + "402": { + "description": "The account was soft-blocked for an unhandled reason.\nThe account is missing a payment so payment method must be updated" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "410": { + "description": "" + } + }, + "parameters": [ + { + "in": "path", + "name": "name", + "schema": { + "type": "string" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "type": "object", + "required": ["name", "value"], + "properties": { + "name": { + "description": "The name of the secret (max 100 characters).", + "type": "string", + "example": "my-api-key", + "maximum": 100 + }, + "value": { + "description": "The value of the new secret.", + "type": "string", + "example": "some secret value" + }, + "decryptable": { + "description": "Whether the secret value can be decrypted after it has been created.", + "type": "boolean", + "example": true + }, + "projectId": { + "description": "Associate a secret to a project.", + "type": "string", + "example": "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", + "deprecated": true + } + } + } + } + } + } + }, + "patch": { + "description": "Enables to edit the name of a secret. The name has to be unique to the user or team’s secrets.", + "operationId": "renameSecret", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Change secret name", + "tags": ["secrets"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + }, + "oldName": { + "type": "string" + } + }, + "required": ["uid", "name", "created", "oldName"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "410": { + "description": "" + } + }, + "parameters": [ + { + "name": "name", + "description": "The name of the secret.", + "in": "path", + "required": true, + "schema": { + "description": "The name of the secret.", + "type": "string", + "example": "my-api-key" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "type": "object", + "required": ["name"], + "properties": { + "name": { + "description": "The name of the new secret.", + "type": "string", + "example": "my-api-key", + "maximum": 100 + } + } + } + } + } + } + } + }, + "/v3/secrets/{idOrName}": { + "get": { + "description": "Retrieves the information for a specific secret by passing either the secret id or name in the URL.", + "operationId": "getSecret", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Get a single secret", + "tags": ["secrets"], + "responses": { + "200": { + "description": "Successful response retrieving a secret.", + "content": { + "application/json": { + "schema": { + "properties": { + "created": { + "type": "string", + "format": "date-time", + "description": "The date when the secret was created.", + "example": "2021-02-10T13:11:49.180Z" + }, + "name": { + "type": "string", + "description": "The name of the secret.", + "example": "my-api-key" + }, + "teamId": { + "nullable": true, + "type": "string", + "description": "The unique identifier of the team the secret was created for.", + "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" + }, + "uid": { + "type": "string", + "description": "The unique identifier of the secret.", + "example": "sec_XCG7t7AIHuO2SBA8667zNUiM" + }, + "userId": { + "type": "string", + "description": "The unique identifier of the user who created the secret.", + "example": "2qDDuGFTWXBLDNnqZfWPDp1A" + }, + "value": { + "type": "string", + "description": "The value of the secret." + }, + "createdAt": { + "type": "number", + "description": "Timestamp for when the secret was created.", + "example": 1609492210000 + }, + "projectId": { + "type": "string", + "description": "The unique identifier of the project which the secret belongs to.", + "example": "prj_2WjyKQmM8ZnGcJsPWMrHRHrE" + }, + "decryptable": { + "type": "boolean", + "description": "Indicates whether the secret value can be decrypted after it has been created.", + "example": true + } + }, + "required": ["created", "name", "uid"], + "type": "object", + "description": "Data representing a secret." + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "404": { + "description": "" + }, + "410": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The name or the unique identifier to which the secret belongs to.", + "in": "path", + "required": true, + "schema": { + "description": "The name or the unique identifier to which the secret belongs to.", + "type": "string", + "example": "sec_RKc5iV0rV3ZSrFrHiruRno7k" + } + }, + { + "name": "decrypt", + "description": "Whether to try to decrypt the value of the secret. Only works if `decryptable` has been set to `true` when the secret was created.", + "in": "query", + "required": false, + "schema": { + "description": "Whether to try to decrypt the value of the secret. Only works if `decryptable` has been set to `true` when the secret was created.", + "type": "string", + "enum": ["true", "false"], + "example": "true" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + }, + "/v2/secrets/{idOrName}": { + "delete": { + "description": "This deletes the user or team’s secret defined in the URL.", + "operationId": "deleteSecret", + "security": [ + { + "bearerToken": [] + } + ], + "summary": "Delete a secret", + "tags": ["secrets"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "uid": { + "type": "string", + "description": "The unique identifier of the deleted secret.", + "example": "sec_XCG7t7AIHuO2SBA8667zNUiM" + }, + "name": { + "type": "string", + "description": "The name of the deleted secret.", + "example": "my-api-key" + }, + "created": { + "type": "number", + "description": "The date when the secret was created.", + "example": "2021-02-10T13:11:49.180Z" + } + }, + "required": ["uid", "name", "created"], + "type": "object" + } + } + } + }, + "400": { + "description": "One of the provided values in the request query is invalid." + }, + "401": { + "description": "" + }, + "403": { + "description": "You do not have permission to access this resource." + }, + "410": { + "description": "" + } + }, + "parameters": [ + { + "name": "idOrName", + "description": "The name or the unique identifier to which the secret belongs to.", + "in": "path", + "required": true, + "schema": { + "description": "The name or the unique identifier to which the secret belongs to.", + "type": "string", + "example": "sec_RKc5iV0rV3ZSrFrHiruRno7k" + } + }, + { + "description": "The Team identifier to perform the request on behalf of.", + "in": "query", + "name": "teamId", + "schema": { + "type": "string" + } + }, + { + "description": "The Team slug to perform the request on behalf of.", + "in": "query", + "name": "slug", + "schema": { + "type": "string" + } + } + ] + } + } + }, + "components": { + "schemas": { + "AccessGroup": { + "properties": { + "name": { + "type": "string", + "description": "The name of this access group.", + "example": "my-access-group" + }, + "createdAt": { + "type": "string", + "description": "Timestamp in milliseconds when the access group was created.", + "example": 1588720733602 + }, + "teamId": { + "type": "string", + "description": "ID of the team that this access group belongs to.", + "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" + }, + "updatedAt": { + "type": "string", + "description": "Timestamp in milliseconds when the access group was last updated.", + "example": 1588720733602 + }, + "accessGroupId": { + "type": "string", + "description": "ID of the access group.", + "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" + }, + "membersCount": { + "type": "number", + "description": "Number of members in the access group.", + "example": 5 + }, + "projectsCount": { + "type": "number", + "description": "Number of projects in the access group.", + "example": 2 + } + }, + "required": ["name", "createdAt", "teamId", "updatedAt", "accessGroupId", "membersCount", "projectsCount"], + "type": "object", + "description": "Represents an Access Group." + }, + "ACLAction": { + "type": "string", + "enum": ["create", "delete", "read", "update", "list"], + "description": "Enum containing the actions that can be performed against a resource. Group operations are included." + }, + "FlagJSONValue": { + "x-fern-ignore": true, + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "items": { + "$ref": "#/components/schemas/FlagJSONValue" + }, + "type": "array", + "description": "TODO: The following types will eventually be exported by a more relevant package." + }, + { + "additionalProperties": { + "$ref": "#/components/schemas/FlagJSONValue" + }, + "type": "object" + } + ] + }, + "Pagination": { + "properties": { + "count": { + "type": "number", + "description": "Amount of items in the current page.", + "example": 20 + }, + "next": { + "nullable": true, + "type": "number", + "description": "Timestamp that must be used to request the next page.", + "example": 1540095775951 + }, + "prev": { + "nullable": true, + "type": "number", + "description": "Timestamp that must be used to request the previous page.", + "example": 1540095775951 + } + }, + "required": ["count", "next", "prev"], + "type": "object", + "description": "This object contains information related to the pagination of the current request, including the necessary parameters to get the next or previous page of data." + }, + "EdgeConfigItemValue": { + "x-fern-ignore": true, + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/components/schemas/EdgeConfigItemValue" + }, + "type": "object" + }, + { + "items": { + "$ref": "#/components/schemas/EdgeConfigItemValue" + }, + "type": "array" + } + ] + }, + "EdgeConfigItem": { + "x-fern-ignore": true, + "properties": { + "key": { + "type": "string" + }, + "value": { + "$ref": "#/components/schemas/EdgeConfigItemValue" + }, + "description": { + "type": "string" + }, + "edgeConfigId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "updatedAt": { + "type": "number" + } + }, + "required": ["key", "value", "edgeConfigId", "createdAt", "updatedAt"], + "type": "object", + "description": "The EdgeConfig." + }, + "EdgeConfigToken": { + "properties": { + "token": { + "type": "string" + }, + "label": { + "type": "string" + }, + "id": { + "type": "string", + "description": "This is not the token itself, but rather an id to identify the token by" + }, + "edgeConfigId": { + "type": "string" + }, + "createdAt": { + "type": "number" + } + }, + "required": ["token", "label", "id", "edgeConfigId", "createdAt"], + "type": "object", + "description": "The EdgeConfig." + }, + "UserEvent": { + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the Event.", + "example": "uev_bfmMjiMnXfnPbT97dGdpJbCN" + }, + "text": { + "type": "string", + "description": "The human-readable text of the Event.", + "example": "You logged in via GitHub" + }, + "entities": { + "items": { + "properties": { + "type": { + "type": "string", + "enum": [ + "author", + "bitbucket_login", + "bold", + "deployment_host", + "dns_record", + "git_link", + "github_login", + "gitlab_login", + "hook_name", + "integration", + "edge-config", + "flag", + "flags-segment", + "flags-settings", + "link", + "project_name", + "scaling_rules", + "env_var_name", + "target", + "store", + "system" + ], + "description": "The type of entity.", + "example": "author" + }, + "start": { + "type": "number", + "description": "The index of where the entity begins within the `text` (inclusive).", + "example": 0 + }, + "end": { + "type": "number", + "description": "The index of where the entity ends within the `text` (non-inclusive).", + "example": 3 + } + }, + "required": ["type", "start", "end"], + "type": "object", + "description": "A list of \"entities\" within the event `text`. Useful for enhancing the displayed text with additional styling and links." + }, + "type": "array", + "description": "A list of \"entities\" within the event `text`. Useful for enhancing the displayed text with additional styling and links." + }, + "createdAt": { + "type": "number", + "description": "Timestamp (in milliseconds) of when the event was generated.", + "example": 1632859321020 + }, + "user": { + "properties": { + "avatar": { + "type": "string" + }, + "email": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "required": ["avatar", "email", "uid", "username"], + "type": "object", + "description": "Metadata for the User who generated the event." + }, + "userId": { + "type": "string", + "description": "The unique identifier of the User who generated the event.", + "example": "zTuNVUXEAvvnNN3IaqinkyMw" + } + }, + "required": ["id", "text", "entities", "createdAt", "userId"], + "type": "object", + "description": "Array of events generated by the User." + }, + "Team": { + "type": "object", + "description": "Data representing a Team." + }, + "TeamLimited": { + "properties": { + "limited": { + "type": "boolean", + "description": "Property indicating that this Team data contains only limited information, due to the authentication token missing privileges to read the full Team data. Re-login with the Team's configured SAML Single Sign-On provider in order to upgrade the authentication token with the necessary privileges." + }, + "saml": { + "properties": { + "connection": { + "properties": { + "type": { + "type": "string", + "description": "The Identity Provider \"type\", for example Okta.", + "example": "OktaSAML" + }, + "status": { + "type": "string", + "description": "Current status of the connection.", + "example": "linked" + }, + "state": { + "type": "string", + "description": "Current state of the connection.", + "example": "active" + }, + "connectedAt": { + "type": "number", + "description": "Timestamp (in milliseconds) of when the configuration was connected.", + "example": 1611796915677 + }, + "lastReceivedWebhookEvent": { + "type": "number", + "description": "Timestamp (in milliseconds) of when the last webhook event was received from WorkOS.", + "example": 1611796915677 + } + }, + "required": ["type", "status", "state", "connectedAt"], + "type": "object", + "description": "Information for the SAML Single Sign-On configuration." + }, + "directory": { + "properties": { + "type": { + "type": "string", + "description": "The Identity Provider \"type\", for example Okta.", + "example": "OktaSAML" + }, + "state": { + "type": "string", + "description": "Current state of the connection.", + "example": "active" + }, + "connectedAt": { + "type": "number", + "description": "Timestamp (in milliseconds) of when the configuration was connected.", + "example": 1611796915677 + }, + "lastReceivedWebhookEvent": { + "type": "number", + "description": "Timestamp (in milliseconds) of when the last webhook event was received from WorkOS.", + "example": 1611796915677 + } + }, + "required": ["type", "state", "connectedAt"], + "type": "object", + "description": "Information for the Directory Sync configuration." + }, + "enforced": { + "type": "boolean", + "description": "When `true`, interactions with the Team **must** be done with an authentication token that has been authenticated with the Team's SAML Single Sign-On provider." + } + }, + "required": ["enforced"], + "type": "object", + "description": "When \"Single Sign-On (SAML)\" is configured, this object contains information that allows the client-side to identify whether or not this Team has SAML enforced." + }, + "id": { + "type": "string", + "description": "The Team's unique identifier.", + "example": "team_nllPyCtREAqxxdyFKbbMDlxd" + }, + "slug": { + "type": "string", + "description": "The Team's slug, which is unique across the Vercel platform.", + "example": "my-team" + }, + "name": { + "nullable": true, + "type": "string", + "description": "Name associated with the Team account, or `null` if none has been provided.", + "example": "My Team" + }, + "avatar": { + "nullable": true, + "type": "string", + "description": "The ID of the file used as avatar for this Team.", + "example": "6eb07268bcfadd309905ffb1579354084c24655c" + }, + "membership": { + "properties": { + "confirmed": { + "type": "boolean" + }, + "confirmedAt": { + "type": "number" + }, + "accessRequestedAt": { + "type": "number" + }, + "role": { + "type": "string", + "enum": ["OWNER", "MEMBER", "DEVELOPER", "BILLING", "VIEWER", "CONTRIBUTOR"] + }, + "teamId": { + "type": "string" + }, + "createdAt": { + "type": "number" + }, + "created": { + "type": "number" + }, + "joinedFrom": { + "properties": { + "origin": { + "type": "string", + "enum": [ + "link", + "saml", + "mail", + "import", + "teams", + "github", + "gitlab", + "bitbucket", + "dsync", + "feedback", + "organization-teams" + ] + }, + "commitId": { + "type": "string" + }, + "repoId": { + "type": "string" + }, + "repoPath": { + "type": "string" + }, + "gitUserId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "gitUserLogin": { + "type": "string" + }, + "ssoUserId": { + "type": "string" + }, + "ssoConnectedAt": { + "type": "number" + }, + "idpUserId": { + "type": "string" + }, + "dsyncUserId": { + "type": "string" + }, + "dsyncConnectedAt": { + "type": "number" + } + }, + "required": ["origin"], + "type": "object" + }, + "uid": { + "type": "string" + } + }, + "type": "object", + "description": "The membership of the authenticated User in relation to the Team." + }, + "created": { + "type": "string", + "description": "Will remain undocumented. Remove in v3 API." + }, + "createdAt": { + "type": "number", + "description": "UNIX timestamp (in milliseconds) when the Team was created.", + "example": 1630748523395 + } + }, + "required": ["limited", "id", "slug", "name", "avatar", "membership", "created", "createdAt"], + "type": "object", + "description": "A limited form of data representing a Team, due to the authentication token missing privileges to read the full Team data." + }, + "AuthUser": { + "properties": { + "createdAt": { + "type": "number", + "description": "UNIX timestamp (in milliseconds) when the User account was created.", + "example": 1630748523395 + }, + "softBlock": { + "nullable": true, + "properties": { + "blockedAt": { + "type": "number" + }, + "reason": { + "type": "string", + "enum": [ + "SUBSCRIPTION_CANCELED", + "SUBSCRIPTION_EXPIRED", + "UNPAID_INVOICE", + "ENTERPRISE_TRIAL_ENDED", + "FAIR_USE_LIMITS_EXCEEDED", + "BLOCKED_FOR_PLATFORM_ABUSE" + ] + }, + "blockedDueToOverageType": { + "type": "string", + "enum": [ + "analyticsUsage", + "artifacts", + "bandwidth", + "blobStores", + "blobTotalAdvancedRequests", + "blobTotalAvgSizeInBytes", + "blobTotalGetResponseObjectSizeInBytes", + "blobTotalSimpleRequests", + "buildMinute", + "dataCacheRead", + "dataCacheRevalidation", + "dataCacheWrite", + "edgeConfigRead", + "edgeConfigWrite", + "edgeFunctionExecutionUnits", + "edgeMiddlewareInvocations", + "edgeRequest", + "edgeRequestAdditionalCpuDuration", + "fastDataTransfer", + "fastOriginTransfer", + "functionDuration", + "functionInvocation", + "logDrainsVolume", + "monitoringMetric", + "postgresComputeTime", + "postgresDataStorage", + "postgresDataTransfer", + "postgresDatabase", + "postgresWrittenData", + "serverlessFunctionExecution", + "sourceImages", + "storageRedisTotalBandwidthInBytes", + "storageRedisTotalCommands", + "storageRedisTotalDailyAvgStorageInBytes", + "storageRedisTotalDatabases", + "wafOwaspExcessBytes", + "wafOwaspRequests", + "wafRateLimitRequest", + "webAnalyticsEvent" + ] + } + }, + "required": ["blockedAt", "reason"], + "type": "object", + "description": "When the User account has been \"soft blocked\", this property will contain the date when the restriction was enacted, and the identifier for why." + }, + "billing": { + "nullable": true, + "properties": { + "currency": { + "type": "string", + "enum": ["usd", "eur"] + }, + "cancelation": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "contract": { + "nullable": true, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "plan": { + "type": "string", + "enum": ["pro", "enterprise", "hobby"] + }, + "planIteration": { + "type": "string" + }, + "platform": { + "type": "string", + "enum": ["stripe", "stripeTestMode"] + }, + "orbCustomerId": { + "type": "string" + }, + "syncedAt": { + "type": "number" + }, + "programType": { + "type": "string", + "enum": ["startup", "agency"] + }, + "trial": { + "nullable": true, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "email": { + "nullable": true, + "type": "string" + }, + "tax": { + "nullable": true, + "properties": { + "type": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": ["type", "id"], + "type": "object" + }, + "language": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "properties": { + "line1": { + "type": "string" + }, + "line2": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "nullable": true, + "type": "string" + }, + "invoiceItems": { + "nullable": true, + "properties": { + "concurrentBuilds": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "webAnalytics": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "pro": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "enterprise": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "analytics": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "developerExperiencePlatform": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "enhancedConcurrentBuilds": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "includedAllocationMiu": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "managedInfrastructureCommitment": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "monitoring": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "passwordProtection": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "previewDeploymentSuffix": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "saml": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "teamSeats": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "vercelMarketplace": { + "properties": { + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "highestQuantity": { + "type": "number", + "description": "The highest quantity in the current period. Used to render the correct enable/disable UI for add-ons." + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "createdAt": { + "type": "number" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month"] + }, + "intervalCount": { + "type": "number", + "enum": [1, 3, 2, 6, 12] + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "maxQuantity": { + "type": "number" + } + }, + "required": ["price", "quantity", "hidden"], + "type": "object", + "description": "Will be used to create an invoice item. The price must be in cents: 2000 for $20." + }, + "analyticsUsage": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "artifacts": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "bandwidth": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobStores": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobTotalAdvancedRequests": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobTotalAvgSizeInBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobTotalGetResponseObjectSizeInBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "blobTotalSimpleRequests": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "buildMinute": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "dataCacheRead": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "dataCacheRevalidation": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "dataCacheWrite": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeConfigRead": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeConfigWrite": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeFunctionExecutionUnits": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeMiddlewareInvocations": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeRequest": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "edgeRequestAdditionalCpuDuration": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "fastDataTransfer": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "fastOriginTransfer": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "functionDuration": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "functionInvocation": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "logDrainsVolume": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "monitoringMetric": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresComputeTime": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresDataStorage": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresDataTransfer": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresDatabase": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "postgresWrittenData": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "serverlessFunctionExecution": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "sourceImages": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "storageRedisTotalBandwidthInBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "storageRedisTotalCommands": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "storageRedisTotalDailyAvgStorageInBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "storageRedisTotalDatabases": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "wafOwaspExcessBytes": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "wafOwaspRequests": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "wafRateLimitRequest": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + }, + "webAnalyticsEvent": { + "properties": { + "matrix": { + "properties": { + "defaultUnitPrice": { + "type": "string" + }, + "dimensionPrices": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "required": ["defaultUnitPrice", "dimensionPrices"], + "type": "object" + }, + "tier": { + "type": "number" + }, + "price": { + "type": "number" + }, + "batch": { + "type": "number" + }, + "threshold": { + "type": "number" + }, + "name": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "disabledAt": { + "nullable": true, + "type": "number" + }, + "enabledAt": { + "nullable": true, + "type": "number" + } + }, + "required": ["price", "batch", "threshold", "hidden"], + "type": "object" + } + }, + "type": "object" + }, + "invoiceSettings": { + "properties": { + "footer": { + "type": "string" + } + }, + "type": "object" + }, + "subscriptions": { + "nullable": true, + "items": { + "properties": { + "id": { + "type": "string" + }, + "trial": { + "nullable": true, + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "period": { + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"], + "type": "object" + }, + "frequency": { + "properties": { + "interval": { + "type": "string", + "enum": ["month", "day", "week", "year"] + }, + "intervalCount": { + "type": "number" + } + }, + "required": ["interval", "intervalCount"], + "type": "object" + }, + "discount": { + "nullable": true, + "properties": { + "id": { + "type": "string" + }, + "coupon": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "amountOff": { + "nullable": true, + "type": "number" + }, + "percentageOff": { + "nullable": true, + "type": "number" + }, + "durationInMonths": { + "nullable": true, + "type": "number" + }, + "duration": { + "type": "string", + "enum": ["forever", "repeating", "once"] + } + }, + "required": ["id", "name", "amountOff", "percentageOff", "durationInMonths", "duration"], + "type": "object" + } + }, + "required": ["id", "coupon"], + "type": "object" + }, + "items": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "priceId": { + "type": "string" + }, + "productId": { + "type": "string" + }, + "amount": { + "type": "number" + }, + "quantity": { + "type": "number" + } + }, + "required": ["id", "priceId", "productId", "amount", "quantity"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["id", "trial", "period", "frequency", "discount", "items"], + "type": "object" + }, + "type": "array" + }, + "controls": { + "nullable": true, + "properties": { + "analyticsSampleRateInPercent": { + "nullable": true, + "type": "number" + }, + "analyticsSpendLimitInDollars": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "purchaseOrder": { + "nullable": true, + "type": "string" + }, + "status": { + "type": "string", + "enum": ["active", "trialing", "overdue", "expired", "canceled"] + }, + "pricingExperiment": { + "type": "string", + "enum": ["august-2022"] + }, + "orbMigrationScheduledAt": { + "nullable": true, + "type": "number" + }, + "forceOrbMigration": { + "nullable": true, + "type": "boolean" + }, + "awsMarketplace": { + "nullable": true, + "properties": { + "productCode": { + "type": "string" + }, + "offerId": { + "type": "string" + }, + "customerId": { + "type": "string" + } + }, + "required": ["productCode", "customerId"], + "type": "object" + }, + "reseller": { + "type": "string" + } + }, + "required": ["period", "plan"], + "type": "object", + "description": "An object containing billing infomation associated with the User account." + }, + "resourceConfig": { + "properties": { + "blobStores": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "nodeType": { + "type": "string", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "concurrentBuilds": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "awsAccountType": { + "type": "string", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "awsAccountIds": { + "items": { + "type": "string" + }, + "type": "array", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "cfZoneName": { + "type": "string", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "imageOptimizationType": { + "type": "string", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "edgeConfigs": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "edgeConfigSize": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "edgeFunctionMaxSizeBytes": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "edgeFunctionExecutionTimeoutMs": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "serverlessFunctionDefaultMaxExecutionTime": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "kvDatabases": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "postgresDatabases": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "integrationStores": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "cronJobs": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "cronJobsPerProject": { + "type": "number", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + } + }, + "type": "object", + "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." + }, + "stagingPrefix": { + "type": "string", + "description": "Prefix that will be used in the URL of \"Preview\" deployments created by the User account." + }, + "activeDashboardViews": { + "items": { + "properties": { + "scopeId": { + "type": "string" + }, + "viewPreference": { + "type": "string", + "enum": ["list", "cards"] + }, + "favoritesViewPreference": { + "type": "string", + "enum": ["open", "closed"] + }, + "recentsViewPreference": { + "type": "string", + "enum": ["open", "closed"] + } + }, + "required": ["scopeId"], + "type": "object", + "description": "set of dashboard view preferences (cards or list) per scopeId" + }, + "type": "array", + "description": "set of dashboard view preferences (cards or list) per scopeId" + }, + "importFlowGitNamespace": { + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "importFlowGitNamespaceId": { + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "importFlowGitProvider": { + "type": "string", + "enum": ["github", "gitlab", "bitbucket"] + }, + "preferredScopesAndGitNamespaces": { + "items": { + "properties": { + "scopeId": { + "type": "string" + }, + "gitNamespaceId": { + "nullable": true, + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + } + }, + "required": ["scopeId", "gitNamespaceId"], + "type": "object" + }, + "type": "array" + }, + "dismissedToasts": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "dismissals": { + "items": { + "properties": { + "scopeId": { + "type": "string" + }, + "createdAt": { + "type": "number" + } + }, + "required": ["scopeId", "createdAt"], + "type": "object" + }, + "type": "array" + } + }, + "required": ["name", "dismissals"], + "type": "object", + "description": "A record of when, under a certain scopeId, a toast was dismissed" + }, + "type": "array", + "description": "A record of when, under a certain scopeId, a toast was dismissed" + }, + "favoriteProjectsAndSpaces": { + "items": { + "oneOf": [ + { + "properties": { + "projectId": { + "type": "string" + }, + "scopeSlug": { + "type": "string" + }, + "scopeId": { + "type": "string" + } + }, + "required": ["projectId", "scopeSlug", "scopeId"], + "type": "object", + "description": "A list of projects and spaces across teams that a user has marked as a favorite." + }, + { + "properties": { + "spaceId": { + "type": "string" + }, + "scopeSlug": { + "type": "string" + }, + "scopeId": { + "type": "string" + } + }, + "required": ["spaceId", "scopeSlug", "scopeId"], + "type": "object", + "description": "A list of projects and spaces across teams that a user has marked as a favorite." + } + ] + }, + "type": "array", + "description": "A list of projects and spaces across teams that a user has marked as a favorite." + }, + "hasTrialAvailable": { + "type": "boolean", + "description": "Whether the user has a trial available for a paid plan subscription." + }, + "remoteCaching": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object", + "description": "remote caching settings" + }, + "dataCache": { + "properties": { + "excessBillingEnabled": { + "type": "boolean" + } + }, + "type": "object", + "description": "data cache settings" + }, + "featureBlocks": { + "properties": { + "webAnalytics": { + "properties": { + "blockedFrom": { + "type": "number" + }, + "blockedUntil": { + "type": "number" + }, + "isCurrentlyBlocked": { + "type": "boolean" + } + }, + "required": ["isCurrentlyBlocked"], + "type": "object" + } + }, + "type": "object", + "description": "Feature blocks for the user" + }, + "northstarMigration": { + "properties": { + "teamId": { + "type": "string", + "description": "The ID of the team we created for this user." + }, + "projects": { + "type": "number", + "description": "The number of projects migrated for this user." + }, + "stores": { + "type": "number", + "description": "The number of stores migrated for this user." + }, + "integrationConfigurations": { + "type": "number", + "description": "The number of integration configurations migrated for this user." + }, + "integrationClients": { + "type": "number", + "description": "The number of integration clients migrated for this user." + }, + "startTime": { + "type": "number", + "description": "The migration start time timestamp for this user." + }, + "endTime": { + "type": "number", + "description": "The migration end time timestamp for this user." + } + }, + "required": [ + "teamId", + "projects", + "stores", + "integrationConfigurations", + "integrationClients", + "startTime", + "endTime" + ], + "type": "object" + }, + "id": { + "type": "string", + "description": "The User's unique identifier.", + "example": "AEIIDYVk59zbFF2Sxfyxxmua" + }, + "email": { + "type": "string", + "description": "Email address associated with the User account.", + "example": "me@example.com" + }, + "name": { + "nullable": true, + "type": "string", + "description": "Name associated with the User account, or `null` if none has been provided.", + "example": "John Doe" + }, + "username": { + "type": "string", + "description": "Unique username associated with the User account.", + "example": "jdoe" + }, + "avatar": { + "nullable": true, + "type": "string", + "description": "SHA1 hash of the avatar for the User account. Can be used in conjuction with the ... endpoint to retrieve the avatar image.", + "example": "22cb30c85ff45ac4c72de8981500006b28114aa1" + }, + "defaultTeamId": { + "nullable": true, + "type": "string", + "description": "The user's default team. Only applies if the user's `version` is `'northstar'`." + }, + "version": { + "nullable": true, + "type": "string", + "enum": ["northstar"], + "description": "The user's version. Will either be unset or `northstar`." + } + }, + "required": [ + "createdAt", + "softBlock", + "billing", + "resourceConfig", + "stagingPrefix", + "hasTrialAvailable", + "id", + "email", + "name", + "username", + "avatar", + "defaultTeamId", + "version" + ], + "type": "object", + "description": "Data for the currently authenticated User." + }, + "AuthUserLimited": { + "properties": { + "limited": { + "type": "boolean", + "description": "Property indicating that this User data contains only limited information, due to the authentication token missing privileges to read the full User data. Re-login with email, GitHub, GitLab or Bitbucket in order to upgrade the authentication token with the necessary privileges." + }, + "id": { + "type": "string", + "description": "The User's unique identifier.", + "example": "AEIIDYVk59zbFF2Sxfyxxmua" + }, + "email": { + "type": "string", + "description": "Email address associated with the User account.", + "example": "me@example.com" + }, + "name": { + "nullable": true, + "type": "string", + "description": "Name associated with the User account, or `null` if none has been provided.", + "example": "John Doe" + }, + "username": { + "type": "string", + "description": "Unique username associated with the User account.", + "example": "jdoe" + }, + "avatar": { + "nullable": true, + "type": "string", + "description": "SHA1 hash of the avatar for the User account. Can be used in conjuction with the ... endpoint to retrieve the avatar image.", + "example": "22cb30c85ff45ac4c72de8981500006b28114aa1" + }, + "defaultTeamId": { + "nullable": true, + "type": "string", + "description": "The user's default team. Only applies if the user's `version` is `'northstar'`." + }, + "version": { + "nullable": true, + "type": "string", + "enum": ["northstar"], + "description": "The user's version. Will either be unset or `northstar`." + } + }, + "required": ["limited", "id", "email", "name", "username", "avatar", "defaultTeamId", "version"], + "type": "object", + "description": "A limited form of data for the currently authenticated User, due to the authentication token missing privileges to read the full User data." + }, + "AuthToken": { + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the token.", + "example": "5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391" + }, + "name": { + "type": "string", + "description": "The human-readable name of the token." + }, + "type": { + "type": "string", + "description": "The type of the token.", + "example": "oauth2-token" + }, + "origin": { + "type": "string", + "description": "The origin of how the token was created.", + "example": "github" + }, + "scopes": { + "items": { + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "enum": ["user"] + }, + "origin": { + "type": "string", + "enum": ["saml", "github", "gitlab", "bitbucket", "email", "manual", "passkey"] + }, + "createdAt": { + "type": "number" + }, + "expiresAt": { + "type": "number" + } + }, + "required": ["type", "origin", "createdAt"], + "type": "object", + "description": "The access scopes granted to the token." + }, + { + "properties": { + "type": { + "type": "string", + "enum": ["team"] + }, + "teamId": { + "type": "string" + }, + "origin": { + "type": "string", + "enum": ["saml", "github", "gitlab", "bitbucket", "email", "manual", "passkey"] + }, + "createdAt": { + "type": "number" + }, + "expiresAt": { + "type": "number" + } + }, + "required": ["type", "teamId", "origin", "createdAt"], + "type": "object", + "description": "The access scopes granted to the token." + } + ] + }, + "type": "array", + "description": "The access scopes granted to the token." + }, + "expiresAt": { + "type": "number", + "description": "Timestamp (in milliseconds) of when the token expires.", + "example": 1632816536002 + }, + "activeAt": { + "type": "number", + "description": "Timestamp (in milliseconds) of when the token was most recently used.", + "example": 1632816536002 + }, + "createdAt": { + "type": "number", + "description": "Timestamp (in milliseconds) of when the token was created.", + "example": 1632816536002 + } + }, + "required": ["id", "name", "type", "activeAt", "createdAt"], + "type": "object", + "description": "Authentication token metadata." + }, + "FileTree": { + "properties": { + "name": { + "type": "string", + "description": "The name of the file tree entry", + "example": "my-file.json" + }, + "type": { + "type": "string", + "enum": ["directory", "file", "symlink", "lambda", "middleware", "invalid"], + "description": "String indicating the type of file tree entry.", + "example": "file" + }, + "uid": { + "type": "string", + "description": "The unique identifier of the file (only valid for the `file` type)", + "example": "2d4aad419917f15b1146e9e03ddc9bb31747e4d0" + }, + "children": { + "items": { + "$ref": "#/components/schemas/FileTree" + }, + "type": "array", + "description": "The list of children files of the directory (only valid for the `directory` type)" + }, + "contentType": { + "type": "string", + "description": "The content-type of the file (only valid for the `file` type)", + "example": "application/json" + }, + "mode": { + "type": "number", + "description": "The file \"mode\" indicating file type and permissions." + }, + "symlink": { + "type": "string", + "description": "Not currently used. See `file-list-to-tree.ts`." + } + }, + "required": ["name", "type", "mode"], + "type": "object", + "description": "A deployment file tree entry" + } + }, + "securitySchemes": { + "bearerToken": { + "type": "http", + "description": "Default authentication mechanism", + "scheme": "bearer" + }, + "oauth2": { + "type": "oauth2", + "flows": { + "authorizationCode": { + "authorizationUrl": "https://api.vercel.com/oauth/authorize", + "tokenUrl": "https://api.vercel.com/oauth/access_token", + "scopes": {} + } + } + } + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 203a064661..543f801eeb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -300,8 +300,8 @@ importers: specifier: 0.0.5 version: 0.0.5 '@fern-fern/vercel': - specifier: 0.0.4607 - version: 0.0.4607 + specifier: 0.0.4650 + version: 0.0.4650 ts-essentials: specifier: ^10.0.1 version: 10.0.1(typescript@4.9.5) @@ -4006,8 +4006,8 @@ packages: '@fern-fern/generators-sdk@0.109.0-21be2e5be': resolution: {integrity: sha512-McFSFWNqfZBC7E0gUQfhj45tTl8Eu+6bahqD6FHf0fQm+TXI/oQf8mhPJw/TVqzAGxP/2kOzSYNqkDg1DwkIFQ==} - '@fern-fern/vercel@0.0.4607': - resolution: {integrity: sha512-cATse2PXRMTe6O+FHdVtN+/33UwT3YHjIanfnEwlJQCG/3r7a3/CQct5LvIa+81UOwsCEPReBfJjMt//9jlatw==} + '@fern-fern/vercel@0.0.4650': + resolution: {integrity: sha512-gsbr84KmAIEWCxjMAZ0f57NrthEp1keAApEOK37r5Q/haATb3zR2JLM4FEeVsMclwF3u2N05eODyWBkSQAcaUw==} '@fern-fern/vercel@0.0.7': resolution: {integrity: sha512-k3ioiJifaX1WYJzbEHHdtg/aIfBVTz5eMOtHoyvl7+qY/IdmYczDtpa+NSYzdfxOM5uAAoVxTGWCvAlagVv+Fg==} @@ -18206,14 +18206,12 @@ snapshots: transitivePeerDependencies: - encoding - '@fern-fern/vercel@0.0.4607': + '@fern-fern/vercel@0.0.4650': dependencies: form-data: 4.0.0 - formdata-node: 6.0.3 js-base64: 3.7.2 node-fetch: 2.7.0 qs: 6.11.2 - readable-stream: 4.5.2 url-join: 4.0.1 transitivePeerDependencies: - encoding